有什么现实工程中的场景是需要可重复读RR才能做到,读已提交RC做不到的呢?

不明白RC这个理论上的东西有什么现实意义吗?
地球上有哪种业务需要“在一个事务内对一个记录读两次”吗?
访问过一次,数据都在客户端内存条里面了,何必发起比内存访问慢一百万倍的网络请求呢?

阅读 3.7k
2 个回答

你可以随便找个事务隔离的文章看看比如https://www.cnblogs.com/wyaok...,一般来说使用RC就行了,没必要使用RR.使用RR会理论上会增加锁表的几率.基本上大部分数据库默认隔离级别都是RC比如PostgreSQL、ORACLE、SQL Server和DB2,只有mysql因为历史遗留问题默认的事务隔离级别是RR,所以一般来说运维会调整mysql的事务隔离级别为RC,如图所示,隔离级别从上到下越来越大,也意味着执行的并发也越来越小.所占用的资源越来也高.
image.png

RC 提升了并发能力,但带来了“幻读”的可能,需要自己在业务层处理;RR 不幻读,但并发能力大幅降低。

早年没有互联网那么大并发量的项目时,RR 足够用了,还少操心。等到高并发项目上来以后,人们才发现 RR 有性能瓶颈的。

软件工程看取舍,没有银弹,不存在一个万能的解决方案。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题