好吧,主题介绍维基百科中的隔离有这样的词,链接是here
......... 序列化 这是最高的隔离级别。 使用基于锁的并发控制DBMS实现,可序列化需要在事务结束时释放读取和写入锁(在所选数据上获取)。当SELECT查询使用ranged WHERE子句时,也必须获取 range-locks ,尤其是为了避免幻像读取现象(见下文)。 使用基于非锁定的并发控制时,不会获取锁定;但是,如果系统检测到多个并发事务之间的写冲突,则只允许其中一个事务提交。有关此主题的更多详细信息,请参阅快照隔离。
但是整个主题没有解释“范围锁定”,谷歌也没有准确的描述。
什么是“范围锁定”,哪个与“读锁定”和“写锁定”不同?
谢谢!
答案 0 :(得分:9)
如果使用WHERE
子句中的范围,数据库将锁定此范围内的每个可能元组以及下一个元组(之前和之后)。如果方向上没有下一个元组可用,它将完全锁定在这个方向上。
因此SELECT
在交易中是可靠的。
答案 1 :(得分:9)
使用锁定(并非所有数据库都使用锁定)来防止并发操作冲突的最简单方法是锁定整个数据库。然而,这将逐一制造所有东西,这将非常缓慢。
接下来,是你锁定整个表格。至少其他表格不会放慢速度。
最窄的是锁定一行。您可以安全地更新该行,而不是阻止其他操作。
范围锁定在最后两个之间。它使用的案例包括:
23
,因此23
标识范围而不是行。max(curvalue) + indexincrement
和∞
)。