论坛首页 综合技术论坛

SQL的隔离级别

浏览 1700 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-05  

数据库的隔离级别主要是为读操作定义保护级别的;对于修改写操作,无论哪种隔离级别都可以保证写操作的正确执行。SQL标准为三种副作用:

  1. Dirty reads: 事务T2提交了数据,事务T1这时读取了T2提交的数据,T2发生异常rollback,那么T1读取的数据就是有问题的数据,是dirty read。
  2. unrepeatable reads:事务T1读取数据以后,事务T2修改了T1读取的数据,事务T1以同样的查询从数据库读取数据,就会发现和上一次读取的不一致,所以称为unrepeatable reads。
  3. phantom reads:事务T1查询数据库并返回数据,事务T2插入了新的数据,事务T1一同样的查询读取数据库数据,发现会多出一些数据,所以称为phantom reads。
设置合适的数据库事务隔离级别可以防止上面问题的发生,但是隔离级别越高并发性越差一般会设置为read-committed


Dirty Reads Unrepeatable Reads Phantom  Reads

Read Uncommited

Y

Y

Y

Read commited

N

Y

Y

Repeatable Read

N

N

Y

Serializable

N

N

N

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics