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

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

内容简介:键锁影响与给定谓词(种类)匹配的所有行 – 在示例中,所有具有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


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

查看所有标签

猜你喜欢:

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

编程的修炼(中英双语)

编程的修炼(中英双语)

[荷]Edsger W. Dijkstra / 裘宗燕 / 电子工业出版社 / 2013-7 / 79.00元

本书是图灵奖获得者Edsger W. Dijkstra在编程领域里的经典著作中的经典。作者基于其敏锐的洞察力和长期的实际编程经验,对基本顺序程序的描述和开发中的许多关键问题做了独到的总结和开发。书中讨论了顺序程序的本质特征、程序描述和对程序行为(正确性)的推理,并通过一系列从简单到复杂的程序的思考和开发范例,阐释了基于严格的逻辑推理开发正确可靠程序的过程。 本书写于20世纪70年代中后期,但......一起来看看 《编程的修炼(中英双语)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具