C#事务处理(四)之隔离级别

ACID中的字母I(Isolation,隔离)并不是完全需要。处于性能的原因,可以降低隔离要求,但必须了解隔离级别带来的问题。
如果不完全隔离事务外部的作用域,就可能出现以下问题。

  • 脏读—在脏读操作中,另一个事务可以读取在一个事务中改变的记录。因为一个事务中的改变的记录可能回滚到最初的状态,所以从另一个事务中读取这个临时状态就称为“脏读”–数据并没提交。通过锁定要改变的记录,就可以避免这个问题。
  • 不可重复读–当数据在事务中读取,而该事务运行的同时,另一个事务修改了相同的记录。此时,就会出现了不可重复操作。如果该记录在事务中读取多次,结果就会不同,—不可重复。锁定读取的记录,即可避免。
  • 幻读–当读取一个范围内的数据,例如,使用where子句读取时,就会出现幻读问题。在一个事务中读取这些记录时,另一个事务可以添加一个属于该范围的新记录。用相同的where子句再次读取这些记录,会返回不同的记录。幻读一般出现在更新一个范围的记录时。
    在定义隔离要求时,可以设置隔离级别。隔离级别IsolationLevel枚举定义,在创建事务时,会配置该枚举。

这里写图片描述

事务隔离级别可能导致的问题

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值