一.名词解释
在步入正题前,先介绍几个概念,以便更好的理解事务隔离级别。
1.数据库隔离级别
是指在数据库操作中,为了有效保证并发读取数据的正确性提出的。
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。
2.事务隔离级别(IsolationLevel)
事务的特性(ACID)
1)、原子性(Atomicity)
事物是数据库的逻辑工作单位,事务中的诸多操作要么全做要么全不做
2)、一致性(Consistency)
事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态
3)、隔离性(Isolation)
一个数据的执行不能被其他事务干扰
4)、持续性/永久性(Durability)
一个事务一旦提交,它对数据库中的数据改变是永久性的
隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好.
3.Ado.net提供的事务隔离级别
System.Data.IsolationLevel共定义了7种级别。
public enum IsolationLevel
{
Chaos = 16,
ReadUncommitt