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