首页/数据/数据库速查/大事务对复制的冲击与治理
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条
主从复制与高可用53 条
性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

大事务对复制的冲击与治理

大事务(批量 DELETE/UPDATE、大 LOAD)在从库单线程重放成分钟级延迟,且放大 relay 与锁等待;治理核心是业务侧拆批与限流。

数据库速查数据更新于 2026-10-12
症状延迟阶梯跳升;relay 暴涨;从库锁等待高
机制事务不可分割:并行复制也无法拆开单个大事务
治理批处理拆分(1000-5000 行/批)、控制批量窗口、避免长事务

批处理拆分示例

批处理拆分示例
-- 反例:一次删 500 万行(从库要单线程啃完)
DELETE FROM logs WHERE created_at < '2026-01-01' LIMIT 5000000;
-- 正例:循环小批
DELETE FROM logs WHERE created_at < '2026-01-01' LIMIT 2000;
-- 重复执行直到 affected rows = 0(脚本循环)
大事务还会拖长主库提交与备份窗口;治理收益是全局的。

易错点

  • 大事务期间从库延迟指标都不更新:看起来「没延迟」,实际重放要跑十分钟
  • LIMIT 拆批不注意索引:每批都全表扫,越拆越慢

数据来源与参考

  • MySQL 8.0 Reference Manual: Replication and Transactions

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌