首页 > 代码库 > 什么是锁升级

什么是锁升级

    常常听到DBA在谈论各种数据库时,都会提到一个词语:锁升级。
    那么,什么是锁升级呢?它的作用又是什么呢?在什么情况下会出现锁升级呢?
    锁升级,就是将众多细粒度锁转换为较少的粗粒度的锁以削减系统开销的进程。假如行锁是有开销的,那对1行加锁可能没问题,但对1万行加锁,那对系统开销就很大了,此时,数据库就会将其升级为表锁,以减少开销。

 
    在网上摘抄的一个例子,当事务从表中请求行时,SQL Server 自动获取受影响的行上的锁,并在包含这些行的页和表或者索引上放置更高级别的意向锁。当事务控制的锁数量超过了它的极限时,SQL Server 会试图将表上的意向锁更改为更强的锁(例如,将意向排它 (IX) 锁更改为排它 (X) 锁)。获取更强的锁后,表事务持有的所有页级锁和行级锁都被释放,从而削减锁的开销。

什么是锁升级