四大隔离级别
| 级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| READ UNCOMMITTED | 是 | 是 | 是 |
| READ COMMITTED | 否 | 是 | 是 |
| REPEATABLE READ(默认) | 否 | 否 | 否(InnoDB 通过 MVCC 避免) |
| SERIALIZABLE | 否 | 否 | 否 |
查看当前隔离级别:
SELECT @@transaction_isolation;InnoDB 锁类型
- 共享锁(S):
SELECT ... LOCK IN SHARE MODE - 排他锁(X):
SELECT ... FOR UPDATE - 意向锁:表级别,用于协调行锁和表锁
- 间隙锁(Gap Lock):锁定范围,防止幻读
死锁排查
-- 查看当前事务
SELECT * FROM information_schema.INNODB_TRX;
-- 查看锁等待
SELECT * FROM information_schema.INNODB_LOCKS;
SELECT * FROM information_schema.INNODB_LOCK_WAITS;
-- 最近一次死锁日志
SHOW ENGINE INNODB STATUS\G生产环境建议使用 REPEATABLE READ 配合索引更新,避免锁表。
