准备工作以及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,但是结果不同。出现了不可重复读问题。