码迷,mamicode.com
首页 > 数据库 > 详细

数据库事务的隔离级别

时间:2015-02-16 18:06:14      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

SQL92标准规定,数据库事务有4个隔离级别,他们为了防止以下现象:

  • 脏读取(Dirty read):一个事务读取了另一事务未提交的数据
    • A事务修改一笔数据,但仍未提交
    • B事务查询数据,却能读取该笔未提交的数据(如果A事务回滚,则此笔数据为脏数据,所以为脏读取)
  • 不可重复读取(Nonrepeatable read):
    • A事务读取了一批数据
    • B事务操作或删除该批数据
    • A事务再次读取,发现该批数据被修改或删除了
  • 不存在读取(Phantom read):
    • A事务根据条件查询了一批数据
    • B事务插入数据
    • A事务重新执行相同条件的查询,结果集并不一致

       

而数据库事务的隔离级别为:

隔离级别 脏读 不可重复读 不存在读
未提交读 Y Y Y
已提交读 N Y Y
可重复读 N N Y
串行化 N N N

 

本人认为,基于数据库事务的原子性、一致性,脏读取可谓是重中之重,此点很容易让人理解。

不可重复读取、不存在读取,初看之下仿佛一致。实际上不可重复读取,数据库只需要保证被操作的数据的隔离性;而不存在读取,数据库则需要保证整个表的数据的隔离性。所以他们的级别不同。

数据库事务的隔离级别

标签:

原文地址:http://www.cnblogs.com/nick-huang/p/4287180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!