共享锁的概念及使用场景
共享锁(S锁):用于读取资源所加的锁。
拥有共享锁的资源不能被修改。
共享锁默认情况下是读取了资源马上被释放
共享锁操作案例:
未提交未释放锁
SQL
--设置了重复读的隔离级别,默认情况下共享锁立刻释放,为了演示保持住S锁
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
SELECT TOP 1 *
FROM mum_baby
--查询当前数据库所利用的锁
SELECT resource_type,
request_mode,
Count(*)
FROM sys.dm_tran_locks
WHERE request_session_id = @@SPID
GROUP BY resource_type,
request_mode
导致阻塞
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-24-1024x135.png)
意向锁的概念及使用场景
意向锁:用于建立锁的层次结构。意向锁包含三种类型:意向共享锁(IS)、意向排它锁(IX)和意向排它共享锁(SIX)
意向锁的主要目的是优化锁冲突检查的性能。
当一个事务想要锁定一个表时,它可以首先检查表级别的意向锁,而不是检查表中的每一行来确定是否有冲突。这大大减少了检查的复杂性并提高了性能。