REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据
隔离级别为 REPEATABLE-READ:
起两个MySQL命令行客户端A、B,两边都 set autocommit = 0; start transaction;
实验一:A更新一条数据行 id = 1,值更新为 99,此时A不提交,B是查不到新值99的。A提交,B直接查询此条数据,可以查到值99。注意,在此之前B从未执行过查询操作。
实验一:A更新一条数据行 id = 1,值更新为 99,此时A不提交,B是查不到新值99的。A提交,B先任意执行一条查询,再查询此条id=1的数据,就不可以查到值99,查到的是之前的旧值。
这好像很符合 REPEATABLE-READ隔离级别的定义
使用 set @@session.tx_isolation='read-committed'; 将AB会话的隔离级别调整为 read-committed。发现:B事务任何情况下都可以读到A事务刚提交的最新数据。
总结:
MySQL默认的隔离级别为 REPEATABLE-READ,这个隔离级别使得 前后读取同一条的值是相同的,不会受其它事务的影响,除非它自己改变的。
参考:https://blog.csdn.net/weixin_37882382/article/details/104029990
浙公网安备 33010602011771号