repeatable read隔离级别为什么测试下来可以防止幻读?求大神解释!!

renrenjieshou 2013-08-13 08:21:49
mysql版本:
5.5.31-0ubuntu0.12.10.1-log
repeatable read隔离级别下

client1:

start transaction;
select count(1) from account;//发现有900条数据

client2:

start transaction;
insert into account set name='2';
select count(1) from account;//发现有901条数据
commit;

这时候切换到client1:

select count(1) from account;//发现还是只有900条数据
commit;
select count(1) from account;//发现这时候有901条数据


问:从试验看来client1的事务不是没有出现幻读吗?同样的操作我换成read committed隔离级别后,在client1确实出现了幻读。我是在哪里理解错了?
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2013-08-14
  • 打赏
  • 举报
回复
mysql的官方文档把不可重复读的问题定义为幻读问题 用nextkey lock来避免这个现象
renrenjieshou 2013-08-14
  • 打赏
  • 举报
回复
阿?那我就不理解了。 按照你的意思,幻读是属于不可重复读范畴里面的? 我查看了下资料说 repeatable read隔离级别可以繁殖脏读,不可重复读,但是不能防止幻读。 最后这个不能防止幻读我要如何模拟出来呢?可以举个例子吗?
renrenjieshou 2013-08-13
  • 打赏
  • 举报
回复
我这个不是新增加了一条记录吗? 不可重复读是不能修改一条记录把? 幻读是多了或者少了数据把?
rucypli 2013-08-13
  • 打赏
  • 举报
回复
你这种操作叫做不可重复读 而不是幻读

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧