MySQL InnoDB 如何解决幻读

MySQL InnoDB 如何解决幻读

  • 1 MySQL 事物隔离级别

1 MySQL 事物隔离级别

事物隔离级别 脏读 不可重复读 幻读
未提交读 可能 可能 可能
已提交读 不可能 可能 可能
可重复读 不可能 不可能 可能
串行化 不可能 不可能 不可能

InnoDB 引入了 行锁(Record Lock)、间隙锁(Gap Lock) 和 临键锁(Next-Key Lock) 机制来解决幻读问题。

行锁名称 作用
行锁(Record Lock) 锁定单个行记录的锁,防止其他事务对此行进行 update 和 delete 。在 RC、RR 隔离级别下都支持。
间隙锁(Gap Lock) 锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行 insert,产生幻读。在 RR 隔离级别下都支持。
临键锁(Next-Key Lock) 行锁和间隙锁组合,同时锁住数据,并锁住数据前面的间隙 Gap。 在 RR 隔离级别下支持。

你可能感兴趣的:(mysql,数据库,java)