SQL Server 数据库的并发控制原理-查询所利用的锁

共享锁的概念及使用场景

共享锁(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

导致阻塞

意向锁的概念及使用场景

意向锁:用于建立锁的层次结构。意向锁包含三种类型:意向共享锁(IS)、意向排它锁(IX)和意向排它共享锁(SIX)

意向锁的主要目的是优化锁冲突检查的性能。

当一个事务想要锁定一个表时,它可以首先检查表级别的意向锁,而不是检查表中的每一行来确定是否有冲突。这大大减少了检查的复杂性并提高了性能。

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部