【问题标题】:How are SQL Server Intent-locks work?SQL Server 意向锁是如何工作的?
【发布时间】:2018-05-02 11:20:26
【问题描述】:
我读过一些关于意图锁的文章,其中有很多意图共享(IS)、意图独占(IX)、与意图独占(SIX)共享、意图更新(IU)、意图更新共享( SIU),更新意图独占(UIX)。有时我在锁统计信息中发现了这些锁,但我很难识别每个锁,因为有时会出现许多性能问题
意图锁实际用于什么?这些意图锁中的每一个如何在数据库并发中相互锁定?
谢谢
【问题讨论】:
标签:
sql-server
concurrency
locking
database-concurrency
【解决方案2】:
我也得到了一些关于这件事的更多信息。
意向共享 (IS) 使用这种锁定模式,SQL Server 可以保护锁层次结构中较低的某些资源上请求或获取的共享 (S) 锁。
意向排他 (IX) 此锁定模式是意向共享 (IS) 锁的超集,它不仅保护对层次结构较低资源的锁定,还保护请求或获得的排他 (X)锁定层次结构中较低的一些资源。
与意向排他共享 (SIX) 此锁定模式可保护层次结构中所有较低资源上请求或获取的共享 (S) 锁以及层次结构较低部分资源上的意向排他 (IX) 锁.一个资源一次只能存在一个共享的意向排他 (SIX) 锁,以防止其他事务修改它。但是,较低级别的资源可以具有意图共享 (IS) 锁,并且可以被其他事务读取。
意图更新 (IU) SQL Server 仅在页面资源上使用此锁定模式来保护所有较低级别资源上请求或获取的更新 (U) 锁定并将其转换为意图独占 (IX ) 如果事务执行更新操作,则锁定。
共享意图更新 (SIU) 这种锁定模式是共享 (S) 和意图更新 (IU) 锁的组合,当事务分别获取每个锁但同时持有它们时发生.
更新意图独占 (UIX) 此锁定模式由更新 (U) 和意图独占 (IX) 锁的组合产生,事务单独获取但同时持有。