锁的用途
- 为了避免同时争抢数据库资源,将数据库加锁,只有拿到钥匙的用户才能使用
数据库中锁的粒度
- Row行
- Page页
- Partition区
- Table表
SQL Server数据库中可以锁定的资源类型
- 整个库
- 数据库文件
- 对象
- 页,例如数据页或索引页
- 索引键
- 区,一组连续的八页
- 数据行
- 应用程序专业的资源
- 元数据锁
- 堆或B树
- 分配单元
锁的类型
- 共享锁:用于所有的只读数据操作
- 修改锁:在修改操作的初始化阶段用来锁定可能要被修改的资源
- 独占锁:为修改数据而保留的。独占锁不能和其他锁兼容。
- 架构锁:分为架构修改锁(Sch-M)和架构稳定锁(Sch-S)
- 意向锁:说明SQL Server有在资源的底层获得共享锁或独占锁的意向
- 批量修改锁:批量复制数据时使用批量修改锁
如何查看SQL Server中的锁
- 通过系统DMV函数:sys.dm_tran_locks
- 使用Profiler来捕捉锁信息
SQL
SELECT * FROM sys.dm_tran_locks
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-19-1024x247.png)
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-20-1024x473.png)
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-21-1024x294.png)