准备工作以及SQL解释参考:https://mp.csdn.net/postedit/98398695
执行步骤
SESSION A | SESSION B | |
T1 | SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; | |
T2 | START TRANSACTION; | |
T3 | SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; | |
T4 | START TRANSACTION; | |
T5 | SELECT * FROM t1; -- 结果为空 | |
T6 | INSERT INTO `t1` VALUES (1, 100); | |
T7 | SELECT * FROM t1; -- 结果为空 | |
T8 | COMMIT; | |
T9 | SELECT * FROM t1; -- 查询到记录【1,100】 |
SQL执行结果分析:
- SESSION A在 T7 时刻没有读取到SESSION B在 T6 时刻添加的数据【1, 100】,解决了脏读问题。
- SESSION A在 T7 和 T9 时刻执行了相同的SQL,但是结果不同。出现了不可重复读问题。