0
点赞
收藏
分享

微信扫一扫

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)

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

锁与隔离级别

SQLServer锁和事务隔离级别_sqlserver

SQLServer锁和事务隔离级别_共享锁_02

SQLServer锁和事务隔离级别_隔离级别_03


在SELECT语句中使用XLOCK并不能阻止读。这是因为SQL SERVER在读提交隔离级别上有一种特殊的优化,即检查行是否已被修改,如果未被修改则忽略XLOCK。因为在读提交隔离级别上这确实是可以接受的。

http://support.microsoft.com/kb/324417


举报

相关推荐

0 条评论