数据库引擎可以锁定的资源
| 资源 | 说明 |
| RID | 用于锁定堆(Heap)中的某一行 |
| KEY | 用于锁定索引上的某一行,或者某个索引键 |
| PAGE | 锁定数据库中一个8kb的页,可以是数据页或索引页 |
| EXTENT | 连续的8个页 |
| HoBT | 表下面的某个分区 |
| TABLE | 包括数据和索引的整个表 |
| FILE | 数据库文件 |
| APPLICATION | 应用程序专用资源 |
| METADATA | 元数据锁 |
| ALLOCATION_UNIT | 分配单元 |
| DATABASE | 整个数据库 |
锁模式
| 锁模式 | 说明 |
| 共享(S) | 用于读取数据的操作,如select |
| 更新(U) | 防止多个会话对同一资源修改时发生死锁 |
| 排他(X) | 数据修改,如insert,update,delete,确保事务提交前不会多个事务修改。 |
| 意向 | 放置在资源结构上的锁,以保护较低级别资源上的共享和排他锁。如查询一行数据则要在该页,表上放置意向共享IX,第二个事务只需检查表级锁就知,如页区表 |
| 架构 | 在执行依赖于表架构的操作时使用。架构锁包含:架构修改(Sch-M)和架构稳定性(Sch-S) |
| 大容量更新(BU) | 在向表进行大容量数据复制且指定了TABLOCK提示时使用 |
| 键范围 | 当使用可序列化事务隔离级别时保护查询读取的行的范围。确保在次运行查询时其他事务无法插入符合可序列化事务的查询的行 |