京东Java后台开发面试题及参考答案(上)
InnoDB 的默认隔离级别是什么(Repeatable Read,RR)?RR 级别是如何解决幻读问题的(Next-Key Lock 间隙锁)?
InnoDB 的默认事务隔离级别是 Repeatable Read(可重复读,简称 RR),其核心优势是在保证高并发性能的同时,解决了脏读、不可重复读问题,且通过 Next-Key Lock(间隙锁 + 记录锁) 机制,额外解决了幻读问题(这是 InnoDB 对 SQL 标准的增强,标准 RR 级别未解决幻读)。
一、InnoDB 默认隔离级别:Repeatable Read(RR)
MySQL 支持四种隔离级别,但 InnoDB 选择 RR 作为默认,核心原因是 RR 实现了“高一致性”与“高并发”的平衡:
- 相比 Read Committed(RC):RR 解决了不可重复读和幻读,数据一致性更强,适合订单、支付等核心业务;
- 相比 Serializable:RR 无需表级锁和串行执行,通过行级锁和 MVCC 保证并发性能,适合高并发场景;
- 相比 Read Uncommitted(RU):RR 完全禁止脏读,数据安全性更高。
可通过以下 SQL 验证和修改默认隔离级别:
-- 查看当前会话隔离级别
SELECT @@session.transaction_isolatio