专栏名称: 脚本之家
脚本之家(jb51.net)是国内专业的网站建设资源、脚本编程学习类网站,以后将为大家分享更多有用的信息,希望大家多多支持宣传。
目录
相关文章推荐
今天看啥  ›  专栏  ›  脚本之家

MySQL默认数据库隔离级别为什么是RR?而互联网大厂为什么把它修改为RC?

脚本之家  · 公众号  ·  · 2025-07-30 17:00
    

主要观点总结

本文主要讨论了mysql的数据库隔离级别,包括RR和RC的区别,mysql的主从复制,binlog日志的三种格式,mysql的默认数据库隔离级别为什么是RR,以及互联网大厂为什么把隔离级别设置为RC。

关键观点总结

关键观点1: RR和RC的区别

RR即可重复读隔离级别,在一个事务执行期间,无论其他事务如何修改数据,只要本事务未结束,多次读取同一数据集都会获得与事务开始时一致的结果。RC即读已提交,当前事务只能读取到其他事务提交的数据。RR解决了不可重复读的问题,但可能存在幻读。RC解决了脏读问题,但可能存在重复读和幻读问题。

关键观点2: mysql的主从复制

mysql的主从复制分为三步曲:主数据库写入binlog二进制文件,从数据库复制binlog到中继日志,从数据库执行中继日志中的sql语句。复制过程中需要注意主库的更新SQL、从库的连接、binlog的传输、以及从库的SQL线程执行更新事件。

关键观点3: binlog日志的三种格式

binlog日志有三种格式:Statement基于SQL语句的复制,Row基于行的复制,Mixed混合模式复制。每种格式有其优点和缺点,需要根据具体情况选择使用。

关键观点4: mysql的默认数据库隔离级别为什么是RR

MySQL早期只有statement这种binlog格式,如果mysql的数据库隔离级别设置为RC,在某些场景下可能导致数据不一致。因此,MySQL把数据库的默认隔离级别设置成了Repetable Read(RR),并通过加GAP锁来解决这个问题。

关键观点5: 阿里为什么把隔离级别设置为RC

互联网公司把数据库隔离级别改为RC主要是为了提升并发访问速度。在RC隔离级别中,不需要加Gap锁和Next-Key锁,只对需要修改的记录加行锁。而RR隔离级别中,由于加了Gap锁,增加了死锁的可能性。因此,在并发高的情况下,RC隔离级别的耗时相对较少。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照