加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer锁和事务隔离级别

发布时间:2020-12-12 14:33:03 所属栏目:MsSql教程 来源:网络整理
导读:转自:http://www.cnblogs.com/fangrobert/archive/2011/08/17/2136798.html 隔离隔离 级别 脏读 不可重复读 幻象 说明 未提交读(read uncommitted) 是 是 是 如果其他事务更新,不管是否提交,立即执行 提交读(read committed默认) 否 是 是 读取提交过的数
隔离隔离级别脏读不可重复读幻象说明 未提交读(read uncommitted) 是 是 是 如果其他事务更新,不管是否提交,立即执行 提交读(read committed默认) 否 是 是 读取提交过的数据。如果其他事务更新没提交,则等待 可重复读(repeatable read) 否 否 是 查询期间,不允许其他事务update 可串行读(serializable) 否 否 否 查询期间,不允许其他事务insert或delete 请求模式ISSUIXSIX 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:表排他


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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

转自:http://www.cnblogs.com/fangrobert/archive/2011/08/17/2136798.html


    推荐文章
      热点阅读