MySQL5.7的并行复制
2024-10-07 10:40:38
MySQL5.6开始支持以schema为维度的并行复制,即如果binlog row event操作的是不同的schema的对象,在确定没有DDL和foreign key依赖的情况下,就可以实现并行复制。
社区也有引入以表为维度或者以记录为维度的并行复制的版本,不管是schema,table或者record,都是建立在备库slave实时解析row格式的event进行判断,保证没有冲突的情况下,进行分发来实现并行。
MySQL5.7的并行复制,multi-threaded slave即MTS,期望最大化还原主库的并行度,实现方式是在binlog event中增加必要的信息,以便slave节点根据这些信息实现并行复制。
MySQL 5.7的并行复制建立在group commit的基础上,所有在主库上能够完成prepared的语句表示没有数据冲突,就可以在slave节点并行复制。
关于MySQL5.7的组提交,我们要看下以下的参数:
mysql> show global variables like '%group_commit%';
+-----------------------------------------+-------+
| Variable_name | Value |
+-----------------------------------------+-------+
| binlog_group_commit_sync_delay | 0 |
| binlog_group_commit_sync_no_delay_count | 0 |
+-----------------------------------------+-------+
2 rows in set (0.00 sec)
binlog_group_commit_sync_delay这个参数控制着日志在刷盘前日志提交要等待的时间,默认是0也就是说提交后立即刷盘,但是并不代表是关闭了组提交,当设置为0以上的时候,就允许多个事物的日志同时间一起提交刷盘,也就是我们说的组提交。组提交是并行复制的基础,我们设置这个值的大于0就代表打开了组提交的延迟功能,而组提交是默认开启的。最大值只能设置为1000000微妙。
binlog_group_commit_sync_no_delay_count ,这个参数表示我们在binlog_group_commit_sync_delay等待时间内,如果事物数达到binlog_group_commit_sync_no_delay_count 设置的参数,就会触动一次组提交,如果这个值设为为0的话就不会有任何的影响。如果到达时间但是事物数并没有达到的话,也是会进行一次组提交操作的。
参考:https://www.cnblogs.com/shengdimaya/p/6972278.html
最新文章
- 一个语句创建Oracle所有表的序列
- echart所有汉字都显示中文,就echarts的toolbox注释显示乱码
- Windows-005-显示隐藏文件
- 准确率(Precision)、召回率(Recall)以及F值(F-Measure)
- iOS开发——UI_swift篇&;TableView自定义聊天界面
- JAXB - Annotations, Class Fields as Attributes: XmlAttribute
- sql知识点的积累和使用过的例子
- Otacle表查询
- java复习(1)---java与C++区别
- springmvc(四) springmvc的数据校验的实现
- 【java设计模式】【创建模式Creational Pattern】工厂方法模式Factory Method Pattern(多态性工厂模式Polymorphic Factory Pattern、虚拟构造子模式Virtual Constructor Pattern)
- js处理json js递归
- 访问远程的docker
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
- Java进阶(十二)JDK版本错误之Unsupported major.minor version 51.0(jdk版本错误)
- Python常用高级函数
- redis知识汇总
- .NET控件集ComponentOne 2018V3发布:新增图表动画及迷你图
- 【实战问题】【1】@PostConstruct 服务启动后加载两次的问题
- c语言-遍历pci设备(2)mmio访问
热门文章
- 8. golang 基本类型转换
- Python作图包含type3字体解决方案
- 分布式事务解决方案汇总:2PC、3PC、消息中间件、TCC、状态机+重试+幂等(转)
- Dire Wolf——HDU5115(区间DP)
- [项目实战]训练retinanet(pytorch版)
- Springboot 打jar包项目无法访问jsp问题解决方案
- django基础篇04-自定义simple_tag和fitler
- 2018 Web 开发者路线图[转载]
- linux 启动和关闭 MySQL
- @RequestBody、@RequestParam、@PathVariable区别与使用场景