是关于mysql数据库的事务隔离级别的。1. 为什么可重复读隔离级别,可以避免提交读的两次读取结果不一样的问题?是什么原理2 .  mysql的事务是自动使用并发版本控制吗,还是需要手动的设置。如果需要手动设置,如何设置呢3. 如果并发版本控制是自动使用的,为什么hibernate的乐观锁要手动设置,MySQL数据库

解决方案 »

  1.   

    1.通过MVCC来实现的,判断事务版本号与行版本号,确保行是在事务开始前是存在的
    2.是自动使用的,但只有在REPEATABLE READ和READ COMMITED级别下
    3.为了保持数据有效性,有些情况下必须自己控制锁, hibernate乐观锁避免了在db上的锁操作,提高了并发性
      

  2.   


    非常感谢啊。你这么说我就有点糊涂了:
    在REPEATABLE READ和READ COMMITED级别下使用mvcc,那为什么READ COMMITED会发生两次读的结果不一样呢?
      

  3.   

    应该是不同的隔离级别,mvcc实现得不一样。。结贴给分你了。谢谢