全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
数据集成

同步数据速度调优

更新时间:2017-06-29 21:11:19

同步数据速度调优

数据同步快慢一直是用户非常关心的问题,由于影响数据同步速度因素比较多,所以很多用户不能很好控制数据同步的速度,根据数据同步的流程,数据同步分成三个大部分:数据源端、数据集成、目标端 。根据这三个部分,分析数据同步慢的原因 。

影响同步速度过慢有以下几种情况,可以从下面几方面考虑:

1.数据源:

  • 数据源性能:CPU、内存、SSD 硬盘、网络、硬盘;
  • 数据源并发数高,数据库负载很高;
  • 网络:网络的带宽(吞吐量),网速.

2.数据同步

  • 传输速度设置 speed;
  • WAIT 资源;
  • Bytes 的设置,单个线程的 bytes=1048576,在网速比较敏感时,会出现超时现象,建议设置小一些;
  • 查询语句是否建索引 。

3.目的端

  • 目的数据库的性能:CPU、内存、SSD硬盘、网络、硬盘
  • 目的数据库负载很高
  • 网络:网络的带宽(吞吐量),网速

几种常见的数据同步过慢的场景

数据同步传输速度设置引起速度变慢并解释日志数率

问题现象:

导入 7G 数据到 MaxCompute 花费两个小时,若选择 10MB 的速度就会报堆栈溢出,只能选择 5MB,而实际导入速度只有 1.5MB 左右 。

分析解决:

配置的 5MBPS 表示最多 5 个线程并发执行同步任务,每个线程 1MBPS,这样整体作业最大速度是 5MBPS 。一个线程能否完成1MBPS的同步和数据库能力(数据获取能力)、网络情况相关,这个速度是数加同步中心提供的速度上限,不一定能完全达到 。速度越大占用的内存越大的 。

同步任务使用公共调度(WAIT)资源时一直在等待状态

问题现象:

在大数据开发套件中对任务运行测试时,出现任务一直等待状态,或好多测试任务都处于等待状态,而且还提示了系统内部错误 。任务执行完成等待了大概 800s,但是日志显示任务只运行了 18s,使用的是默认资源组,现在运行其他同步任务,也是 RDS 到 MaxCompute ,一共几百条数据,一直处于等待中 。

显示等待日志:2017-01-03 07:16:54 : State: 2(WAIT) | Total: 0R 0B | Speed: 0R/s 0B/s | Error: 0R 0B | Stage: 0.0%

分析解决:

使用的是公共调度资源,公共资源能力是受限的有很多项目都在使用,不只是单个用户的 2-3 个任务,用户任务实际运行 10 秒,但是延长到 800 秒,是因为用户的任务下发执行时,发现资源不足,在等待获取资源的 。

如果对于同步速度和等待时间比较敏感,建议在低峰期配置同步任务,一般晚上零点到 3 点同步任务比较多 。可以避开零点到3点这个时间段,这样等待资源的情况相对比较少 。

设置多个任务导入数据到同一张表如何提高同步速度

问题现象:

将多个数据源的表同步到一张表里,所以将同步任务设置成串行任务 。但是最后发现同步时间很长,同步一个小时的数据 。

分析解决:

可以同时启动多个任务,同时往一个数据库进行写入,参考以下几点

  • 要确保目标数据库负载能力是能够承受,避免不能正常工作 。
  • 在配置工作流任务,可以选择单个任务节点,配置分库分表任务或者在一个工作流中设置多个节点同时执行 。
  • 如果任务执行时,出现等待资源(WAIT)情况,可以低峰期配置同步任务,这样任务有较高的执行优先级 。

数据同步任务 where 条件没有索引,导致全表扫描同步变慢

问题现象:

执行的 sql 是:

  1. select bid,inviter,uid,createTime from `relatives` where createTime>='2016-10-2300:00:00'and reateTime<'2016-10-24 00:00:00';

从 2016-10-25 11:01:24.875 开始执行,到 2016-10-25 11:11:05.489 开始返回结果 。同步程序在等待数据库返回sql查询结果的,MaxCompute 等待很久的时间才能执行 。

优化建议:

从 where 条件查询,createTime 列没有索引,导致查询全表扫描了 。建议 where 条件使用有索引相关的列,提高性能,索引也可以补充添加的 。

本文导读目录