
# DRS增量阶段时延增高可能原因
#### 问题现象
DRS在进行增量迁移或同步时，任务出现延迟高的现象。
#### 可能原因
- 原因1：全量阶段刚结束，增量迁移延迟高。全量迁移过程中，源库增量数据还在不断地写入，DRS需要在全量结束之后，将这部分增量数据同步到目标端去，因此时延较高。
- 原因2：源库有大批量数据变更(导入、更新、删除)。大事务写入在源库执行时间本来就很长，而DRS把数据同步到目标库也需要一段时间，所以此时延迟会慢慢增加，如果此大事务的表没有主键或者索引，恢复时间会相应拉长。
- 原因3：源库存在大批量DDL操作，DDL执行比较慢，同步到目标导致时延增高。
- 原因4：DRS任务规格限制。DRS不同规格对应的性能上限不同，详细可参考[规格说明](https://support.huaweicloud.com/productdesc-drs/drs_01_0313.html)，当源库数据写入量过大达到瓶颈时，就会导致任务出现延迟。
- 原因5：目标库规格受限，达到写入瓶颈。以目标实例为RDS for MySQL为例，用户可以在RDS控制台查看数据库性能指标。
- 原因6：可能存在热点更新。无主键表的写入会导致热点更新，源库对单一表或单一行的高频更新也会导致热点更新，从而导致时延增大。以RDS for MySQL为例，可以通过RDS的审计日志进行确认，详情可参考[RDS审计日志](https://support.huaweicloud.com/productdesc-rds-mysql/rds_01_0056.html)。
- 原因7：网络不稳定导致的时延增大。
 
#### 解决方法
- 解决方法1：针对这种情况，DRS会自动追平时延，无需处理，用户可观察增量时延是否降低。
- 解决方法2：存在大事务写入的情况时，等待更新完毕，或者从业务上考虑尽量避免大事务写入的情况。用户可查看源库执行历史，看是否有大事务的写入，同时可以在目标库查看DRS数据回放情况。以MySQL为例，可执行show processlist查看。
- 解决方法3：源库应尽量避免执行批量DDL，如果必须执行DDL，请尽量在业务低峰期执行。
- 解决方法4：重新创建任务，选择较大规格提升同步性能（目前，DRS同步仅支持任务类型为单AZ的同步任务升级实例规格，不支持降低规格，具体操作及约束限制可参考[同步规格变更](https://support.huaweicloud.com/realtimesyn-drs/drs_11_0490.html)）。
- 解决方法5：升级目标库的实例规格，提高目标库实例写入性能。以目标实例为RDS for MySQL为例，参考[变更规格](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_topic_scale_rds.html)，升级实例配置。
- 解决方法6：如果存在热点更新，需要等待热点更新完毕，或者从业务上尽量避免热点更新。
- 解决方法7：网络延迟无法避免，用户可以通过专线网络接入源库和目标库实例减少延迟。
 
