锁定的体系分类
1.表级锁
保证数据在逻辑上的一致性。
包含:行级锁、分页锁、表、数据分页、LOB分页以及索引叶子级锁。
2.闩
保证数据在物理上的一致性,系统采用,比锁少耗资源,对用户不可见。
锁的分类
锁定包括共享锁、排他锁、更新锁以及意向锁,再加上这些锁类型的一些变种
1.共享锁
当数据被读取的时候,事务自动获取共享锁,完毕之后立即释放。
多个事务可以在同一数据上持有共享锁。
2.排他锁
当数据被插入、更新或者删除操作,事务自动获取数据上的排他锁,直至事务结束才释放。
3.更新锁
当事务执行对数据A修改操作但首先需要搜索表时,更新锁就会被获取。
4.意向锁
意向锁可以拥有意向共享锁、意向排他锁、意向更新锁等等,实际起标识作用。
5.转换锁
当锁由一个模式转化为另外一种模式的时候造成,感觉没特别的含义和作用。
6.键范围锁
为在可串行化隔离级别中锁定一定范围的数据而设置的锁。
键范围锁的对象是键,所以表必须要有索引的存在。如果没有锁引,可串行化隔离就会申请一个表级锁。
7.自旋锁
自旋锁用于实现互斥,但不会锁住数据。(感觉用的不多,不了解)
锁的粒度
1.常用粒度:数据行、分页、表、索引键
注:聚集索引的叶子级点实际就是数据行,这种情况是有键锁来进行锁定的。
2.其他的粒度:扩展、数据库锁
3.应用程序级锁:对应用程序设置锁,语法sp_getapplock [资源名],[锁的模式],[所有者],[超时设置],[用户/角色]