一尘不染

什么是锁升级?

sql-server

什么是锁升级?


阅读 118

收藏
2022-10-30

共1个答案

一尘不染

锁可以存在于行、页、分区或整个表和索引上。当事务正在进行时,事务持有的锁会占用资源。

锁升级是系统将多个锁合并为更高级别的锁(例如将多个行锁合并到一个分区或整个表),通常用于恢复大量细粒度锁占用的资源。

它会自动执行此操作,尽管您可以在表上设置标志(参见ALTER TABLE文档)来控制该特定表上的锁定升级策略。

特别是在旧版本的 Sybase 和 SQL Server 上,当您有两个进程同时将单独的行写入同一页面时,过早或过度急切的锁升级曾经是一个问题。如果你回溯到足够远(IIRC SQL Server 6.5),SQL Server 没有行锁定,但只能锁定表或页面。

如果发生这种情况,您可能会在同一页面中插入记录之间发生争用;通常您会在表上放置一个聚集索引,以便新插入到不同的页面。

2022-10-30