sql-server – 密钥锁实际锁定什么资源?

栏目: 数据库 · 发布时间: 6年前

内容简介:键锁影响与给定谓词(种类)匹配的所有行 – 在示例中,所有具有surname =’Jones’的行都将受到影响.使用单词“range”,因为根据谓词可能会影响行范围,例如,如果谓词为age> 18那么年龄大于18的所有行都会受到影响.同样重要的是要明白,键锁并不是简单地单独锁定索引中的每个匹配行 – 您的示例键锁不仅会影响索引中所有现有行的姓氏“Jones”,还会影响任何修改现有行的尝试或者插入一个名为“琼斯”的新行.

我知道钥匙锁在索引中锁定一个键.但是,“关键”究竟是什么意思呢?

例如,如果我在一个姓氏列上有一个非聚集索引,并尝试更新surname =“Jones”,那么我会有效地锁定姓氏是“Jones”的表中的每一行吗?或者将索引锁定在更高级别,阻止访问除“琼斯”以外的姓氏的行?

我问的原因是在线书籍关于锁定粒度和层次结构的这个注释:

KEY: A row lock within an index used to protect key ranges in serializable transactions.

这表明一系列的钥匙将被锁定,而不仅仅是一个.

键锁影响与给定谓词(种类)匹配的所有行 – 在示例中,所有具有surname =’Jones’的行都将受到影响.

使用单词“range”,因为根据谓词可能会影响行范围,例如,如果谓词为age> 18那么年龄大于18的所有行都会受到影响.

同样重要的是要明白,键锁并不是简单地单独锁定索引中的每个匹配行 – 您的示例键锁不仅会影响索引中所有现有行的姓氏“Jones”,还会影响任何修改现有行的尝试或者插入一个名为“琼斯”的新行.

它可能有助于以稍微不同的方式思考锁 – 只有当SQL Server尝试获得可能不兼容的另一个锁(即同时具有两个锁是不合法的)时,锁才有效果.例如,如果您在具有年龄>的行上拥有专属密钥锁定18,并尝试插入或修改age = 42的行,然后SQL Server将首先尝试获取相关锁 – 看到存在具有年龄>的行的现有密钥锁. 18 SQL Server确定锁是不兼容的,并采取相应的行动.

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/6012911/what-resource-does-a-key-lock-actually-lock


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning Apache Struts

Beginning Apache Struts

Arnold Doray / Apress / 2006-02-20 / USD 44.99

Beginning Apache Struts will provide you a working knowledge of Apache Struts 1.2. This book is ideal for you Java programmers who have some JSP familiarity, but little or no prior experience with Ser......一起来看看 《Beginning Apache Struts》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具