使用读已提交的好处:

    • 缘由一:在RR隔离级别下,存在间隙锁,导致出现死锁的几率比RC大的多!
    • 缘由二:在RR隔离级别下,条件列未命中索引会锁表!而在RC隔离级别下,只锁行
    • 缘由三:在RC隔离级别下,半一致性读(semi-consistent)特性增加了update操作的并发性!

      所谓半一致性读就是,一个update语句,如果读到一行已经加锁的记录,此时InnoDB返回记录最近提交的版本,由MySQL上层判断此版本是否满足update的where条件。若满足(需要更新),则MySQL会重新发起一次读操作,此时会读取行的最新版本(并加锁)! 即update时where age > 10,当遍历到id=50时,这一页正在被锁,那么就读它的旧版本,然后取消掉这个锁,如果旧版本就是满足age> 10,那就再次读取,再次上锁读取数据,如果不满足,就直接读该旧版本。

    那读已提交的不可重复读不用解决吗?
    不用解决,这个问题是可以接受的!毕竟你数据都已经提交了,读出来本身就没有太大问题!Oracle的默认隔离级别就是RC。