分为三类
Record lock 锁定单行记录
gap lock j间隙锁, 不包含记录本身
next-key lock : 目的是为了解决 Phantom Problem。 锁定一个范围. 包含记录本身
效果 : 解决了幻象读
Phantom Problem , 相同查询,正是因为 next-key lock , 锁定了一个范围, 所以执行查询不会产生幻象读. oracle 需要在 serializable的书屋隔离界别下面才能解决Phantom Problem 。
mysql 的 repeatable read 就可以避免Phantom Problem。 事物级别降低为Read commited, 采用record lock, 允许幻象读.
锁降级:
只有当查询得列是唯一索引,才会降级为Record Lock。 若是辅助索引, 则完全不同,分别锁定主键索引(也叫做聚集索引.)和辅助索引。