SQLserver锁和事务隔离级别

隔离级别

隔离级别 脏读 不可重复读 幻象 说明
未提交读(read uncommitted) 如果其他事务更新,不管是否提交,立即执行
提交读(read committed默认) 读取提交过的数据。如果其他事务更新没提交,则等待
可重复读(repeatable read) 查询期间,不允许其他事务update
可串行读(serializable) 查询期间,不允许其他事务insert或delete

请求模式 IS S U IX SIX X
意向共享(IS)
共享(S)
更新(U)
意向排它(IX)
与意向排它共享(SIX)
排它(X)


共享锁:了共享select),如果存在事(一个或多个)表中数据(数据的多少,视的粒度而定)的共享,不允许对定的数据行更新(update)

排他锁:只能有一个,其他的事就不能定的数据取共享和排他(即排他与共享不能兼容,更多信息请查兼容性),在此特别强调一下 定的数据。


锁与隔离级别
  1

  ①     READUNCOMMITTED:不

  ②     READCOMMITTED出共享,保持到

  ③     REPEATABLEREAD出共享,保持到事务结

  ④     SERIALIZABLE出共享,保持到事务结

  2

  ①     NOLOCK:不。等同于READUNCOMMITTED

  ②     HOLDLOCK出共享,保持到事务结束。等同于SERIALIZABLE

  ③     XLOCK出排他,保持到事务结束。

  ④     UPDLOCK出更新,保持到事务结束。(更新:不阻塞的事物,允许别的事物数据(即更新可与共享兼容),但他确保自上次取数据后数据没有被更新

  ⑤     READPAST出共享,但跳定行,它不会被阻塞。适用条件:提交隔离级别,行select句中。

  3

  ①     ROWLOCK:行

  ②     PAGLOCK页级

  ③     TABLOCK:表

  ④     TABLOCKX:表排他

 

posted @ 2011-08-17 19:54  Robert-Fang  阅读(3678)  评论(0编辑  收藏  举报