测试可重复读
------------------
建表

关闭事务自动提交
SET AUTOCOMMIT =0;

设置隔离级别为可重复读
[A]
1)mysql>commit ;
2)mysql>set session transaction isolation level repeatable read ; -- 可以重复读
3)mysql>start transaction ; -- 开始事务
4)mysql>select * from mytable ; -- 查询

9)mysql>select * from mytable ;

尽管B事务更新了age=100,A事务查询结果并未受到影响,避免了不可重复读。
[B]
5)mysql>commit;
6)mysql>start transaction ;
7)mysql>update mytable set age = 100 where id = 1; -- 更新
8)mysql>commit;
再测试可重复读能否避免幻读
[A]
1)mysql>commit ;
2)mysql>set session transaction isolation level repeatable read ; -- 可重复读
3)mysql>start transaction ; -- 开始事务
4)mysql>select * from mytable; -- 查询

9)mysql>select * from mytable ;

并未出现幻读???
提交后,再次查询:

网友评论