20

好吧,维基百科中介绍隔离的主题有这样的词,链接在这里

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

但整个主题没有解释“范围锁”,谷歌也没有准确的描述。

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

谢谢!

4

2 回答 2

18
于 2012-08-29T14:08:14.713 回答
14

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

所以在SELECT交易中是可靠的。

于 2012-08-29T13:43:05.420 回答