Skip to content

事务与隔离级别

ACID(简)

特性含义
A 原子性要么全部提交,要么全部回滚
C 一致性事务前后满足业务约束(如余额守恒)
I 隔离性并发事务互不干扰(由隔离级别调节)
D 持久性提交后崩溃可恢复(InnoDB 依赖 redo 等机制)

InnoDB 下事务能力完整;MyISAM 无事务


并发问题(概念)

问题含义
脏读读到他事务未提交的修改
不可重复读同一事务两次读同一行,值被别事务提交修改
幻读同一事务内两次按相同条件读,因他事务插入等出现「多出来的行」;删除导致行数变少有时也归入广义并发异常,教材常强调插入场景

隔离级别(MySQL InnoDB)

级别脏读不可重复读幻读(典型)
读未提交可能可能可能
读已提交可能可能
可重复读(默认)InnoDB 下 一致性读(快照) 避免多数「不可重复读」;插入型幻读当前读(如 SELECT … FOR UPDATE)用 间隙锁/临键锁 抑制,语义与「完全无幻读」仍以规范与语句类型为准
串行化

业务默认多在 RR;只读报表可考虑 RC(需评估语句与锁行为)。


实务命令(提要)

sql
START TRANSACTION;
-- 或 BEGIN;
COMMIT;
ROLLBACK;

自动提交 autocommit 默认开启;显式事务时注意 持有锁时间,避免长事务。


小结

理解 隔离级别与并发异常 的对应关系;排查锁等待时结合 SHOW ENGINE INNODB STATUS(老接口仍常用)、Performance Schemadata_locks / events_statements_history 等)与慢查询日志。