钥匙锁实际上锁定了什么资源?

2024-01-08

我知道钥匙锁将钥匙锁定在索引中。然而,“钥匙”到底意味着什么呢?

例如,如果我在姓氏列上有一个非聚集索引并尝试更新姓氏 =“Jones”的位置,那么我是否会有效锁定表中姓氏为“Jones”的每一行?或者索引会被锁定在更高的级别,从而阻止访问姓氏不是“Jones”的行吗?

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

KEY:索引中的行锁,用于保护可序列化事务中的键范围。

这表明一系列密钥将被锁定,而不仅仅是一个。


键锁会影响与给定谓词(某种)匹配的所有行 - 在您的示例中,所有行surname = 'Jones'会受到影响。

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


同样重要的是要了解键锁并不简单地单独锁定索引中的每个匹配行 - 您的示例键锁不仅会影响索引中姓氏为“Jones”的所有现有行,还会影响任何修改现有行的尝试或插入姓氏为“Jones”的新行。

以稍微不同的方式考虑锁可能会有所帮助 - 锁仅在 SQL Server 尝试获取另一个锁时才有效,而该锁可能是不相容(即同时拥有两个锁是不合法的)。例如,如果您对具有以下内容的行有独占键锁age > 18并尝试插入或修改行age = 42那么SQL Server将首先尝试获取相关的锁 - 看到有一个现有的键锁用于行age > 18SQL Server 确定锁不兼容并采取相应的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

钥匙锁实际上锁定了什么资源? 的相关文章

随机推荐

  • Pandas Wide_to_long 的行为与 Python 2.7 中的先前版本有很大不同

    我升级了笔记本电脑并安装了 Python 2 7 和 Pandas 0 23 由于 Wide to long 的结果不同 我以前工作的所有脚本都不再运行 数据框如下所示 Index ID Text column abc A abc B ab
  • Python——如何查看不适合屏幕的输出?

    我应该说我正在寻找问题的解决方案查看不适合您屏幕的输出 例如 range 100 将显示高度为 30 的终端中的最后 30 行 我只是希望被推向正确的方向 并且很好奇你们是如何解决这个问题的 当您遇到希望可以方便地滚动浏览一些大输出的情况时
  • 更改 teechart 中的单点颜色

    我在java中使用teechart 我想改变一系列点的颜色 而不是所有点 如果点的值超过特定值 则将点变成红色 我只知道如何更改所有点的颜色 这是我的代码 xline getPointer setVisible true 数据点突出显示 x
  • 与 mdf 文件的多个连接

    我正在为一个大学项目创建一个使用 C 的 Net 应用程序 并且需要一些帮助 我在网络驱动器上托管了一个 mdf 文件 并且需要多个客户端才能从其应用程序访问此数据库 每个客户端计算机都将运行自己的 sql express 实例 我可以从我
  • 实体框架包括扩展返回大量数据

    我有两个实体 User 和 UserPermission User 实体包含所有常规字段 Id Username Email 等 UserPermission 实体有两个值 UserId 和 PermissionId 我编写了一个存储库方法
  • 在 PHP 中,检查 30 分钟是否已过的示例?

    我有一个验证功能 用户将在 30 分钟后自动注销 我想在身份验证功能中存储登录时间 时间戳 然后 每次调用需要身份验证的函数时 我都会更新该时间 如果距上次通话已过去 30 分钟 则会自动重新进行身份验证 我将把上次访问时间戳或日期存储在全
  • 如何将 CMake 文件 (GLOB SRCS *.) 与构建目录一起使用

    这是我当前的 CMakeLists txt 文件 cmake minimum required VERSION 3 3 set CMAKE C FLAGS Wall g project bmi file GLOB SRCS cpp h ad
  • 选择 xQuery 中的第 n 个子元素/选择下一个元素

    我无法找到好的 xQuery 教程 基本上我想做的是检索文本etc 从这个 html 节点 div class venue div class vitem p style padding 6px 0pt 0pt class label AD
  • 配置 Microsoft.AspNet.Identity 以允许电子邮件地址作为用户名

    我正在创建一个新应用程序 并开始使用 EF6 rc1 Microsoft AspNet Identity Core 1 0 0 rc1 Microsoft AspNet Identity EntityFramework 1 0 0 rc1
  • PowerShell 是强类型语言吗?

    PowerShell 肯定属于动态语言的范畴 但它会被视为强类型吗 这些术语存在一定程度的混乱 本文 http eli thegreenplace net 2006 11 25 a taxonomy of typing systems 解释
  • 在Android应用程序上获取id令牌并在后端服务器上验证它(如何使用id令牌?)

    我正在开发一个 Android 应用程序 它使用来自我自己的 REST API 服务器的数据 我想使用 Firebase 身份验证 因为它允许用户以非常简单的方式使用 Google Facebook Twitter 登录 但我不知道如何使用
  • Intl.Collat​​or 和带有数字选项的自然排序对十进制数字的排序不正确

    使用对十进制数进行排序Intl Collator以及启用的选项numeric比较小数不正确 在某些浏览器上 比较 0 005 和 0 05 会返回 0 因为数字相同 不同浏览器中的结果 铬 54 0 火狐 49 0 边缘 1 IE 11 1
  • 如何跳过 PHPUnit 中的前 N ​​个测试?

    场景 使用 PHPUnit 运行大量测试 一些测试 例如 1544 中的 537 个 在几分钟后失败 更改很小 不太可能影响之前的测试 我希望能够跳过前 536 个测试 执行类似这样的操作以 从我上次停下来的地方继续 phpunit ski
  • 在 ASP.NET 中自动进行 HtmlEncode

    被 Ruby on Rails 3 宠坏了 我希望所有 HTML 输出都能自动编码 我问这个关于脚本漏洞的问题 https stackoverflow com questions 7136864 script exploits in asp
  • 将本机页脚视图添加到 webview

    我有一个WebView和我想在下面添加的本机自定义视图WebView 我试过包裹WebView里面一个ScrollView 虽然这正是我想要的 但滚动性能确实很滞后 如果用户点击屏幕滚动滚动条并不会像应有的那样停止滚动 我想到的另一种方法是
  • ASP.NET MVC + 模型状态和部分视图

    我有一个名为 LogOn 的部分视图 其中我基本上将登录输入复制到控件中 我使用 Html RenderPartial 将控件放置在 Ajax BeginForm 内的 Index Html 中 div div 我正在尝试传回验证消息并显示
  • 单击按钮后按键监听器不工作

    我在java中的框架上附加了一个按键侦听器 当我按下任何键时 我可以检测到按键 但是奇怪的事情正在发生 我的游戏是扫雷游戏 我有一个重新启动按钮 基本上可以清除棋盘并重新挖掘它 奇怪的是 当我用鼠标单击按钮时 一切都正常 并且面板被提醒 但
  • pandas 数据框的高效扁平化

    我有一个熊猫数据框 它看起来像这样 pd DataFrame data np arange 1 10 reshape 3 3 index A B C columns A B C 但有 100 行和 100 列 我想把它压平 使它看起来像这样
  • 将文本从电脑复制并粘贴到 Android Studio 模拟器时出错

    大约 2 个月前 我能够从电脑剪贴板复制文本并将其粘贴到在 Android Studio 模拟器上运行的应用程序中 只需在电脑上执行 ctrl c 并将其粘贴到 TextView 中即可 现在我使用的是新版本的Android Studio
  • 钥匙锁实际上锁定了什么资源?

    我知道钥匙锁将钥匙锁定在索引中 然而 钥匙 到底意味着什么呢 例如 如果我在姓氏列上有一个非聚集索引并尝试更新姓氏 Jones 的位置 那么我是否会有效锁定表中姓氏为 Jones 的每一行 或者索引会被锁定在更高的级别 从而阻止访问姓氏不是