主要观点总结
本文主要讨论了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隔离级别的耗时相对较少。
免责声明
免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。
原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过
【版权申诉通道】联系我们处理。