美文网首页
事务隔离级别和幻读

事务隔离级别和幻读

作者: 西5d | 来源:发表于2018-03-15 21:49 被阅读141次

    事务特性有ACID 原子性,一致性,隔离性,持久性四个,英文对应atomicity,consistency,isolation,durability。隔离性单独来说有读未提交,读已提交,可重复读,串行化。以上是概念总结,下面根据实例做些解释。Innodb默认事务隔离级别是可重复读,但可重复读会有幻读的情况出现,幻读其实相对比较难理解,以下通过一个简单例子来说明,例子按步骤执行。
    首先,查看当前的事务隔离级别。
    show variables like '%isolation%';

    tx_isolation.png

    事务1开启,并查询数据总数

    tx11.png

    事务2开启,并查询总数


    tx21.png

    事务2添加记录,并查询总数


    tx22.png

    事务1,查询总数,可以看到数据量没变,因为事务2没有提交,目前为止是正确的。


    tx12.png
    事务2提交
    tx23.png

    事务1,查看总数并更新记录,此处是重点,可以看到count(*) 查的记录和实际更新的记录对不上,count(*)操作像是出现幻觉。


    tx13.png
    以上可以很清楚的看到所谓幻读是怎么产生的,除了串行化可以避免幻读,后续会介绍在RR下幻读的预防原理。

    相关文章

      网友评论

          本文标题:事务隔离级别和幻读

          本文链接:https://www.haomeiwen.com/subject/zkdkqftx.html