隔离级别与并发三坑

多个事务同时跑,会互相看清对方写到一半的数据吗?隔离级别就是来调节这个的。级别越低越容易看到乱子,但性能越好;MySQL 默认是可重复读。

隔离级别与并发三坑要点

隔离级别与并发三坑示例

						-- 查看当前隔离级别
						SELECT @@transaction_isolation;

						-- 把当前会话调整为读已提交
						SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

						-- 全局设置(需权限)
						-- SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;

隔离级别与并发三坑对照

隔离级别 脏读 不可重复读 幻读
READ UNCOMMITTED 可能 可能 可能
READ COMMITTED 不会 可能 可能
REPEATABLE READ 不会 不会 基本不会
SERIALIZABLE 不会 不会 不会
避坑提醒:调隔离级别别一上来就串行化,先确认业务是否真会撞上幻读,多数场景可重复读已够用。
隔离级别与并发三坑 · MySQL 事务 知识卡片
卡片 06 / 08 · MySQL 事务(1080×1440 速查卡片)

MySQL 事务知识点