首页/数据/SQL 速查/事务隔离级别与设置方法
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

事务隔离级别与设置方法

四档隔离级别控制并发读写行为:MySQL 默认 REPEATABLE READ,PostgreSQL 默认 READ COMMITTED;改级别可按会话或按事务。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT @@transaction_isolation;                 -- 默认 REPEATABLE-READ
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;   -- 仅下一个事务

PostgreSQL

PostgreSQL
SHOW default_transaction_isolation;             -- 默认 read committed
BEGIN ISOLATION LEVEL REPEATABLE READ;
-- 或 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
READ UNCOMMITTED允许脏读;PG 实际按 READ COMMITTED 处理(无法真正启用)
READ COMMITTED语句级快照;PG 默认
REPEATABLE READ事务级快照;MySQL 默认,InnoDB 一致性读
SERIALIZABLE严格的串行化保证;PG 用 SSI 检测,冲突时序列化失败需重试

易错点

  • 把 MySQL 的 REPEATABLE READ 经验直接套到 PG:两库快照时机与幻读处理不同,并发逻辑要重新验证
  • SERIALIZABLE 下应用必须实现重试逻辑(序列化失败 40001/40001 类错误),否则并发高峰直接报错

数据来源与参考

  • MySQL 8.0 Reference Manual · Transaction Isolation Levels
  • PostgreSQL Documentation · Transaction Isolation
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌