首页 > 解决方案 > SQL Server 意图锁是如何工作的?

问题描述

我读过一些关于意图锁的文章,有很多意图锁,它们是意图共享 (IS)、意图独占 (IX)、与意图独占共享 (SIX)、意图更新 (IU)、共享意图更新 (SIU)、更新意图独占 (UIX)。有时我在锁统计信息中发现了这些锁,但我很难识别每个锁,因为有时会出现许多性能问题

意图锁实际用于什么?这些意图锁中的每一个如何在数据库并发中相互锁定?

谢谢你

标签: sql-serverconcurrencylockingdatabase-concurrency

解决方案


我也得到了一些关于这件事的更多信息。

意向共享 (IS)使用这种锁定模式,SQL Server 可以保护在锁定层次结构中较低的某些资源上请求或获取的共享 (S) 锁定。

意向排他 (IX)此锁定模式是意向共享 (IS) 锁的超集,它不仅保护对层次结构较低资源的锁定,而且还保护对层次较低的某些资源的请求或获取的排他 (X) 锁。

与意图独占 (SIX) 共享此锁定模式保护对层次结构较低的所有资源的请求或获取的共享 (S) 锁以及对层次结构较低的某些资源的意图独占 (IX) 锁定。一个资源一次只能存在一个共享的意向排他 (SIX) 锁,以防止其他事务修改它。但是,较低级别的资源可以具有意向共享 (IS) 锁,并且可以被其他事务读取。

意向更新 (IU) SQL Server 在页面资源上使用此锁定模式仅用于保护所有较低级别资源上请求或获取的更新 (U) 锁,并在事务执行更新操作时将其转换为意向排他 (IX) 锁。

共享意图更新 (SIU)此锁定模式是共享 (S) 和意图更新 (IU) 锁的组合,当事务分别获取每个锁定但同时持有它们时发生。

更新意向排他 (UIX)此锁定模式由更新 (U) 和意向排他 (IX) 锁的组合产生,事务单独获取但同时持有。


推荐阅读