首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是距离锁?

什么是距离锁?
EN

Stack Overflow用户
提问于 2012-08-29 13:30:33
回答 2查看 9.5K关注 0票数 21

那么,话题介绍孤立在维基百科有这样的词,链接是这里

.可序列化,这是最高的隔离级别。通过基于锁的并发控制DBMS实现,可序列化性要求在事务结束时释放读和写锁(在所选数据上获取)。此外,当SELECT查询使用range子句时,必须获得范围锁定,特别是为了避免幻影读取现象(见下文)。当使用基于非锁的并发控制时,不会获得锁;但是,如果系统检测到多个并发事务之间的写冲突,则只允许其中一个事务提交。有关此主题的详细信息,请参阅快照隔离。

但是整个话题并没有解释“范围锁定”,谷歌alse没有准确的描述。

什么是“范围锁”,与“读锁”和“写锁”有什么不同?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 13:43:05

如果在WHERE子句中使用范围,数据库将锁定此范围内的每个可能的元组以及下一个元组(前后)。如果在一个方向上没有下一个元组可用,它将在这个方向上完全锁定。

因此,SELECT在事务中是可靠的。

票数 14
EN

Stack Overflow用户

发布于 2012-08-29 14:08:14

使用锁定(并非所有数据库都使用锁定)来防止并发操作冲突的最简单方法是锁定整个数据库。不过,这会使每件事都变得非常缓慢。

下一个是如果你把整张桌子锁上。至少其他桌子没有慢下来。

最窄的是锁一排。您可以安全地更新该行,而不阻止其他操作。

距离锁在最后两个之间。使用它的案例包括:

  1. 值的范围受查询的影响。
  2. 非唯一索引受查询的影响(因为可以有多个行匹配,例如23,因此23标识的是一个范围而不是一行)。
  3. 插入一个新的自动递增键(锁定范围max(curvalue) + indexincrement之间)。
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12179130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档