欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

MySQL 事务隔离级别与锁机制深度解析

时间:2026年08月12日 05:32:21 浏览:1

MySQL 事务隔离级别与锁机制深度解析


事务隔离级别决定了并发事务之间的可见性,InnoDB 默认 REPEATABLE READ。


1. 四大隔离级别





































级别 脏读 不可重复读 幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ 否(通过 MVCC + 间隙锁)
SERIALIZABLE

查看当前隔离级别:


SELECT @@transaction_isolation;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

2. InnoDB 锁类型



  • 共享锁 (S)SELECT ... LOCK IN SHARE MODE

  • 排他锁 (X)SELECT ... FOR UPDATE

  • 意向锁 (IS/IX):表级别,用于协调行锁和表锁。

  • 间隙锁 (Gap Lock):锁定索引记录之间的间隙,防止幻读。


3. 死锁排查


-- 查看当前事务
SELECT * FROM information_schema.INNODB_TRX;

-- 查看锁等待
SELECT * FROM performance_schema.data_locks;

-- 最近死锁日志
SHOW ENGINE INNODB STATUS\G

4. 优化建议



  • 保持事务短小,及时提交。

  • 按相同顺序访问资源,减少死锁概率。

  • 使用索引更新,避免锁表。