有什么样的业务,必须要用RC隔离级别,所以迫不得已去改数据库的隔离级别吗?
1、RC 与 RR 在锁方面的区别
3、 RC 与 RR 在一致性读方面的区别
RC隔离级别时事务中的每一条select语句会读取到他自己执行时已经提交了的记录也就是每一条select都有自己的一致性读ReadView; 而RR隔离级别时事务中的一致性读的ReadView是以第一条select语句的运行时作为本事务的一致性读snapshot的建立时间点的。只能读取该时间点之前已经提交的数据。
4、RC 支持半一致性读RR不支持
RC隔离级别下的update语句使用的是半一致性读(semi consistent)而RR隔离级别的update语句使用的是当前读当前都会发生锁的阻塞。
而半一致性读可以减少了update语句时行锁的冲突对于不满足update更新条件的记录可以提前放锁减少并发冲突的概率。
总的而言,当你某些表涉及到搞并发,比如钱包表,流水表这种情况容易造成死锁,
你可以看看这篇文章了解一下RR与RC的区别https://zhuanlan.zhihu.com/p/442465757
3 回答3.7k 阅读✓ 已解决
5 回答1.5k 阅读
2 回答2.1k 阅读
3 回答2.1k 阅读
1 回答962 阅读
1 回答637 阅读✓ 已解决
1 回答926 阅读
有什么样的业务,必须要用RC隔离级别?——需要读已提交的业务
必须用rc是相对读未提交而言,不是相对可重复读,你需要读已提交就用读已提交
默认用rc就行
比如django,不管你用 pgsql 还是 mysql,都默认改成rc
如果你需要重复读,就改成可重复读