Session 1: Session 2: mysql> show variables like '%tx_isolation%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | tx_isolation | REPEATABLE-READ | +---------------+-----------------+ 1 row in set (0.00 sec) Session 1: mysql> select * from t100; --看到的记录为291 mysql> update t100 set free = free -quota where sn=10; | 10 | 300 | 1 | 291 | Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> commit; Query OK, 0 rows affected (0.01 sec) mysql> select * from t100; +----+------+-------+------+ | sn | id | quota | free | +----+------+-------+------+ | 1 | 7 | NULL | NULL | | 2 | 9 | NULL | NULL | | 3 | 990 | NULL | NULL | | 4 | 12 | NULL | NULL | | 5 | 13 | NULL | NULL | | 6 | 14 | NULL | NULL | | 7 | 15 | NULL | NULL | | 8 | 22 | NULL | NULL | | 9 | 23 | NULL | NULL | | 10 | 300 | 1 | 291 | +----+------+-------+------+ 10 rows in set (0.00 sec) mysql> update t100 set free = free -quota where sn=10; Session 2看到的仍旧是291 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> commit; Query OK, 0 rows affected (0.01 sec) mysql> select * from t100; +----+------+-------+------+ | sn | id | quota | free | +----+------+-------+------+ | 1 | 7 | NULL | NULL | | 2 | 9 | NULL | NULL | | 3 | 990 | NULL | NULL | | 4 | 12 | NULL | NULL | | 5 | 13 | NULL | NULL | | 6 | 14 | NULL | NULL | | 7 | 15 | NULL | NULL | | 8 | 22 | NULL | NULL | | 9 | 23 | NULL | NULL | | 10 | 300 | 1 | 290 | +----+------+-------+------+ RR模式下 以第一次读为准 All consistent reads within the same transaction read the snapshot established by the first read. 所有的一致性读 在相同事务读取快照 有第一次读创建