如何提高包含 LOB 数据的 AWS DMS 任务的速度?

1 分钟阅读
0

我的 AWS Database Migration Service (AWS DMS) 迁移任务很慢。我想提高包含大对象 (LOB) 数据的 AWS DMS 任务的速度。

解决方法

完整 LOB 模式

使用完整 LOB 模式时,AWS DMS 会迁移 LOB,无论其大小如何。由于 AWS DMS 不知道要迁移的 LOB 数据的大小,所以 AWS DMS 一次只能迁移一个 LOB。这可能会让任务速度变慢。尽管迁移速度较慢,但 AWS DMS 不会截断数据。要提高使用完整 LOB 模式和多个表的任务性能,请确定数据库中最大 LOB 的大小。然后,如果最大的 LOB 大小不超过几兆字节,则使用受限 LOB 模式。

如果您的 LOB 大小超过了几兆字节,请使用完整 LOB 模式创建单独的 AWS DMS 任务。最佳做法是在新的复制实例上创建单独的任务来迁移这些表。

受限 LOB 模式

使用受限 LOB 模式时,需要指定 LOB 列数据的最大大小。这样一来,AWS DMS 就可以预分配资源并批量应用 LOB。如果 LOB 列的大小超过您在任务中指定的大小,则 AWS DMS 会截断数据。然后,AWS DMS 会向 AWS DMS 日志文件发送警告。在受限 LOB 模式下,性能会有所提高,但在运行任务之前,必须确定源上数据的最大 LOB 大小。然后,在使用受限 LOB 模式时,指定最大 LOB 大小参数。要处理该任务,最佳做法是为复制实例分配足够的内存。

内联 LOB 模式

使用内联 LOB 模式时,可以同时复制小型和大型 LOB。这样一来,您便可以在不截断数据或降低任务性能的情况下迁移 LOB。首先,为 InlineLobMaxSize 参数指定一个值,该值仅在完整 LOB 模式设置为 true 时才可用。AWS DMS 任务以内联方式传输小型 LOB,任务效率更高。然后,AWS DMS 会从源表中执行查找,以便在完整 LOB 模式下迁移超出指定大小的 LOB。但是,内联 LOB 模式仅在满载阶段起作用。

重要事项:指定任务设置时,必须设置 InlineLobMaxSize 参数。

 {  "TargetMetadata": {
    "TargetSchema": "abc",
    "SupportLobs": true,
    "FullLobMode": true,
    "LobChunkSize": 64,
    "LimitedSizeLobMode": false,
    "LobMaxSize": 0,
    "InlineLobMaxSize": 32,
    "LoadMaxFileSize": 0,
    "ParallelLoadThreads": 0,
    "ParallelLoadBufferSize": 0,
    "BatchApplyEnabled": false,
    "TaskRecoveryTableEnabled": false,
    "ParallelLoadQueuesPerThread": 0,
    "ParallelApplyThreads": 0,
    "ParallelApplyBufferSize": 0,
    "ParallelApplyQueuesPerThread": 0
  }

相关信息

迁移大型二进制对象 (LOB)

目标元数据任务设置

AWS Database Migration Service 的最佳实践

AWS 官方
AWS 官方已更新 7 个月前