InnoDB通过间隙锁和next-key锁解决幻读问题,幻读是指同一事务中两次相同范围查询结果不一致。间隙锁锁定索引间隙,next-key锁同时锁定记录和间隙。虽然有效,但会影响并发性能,建议在高性能场景下使用RC隔离级别。
本文讨论了在线上经常出现死锁问题的背景下,通过代码分析和问题还原的方式排查问题。两个事务必须都完成update操作,才能执行insert操作,否则会出现死锁。介绍了InnoDB的三种行锁算法和间隙锁的副作用,以及如何避免更新或删除不存在的记录导致死锁问题。从代码级别上加锁可以从根本上解决问题,但会降低并发性。
完成下面两步后,将自动完成登录并继续当前操作。