更新锁如何在数据库中工作。

时间:2016-11-02 12:56:59

标签: sql-server transactions locking

当我阅读有关sql server database 2008 https://technet.microsoft.com/en-us/library/ms175519(v=sql.105).aspx的文档时,我知道有三种类型的锁定模式:

  • 互斥(X)
  • 共享(S)
  • 更新(U)

我理解独占锁和共享锁是如何工作的。唯一的问题是在以下情况下Update(U)锁如何工作:

  • 交易 T1 开始并 rowA
  • 共享锁
  • 交易 T2 开始并 rowA
  • 更新锁定
  • 交易 T2 将更新 rowA ,因此请求将锁定从更新模式升级到独占模式。目前, T1 尚未在行A上发布共享锁
  • ???

问题是数据库在这种情况下会如何表现?因为我们知道在另一个事务持有资源上的共享锁时无法获取独占锁。

数据库是否会终止 T1 并升级 T2 的锁定? 或者它会等到 T1 释放共享锁?

0 个答案:

没有答案