当前位置:编程学习 > asp >>

.NET中事务的隔离级别

    在之前的学习以及练习中,我们经常用到的是数据库的事务,而.net语言中使用事务还是第一次尝试(水平有点凹)。关于.NET中事务的使用以及原理,相信有数据库中事务的基础,这里大家都很好理解,这里我重点总结一下.NET中事务的隔离级别。
        所谓隔离级别,我的看法是这样的,就是在执行事务期间,事务所涉及到的数据的读写权限的控制机制。
        众所周知,数据的读取到写入是由一定时间间隔的,而这段时间内,很有可能有其他用户已经将数据做了修改。为了防止这种情况发生,我们引入了锁的机制。凡事都有利弊,锁保证了我们的数据不会别其他人修改,可是同时锁也给我们带来了麻烦,就是一旦加锁,其他人想要修改的时候只能排队等着锁的释放,这样,在多用户或者是超多用户的时候好像就不合适了。
        遇到了问题,遇到了矛盾,而且他们是鱼与熊掌的关系,那么只能是做出权衡了。
        今天说的隔离级,说的就是指定连接的事务锁定行为。
        IsolationLevel ,这个枚举类型,定义了7种级别,可以说已经够我们大部分的使用了。
                Chaos:无法改写隔离级别更高的事务中的挂起的更改。
                ReadCommitted:在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的                                读取或幻像数据。
                ReadUncommitted:可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。
                RepeatableRead:在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以                                有幻像行。
                Serializable:在 dataset上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。
                Snapshot:通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从                                 一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。 
                Unspecified:正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。 当使用 OdbcTransaction 时,如果不设                                  置IsolationLevel 或者将 IsolationLevel 设置为 Unspecied,事务将根据基础 ODBC 驱动程序的默认隔离级别来执行。
 
        我们平时很少去专门设置它,系统默认的是ReadCommitted,而这也是我们常用的一种。在此,我们只是简单了解就行,知道有这么回事,当某些特殊情况需要特殊处理的时候,我们有应对的策略。
补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,