随笔 - 175  文章 - 202  trackbacks - 0
<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

第一个Blog,记录哈哈的生活

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

Java links

搜索

  •  

最新评论

阅读排行榜

评论排行榜

@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
1. 使用默认隔离级别 repeatable read
2. 开始,使用 select @@tx_isolation 确认当前 session 的隔离级别,并且创建个表 create table tt (id int, name varchar(300)) engine=innodb
3. 启动 transaction 1(t1),使用 start transaction
4. 启动 transaction 2(t2), 再开个 mysql,使用 start transaction
5. 在 t2 执行 select * from tt
6. 在 t1 执行 insert into tt  values(1, 'haha')
7. 在 t2 再次执行 select * from tt,是看不到数据的。
8. 在 t2 执行 update tt set name='hehe' where id=1
9. 在 t2 再再次执行 select * from tt,居然看到 id=1 那条 hehe 了!
10. 我们幻读了......

参考自:
http://blog.bitfly.cn/post/mysql-innodb-phantom-read/

原作者写得非常好


posted on 2011-08-02 17:59 哈哈的日子 阅读(1455) 评论(4)  编辑  收藏

FeedBack:
# re: MySQL 的幻读 2013-06-17 14:57 kelu
第8步中的更新语句根本不能执行,会提示等待锁释放,t1中insert的行还没有提交,t1还会继续持有该行上的写锁,会导致第8步的超时最终导致更新失败,所以不会导致幻读  回复  更多评论
  
# re: MySQL 的幻读 2013-07-02 17:03 haiquan
@kelu 同意
  回复  更多评论
  
# re: MySQL 的幻读 2013-07-23 16:50 哈哈的日子
@kelu
你说得对,谢谢。实际上是这样的,我后来才发现,其实是某个固定版本号的 MySQL 的 Bug。  回复  更多评论
  
# re: MySQL 的幻读 2015-12-04 18:06 sh
你应该把文章删掉,不要危害社会,@haiquan
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: