排它锁的概念及阻塞形式
排它锁(X锁):可以防止并发事务对资源进行访问。使用排它锁时,任何其他事务都无法修改数据
排它锁操作案例:
SQL
BEGIN TRAN
UPDATE mum_baby SET user_id = '15610' WHERE gender = 1
--查询当前数据库所利用的锁
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/图片-23-1024x228.png)
架构锁的概念
架构锁:分为架构修改锁(Sch-M)和架构稳定锁(Sch-S),架构修改锁发生在表数据定义语言(DDL)操作的过程中,架构稳定锁发生在数据库引擎编译和执行查询的过程中。
架构锁操作案例:
SQL
BEGIN TRAN
ALTER TABLE dbo.mum_baby ADD name varchar(50)
--查询当前数据库所利用的锁
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/图片-26-1024x228.png)
批量修改锁
批量修改锁:数据库引擎将在数据大容量复制到表中使用批量修改(BU)锁,批量修改锁允许多个线程并发操作,同时防止其它非大容量操作的进程访问。