0
Posted on Monday, September 19, 2016 by 醉·醉·鱼 and labeled under ,
Kalen最近参加了24 hours of PASS,主题是《Locking, Blocking, Versions: Concurrency for Maximum Performance》。但实际上只讲了locking的一些基本概念,还有很多没有讲到。不过作为回顾,也是不错的。






  1. 在SQL SERVER,最基本的两种lock是shared lock(S)和exclusive lock(X)
  2. UPDATE lock是一个混合模式,出现在UPDATE/DELETE的查询过程中,可以和shared lock兼容,但是与其他U和X锁不兼容。
  3. 对数据进行修改的时候,U锁会升级成为X锁
  4. 一般情况下,我们讨论的lock是TRANSACTION lock,但除此之外,还有SHARED_TRANSACTION_WORKSPACE (Resource = DATABASE)、
    EXCLUSIVE_TRANSACTION_WORKSPACE (Resource = DATABASE)、游标锁、Session Locks (Resource = DATABASE)。
  5. 对于lock的粒度,可以是ROW(RID or KEY)、PAGE、TABLE、PARTITION、EXTENT、DATABASE
  6. SQL SERVER会在多层上放置lock。比如,修改一条记录,会在TABLE 和 PAGE上方式IX锁,在ROW上放置X锁
  7. sys.dm_tran_locks可以用来查看当前的所有lock
  8. ROW锁会升级为更高级别的锁。遇到过一个案例就是锁升级为page锁,进而导致deadlock。
0
Responses to ... 《Locking, Blocking, Versions: Concurrency for Maximum Performance》 by Kalen Dalency

Post a Comment