`
jeffen2006
  • 浏览: 255373 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数据库事务4

阅读更多

 为了操作方便,数据库为我们设置了4种事务隔离级别,不同级别数据库有不同的加锁策略,对我们来说是透明的。我们根据实际情况,权衡并发性和隔离性进行选择。


隔离级别 是否出现第一类丢失更新 是否出现脏读 是否出现虚读 是否出现不可重复读 是否出现第二类丢失更新

Serializable
串行化

 否  否  否  否  否
RepeatableRead
可重复读
 否  否  是  否  否
ReadCommited
读已提交数据
 否  否  是  是  是
ReadUcommited
读未提交数据
  否  是  是  是  是

 

Serializable完全看不到其他事务所作的更新。

RepeatableRead可以看到其他事务已经提交的新插入记录,但是不能看到其他事务对已有记录的更新。

ReadCommited可以看到其他事务已经提交的新插入记录,也能看到其他事务对已有记录的更新。

ReadUcommited可以看到其他事务未提交的新插入记录,也能看到其他事务对已有记录的未提交更新。

一般数据库默认ReadCommited,已经可以满足大部分需要了。能够避免脏读和有较好的并发性,但是也有一些并发的问题,可以通过应用程序的悲观锁和乐观锁来规避。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics