贝利信息

什么是隔离级别_mysql事务隔离级别

日期:2026-01-20 00:00 / 作者:P粉602998670
MySQL事务隔离级别共四种:READ UNCOMMITTED允许脏读;READ COMMITTED避免脏读但存在不可重复读;REPEATABLE READ为默认级别,通过MVCC和间隙锁解决脏读与不可重复读,基本缓解幻读;SERIALIZABLE强制串行执行,完全避免三类问题但性能最差。

MySQL 的事务隔离级别,是用来控制多个事务并发执行时,彼此之间能看到哪些数据、哪些修改的规则。它决定了一个事务在执行过程中,能否读到其他事务未提交或已提交但还未结束的数据,从而避免脏读、不可重复读、幻读等问题。

四种标准隔离级别

SQL 标准定义了四种隔离级别,MySQL 的 InnoDB 存储引擎全部支持:

如何查看和设置隔离级别

可以通过以下语句查看当前会话或全局的隔离级别:

SELECT @@transaction_isolation;

设置当前会话的隔离级别(重启后失效):

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

设置全局隔离级别(需 SUPER 权限,新连接生效):

SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;

实际开发中怎么选

大多数业务场景下,REPEATABLE READ 是合理默认值。它在数据一致性和并发性能间取得较好平衡。

注意 MVCC 和锁机制的影响

InnoDB 不是单纯靠隔离级别“开关”来实现效果,而是

结合 MVCC(快照读)和锁(当前读)共同作用: