SQL Server锁定【2015.12.17】

锁定的体系分类

  1.表级锁

    保证数据在逻辑上的一致性。

    包含:行级锁、分页锁、表、数据分页、LOB分页以及索引叶子级锁。

  2.闩

    保证数据在物理上的一致性,系统采用,比锁少耗资源,对用户不可见。

锁的分类

  锁定包括共享锁、排他锁、更新锁以及意向锁,再加上这些锁类型的一些变种

  1.共享锁

    当数据被读取的时候,事务自动获取共享锁,完毕之后立即释放。

    多个事务可以在同一数据上持有共享锁。

  2.排他锁

    当数据被插入、更新或者删除操作,事务自动获取数据上的排他锁,直至事务结束才释放。

  3.更新锁

    当事务执行对数据A修改操作但首先需要搜索表时,更新锁就会被获取。

  4.意向锁

    意向锁可以拥有意向共享锁、意向排他锁、意向更新锁等等,实际起标识作用。

  5.转换锁

    当锁由一个模式转化为另外一种模式的时候造成,感觉没特别的含义和作用。

  6.键范围锁

    为在可串行化隔离级别中锁定一定范围的数据而设置的锁。

    键范围锁的对象是键,所以表必须要有索引的存在。如果没有锁引,可串行化隔离就会申请一个表级锁。

  7.自旋锁

    自旋锁用于实现互斥,但不会锁住数据。(感觉用的不多,不了解)

锁的粒度

  1.常用粒度:数据行、分页、表、索引键

  注:聚集索引的叶子级点实际就是数据行,这种情况是有键锁来进行锁定的。

  2.其他的粒度:扩展、数据库锁

  3.应用程序级锁:对应用程序设置锁,语法sp_getapplock [资源名],[锁的模式],[所有者],[超时设置],[用户/角色]

原文地址:https://www.cnblogs.com/dongdong1979/p/5053498.html