经常听到DBA在谈论各种数据库时。都会提到一个词语:锁升级。
那么。什么是锁升级呢?它的作用又是什么呢?在什么情况下会出现锁升级呢?
锁升级,就是
将众多细粒度锁转换为较少的粗粒度的锁以削减系统开销的进程。假如行锁是有开销的,那对1行加锁可能没问题,但对1万行加锁。那对系统开销就非常大了,此时。数据库就会将其升级为表锁,以降低开销。
在网上摘抄的一个样例,当事务从表中请求行时,SQL
Server 自己主动获取受影响的行上的锁,并在包括这些行的页和表或者索引上放置更高级别的意向锁。当
事务控制的锁数量超过了它的极限时。SQL
Server 会试图将表上的意向锁更改为更强的锁(比如,将意向排它 (IX)
锁更改为排它 (X) 锁)。获取更强的锁后,表事务持有的全部页级锁和行级锁都被释放,从而削减锁的开销。