DataMover 性能实测:500万行单表同步基准与扩展方式
本文记录 DataMover 在单表单任务场景下的基准测试:MySQL 到 MySQL 全量同步 500 万行、约 2GB 数据,4 核 8GB Worker 环境约 2 分钟完成。这个数据用于评估基准能力,实际吞吐还取决于服务器配置、源库负载、网络和目标端写入能力。
一、测试环境
| 配置项 | 详情 |
|---|---|
| 测试场景 | MySQL 到 MySQL 全量一次性同步,单表单任务 |
| 源表结构 | 25 个字段(含 int、varchar、datetime、text 等常见类型) |
| 数据量 | 500 万行 |
| 数据大小 | 2 GB |
| 目标表索引 | 仅主键,无二级索引 |
| Worker 配置 | 4 核 8GB,JVM 堆内存 4GB |
| 网络环境 | 内网环境 |
📷 图:测试环境架构图 位置:blog/DataMover性能实测/1-测试环境.png
二、测试结果
| 指标 | 结果 |
|---|---|
| 同步耗时 | 2 分钟 |
| 吞吐量 | 约 4.17 万行/秒 |
| 网络吞吐 | 约 17 MB/秒 |
| CPU 使用率 | 约 60-70% |
| 内存使用 | 约 3.2 GB |
📷 图:性能测试数据图 位置:blog/DataMover性能实测/2-性能数据.png
三、性能表现分析
3.1 写入效率
目标表无二级索引时,INSERT 操作无额外索引维护成本,写入效率达到最优。测试中单批次写入 1000 行,平均耗时约 24ms。
📷 图:写入性能曲线 位置:blog/DataMover性能实测/3-写入曲线.png
3.2 网络传输
2GB 数据在 2 分钟内完成传输,平均网络吞吐约 17 MB/s。这在大多数企业内网环境中是稳定的表现。
📷 图:网络吞吐监控 位置:blog/DataMover性能实测/4-网络吞吐.png
3.3 资源利用率
Worker 节点 CPU 和内存使用稳定,无明显波动:
- CPU 利用率:60-70%
- 内存占用:约 3.2GB(含 JVM 堆 4GB)
📷 图:资源监控图 位置:blog/DataMover性能实测/5-资源监控.png
四、影响性能的关键因素
4.1 目标表索引数量
| 目标表索引 | 性能影响 |
|---|---|
| 无二级索引 | 基准性能(100%) |
| 1个二级索引 | 下降约 20% |
| 2个二级索引 | 下降约 30% |
| 3个以上 | 下降约 40%+ |
📷 图:索引与性能关系图 位置:blog/DataMover性能实测/6-索引影响.png
建议:同步前临时移除目标表索引,同步后再重建,可显著提升性能。
4.2 网络带宽
网络是数据传输的瓶颈之一:
- 带宽越大,吞吐越高
- 源端 → Worker → 目标端构成传输路径
| 网络带宽 | 预期吞吐 |
|---|---|
| 100Mbps | 约 10 MB/s |
| 1Gbps | 约 100 MB/s |
| 10Gbps | 约 1 GB/s |
4.3 字段宽度
宽表(如包含 TEXT/BLOB)单行数据大,吞吐量(行/秒)会相应降低。
| 字段类型 | 单行大小 | 吞吐量影响 |
|---|---|---|
| 简单字段 | < 1KB | 标准 |
| 含 TEXT | 1-5KB | 下降 30% |
| 含 BLOB | > 5KB | 下降 50%+ |
4.4 Worker 资源配置
| 配置 | 并发能力 | 批次缓存 |
|---|---|---|
| 2核4G | 100 任务/节点 | 100MB |
| 4核8G | 100+ 任务/节点 | 200MB |
| 8核16G | 200+ 任务/节点 | 500MB |
📷 图:资源配置建议表 位置:blog/DataMover性能实测/7-资源配置.png
4.5 源端读取性能
源库负载和索引设计直接影响数据读取速度:
- 源库 CPU 负载 > 80% 时,读取速度下降
- 缺少主键/索引,全表扫描影响性能
五、性能调优建议
5.1 目标表优化
-- 同步前:移除索引
ALTER TABLE target_table DROP INDEX idx_field1;
-- 同步后:重建索引
ALTER TABLE target_table ADD INDEX idx_field1 (field1);
5.2 JVM 参数调优
# 生产环境推荐 JVM 参数
-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
5.3 任务参数调优
| 参数 | 默认值 | 调优建议 |
|---|---|---|
| batchSize | 1000 | 大数据量可调至 2000-5000 |
| fetchSize | 100 | 网络差可调小 |
| parallelism | 1 | CPU 空闲时可增加 |
📷 图:参数调优界面 位置:blog/DataMover性能实测/8-参数调优.png
六、怎么看这个性能数据
500 万行约 2 分钟不是万能结论,它只说明在这组测试条件下,DataMover 的单任务全量同步能力可以满足常见初始化、迁移验证和中小规模全量同步需求。
是否达到“主流工具标准”,不能只看单个数字。更合理的判断方式是把源库负载、目标库写入能力、字段宽度、索引数量、网络带宽、并发任务数放在同一个测试环境里比较。
如果服务器配置更高,可以同时启动多个同步任务;也可以水平部署多个 Worker,把不同任务分配到不同节点执行。这样提升的是整体吞吐,而不是单个任务的孤立数字。
七、适用场景
DataMover 的性能表现适用于:
- ✅ 数据迁移:一次性全量数据迁移
- ✅ 数据初始化:新系统上线初始数据同步
- ✅ 周期性全量同步:定期全量刷新
- ✅ 中小表实时同步:<1000万行表
对于更大数据量(千万级+),建议:
- 使用 CDC 增量同步
- 分批次同步
- 增加 Worker 节点
八、总结
这次测试可以作为 DataMover 的单表单任务基准:4 核 8GB Worker、MySQL 到 MySQL、25 字段、500 万行约 2GB 数据,约 2 分钟完成。
关键性能指标:
- 同步耗时:约 2分钟
- 吞吐量:约 4.17万行/秒
- 网络吞吐:17 MB/秒
- 资源占用:< 2GB
- 扩展方式:并行任务 + 多 Worker 水平部署
如果你有大规模数据迁移需求,建议先用自己的源库、目标库和网络环境跑一组基准测试。免费版不限制数据量,也支持 CDC,可以先从小规模验证开始。
- 官网:https://datamover.cn
- 下载:https://datamover.cn/download.html
- QQ群:1081115584
相关同步方案
除了数据迁移同步解决方案,DataMover还支持以下场景:
常见问题解答
数据迁移是否支持全量和增量?
DataMover的普通任务支持全量一次性同步和基于字段的增量同步。
增量同步和实时同步有什么区别?
增量同步延迟分钟级,实时同步(CDC)可达秒级延迟,能捕获所有数据变更。
CDC同步对源数据库性能影响多大?
采用无锁读取方式,对源库性能影响极小。
免费社区版能同步多少数据?
免费社区版不限制数据量,限制3个同步任务和1个执行节点。
开始配置 DataMover 同步任务
下载 DataMover 后,可按文档完成数据源、表映射、同步策略、任务启动和执行结果校验。