当前位置: 首页 > article >正文

mysql8的并行复制介绍

mysql8的并行复制介绍

一、写在前面

大家平时在维护数据库时,肯定遇到过主从复制延迟的问题。传统的复制方式是单线程按顺序执行,这就像排队买票,每个事务只能一个一个处理,遇上高并发场景,等待时间就会变长。为了解决这个问题,MySQL 从 5.6 版本起就开始支持多线程复制,而到了 MySQL8,更是把这个机制玩出了新花样——并行复制。今天就来聊聊这个话题,轻松理解背后的原理和实际应用。


二、MySQL8 并行复制的原理

1. 基础知识

在 MySQL 的复制架构中,主库会把所有的数据变动记录在 binlog(binary log)中,从库再根据这些日志更新数据。传统复制中,从库会按照 binlog 记录的顺序逐条执行事务,就像一列人依次通过闸机,而并行复制则是找出那些互不干扰的事务,让它们同时“闯关”,从而大幅度提升效率。

2. 并行复制如何做到“分组闯关”

MySQL8 并行复制的核心在于对事务依赖关系的判断,主要有两种模式来决定事务能否并行执行:

  • DATABASE 模式(默认)
    系统认为同一数据库内的事务可能有关联,所以这些事务必须按顺序执行;而操作不同数据库的事务可以同时执行。例如:

    • 事务 A 更新 db1.t1
    • 事务 B 更新 db2.t2
      因为操作的数据库不同,它们就可以并行执行。
  • LOGICAL_CLOCK 模式
    这种模式下,不仅仅以数据库作为判断依据,而是引入了一种“逻辑时钟”的机制。每个事务在提交时都会带上一个逻辑时钟值,这个值反映了事务的执行顺序。即使两个事务操作同一个数据库,只要逻辑时钟检测到它们之间不存在冲突,也可以允许并行执行。这样可以更精细地利用系统资源,提高并发处理能力。

3. 事务调度的小秘密

在实际运行时,从库有一个专门的主线程读取 relay log(中继日志),然后将事务分发到多个工作线程。每个线程负责执行一组无依赖的事务。整个过程会检查事务的“标识符”(比如操作的数据库、表信息或者逻辑时钟值):

  • 如果两个事务涉及相同的标识符(比如同一数据库,或者在 LOGICAL_CLOCK 模式下逻辑时钟判断出有依赖),后面的事务就要等待前面的事务提交;
  • 否则,它们就可以同时执行。

这种机制既保证了数据的一致性,又让从库能更充分地发挥多核 CPU 的性能。


三、优缺点全解析

优点

  • 显著提升性能
    并行执行无依赖事务,能让从库在高并发场景下大幅度降低复制延迟,就像多个窗口同时办理业务,效率翻倍。

  • 更高的资源利用率
    多线程机制让 CPU、磁盘 I/O 能同时得到利用,避免了单线程复制中资源闲置的情况。

  • 灵活配置
    通过调整 slave_parallel_workers(指定工作线程数)和 slave_parallel_type(复制模式),DBA 可以根据业务特点进行调优,达到最佳效果。

缺点

  • 额外的依赖检测开销
    在进行事务依赖判断时,会消耗一些额外的 CPU 资源,特别是在事务依赖复杂时,检测的成本会增加。

  • 部分事务无法并行
    即便在 LOGICAL_CLOCK 模式下,某些看似独立的事务由于依赖关系被判定为相关,仍需顺序执行,从而限制了并行带来的性能提升。

  • 调试与监控较为复杂
    多线程和依赖检测机制使得故障排查和性能调优需要更多经验和细致的监控手段。



http://www.kler.cn/a/535250.html

相关文章:

  • RFID隧道机:提升生产流水线效率与精准度
  • 3.5 Go(特殊函数)
  • 数字人|通过语音和图片来创建高质量的视频
  • Mac M1 ComfyUI 中 AnyText插件安装问题汇总?
  • 基于SpringBoot的信息技术知识赛系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • [c语言日寄]赋值操作对内存的影响
  • Git 远程仓库的操作与协作
  • 离散浣熊优化算法(DCOA)求解大规模旅行商问题(Large-Scale Traveling Salesman Problem,LTSP),MATLAB代码
  • 基于Typescript,使用Vite构建融合Vue.js的Babylon.js开发环境
  • 2025年Android NDK超全版本下载地址
  • Pycharm 2024版本出现 We could not validate your license怎么办?解决方法一步到位!
  • 疯狂SQL转换系列- SQL for Milvs2.4
  • GD32F4xx系列微控制器中,定时器可以配置为霍尔传感器模式,用于处理霍尔传感器的输出信号
  • GNN多任务预测模型实现(二):将EXCEL数据转换为图数据
  • 数据实时推送至前端的主流方法总结
  • 为何实现大语言模型的高效推理以及充分释放 AI 芯片的计算能力对于企业级落地应用来说,被认为具备显著的研究价值与重要意义?
  • 面向对象程序设计-实验1
  • 快速单机部署ollama v0.5.7 +openwebui(免去网络环境干扰)
  • 【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)
  • 下标为3的倍数
  • 解锁C#数据校验:从基础到实战的进阶之路
  • 日志模块自定义@SkipLogAspect注解跳过切面
  • 三格电子-单串口服务器说明
  • [paddle] 矩阵乘法
  • 高性能音频分析仪,音频分析器、国产音频分析仪
  • QUIC协议详解