AWS Database Migration Service (AWS DMS) の移行タスクが低速になっているため、ラージバイナリオブジェクト (LOB) データを含む AWS DMS タスクの速度を改善したいです。
解決策
Full LOB モード
Full LOB モードを使用する場合、AWS DMS はサイズに関係なく LOB を移行します。LOB の最大サイズは定義されていないため、AWS DMS は LOB を 1 つずつ移行します。この動作が原因で、タスクが低速になる可能性があります。移行の速度は低下するものの、AWS DMS はデータを切り捨てません。
複数のテーブルを持つ Full LOB モードを使用するタスクのパフォーマンスを改善するには、まずデータベース内の最大 LOB サイズを特定します。次に、最大 LOB サイズが数 MB 以内である場合は、Limited LOB モードを使用します。
数 MB を超える LOB が含まれる場合は、Full LOB モードで別の AWS DMS タスクを作成します。テーブルを移行するには、新しいレプリケーションインスタンスに個別のタスクを作成することをおすすめします。
Limited LOB モード
Limited LOB モードを使用する場合は、LOB 列データの最大サイズを指定します。このモードでは、AWS DMS はメモリを割り当て、LOB を一括適用できます。LOB 列のサイズがタスクで指定したサイズを超える場合、AWS DMS はデータを切り捨てます。その後、AWS DMS は AWS DMS ログファイルに警告を送信します。
Limited LOB モードを使用するとパフォーマンスは向上しますが、タスクを実行する前に、ソースにおけるデータの最大 LOB サイズを特定する必要があります。次に、Limited LOB モードを使用する場合は、Max LOB size パラメータを指定します。タスクを処理するために、十分なメモリをレプリケーションインスタンスに割り当てることをおすすめします。
Inline LOB モード
インライン LOB モードを使用すると、小さい LOB と大きい LOB の両方がレプリケートされます。このモードでは、データを切り捨てたり、タスクのパフォーマンスを低下させたりすることなく、LOB を移行できます。
まず、InlineLobMaxSize パラメータの値を指定します。このパラメータは、[Full LOB モード] が true の場合のみ設定できます。AWS DMS タスクは小規模 LOB をインラインで転送するため、タスクの効率を改善できます。次に、AWS DMS は、ソーステーブルからルックアップを実行して、完全 LOB モードで指定されたサイズを超える LOB を移行します。ただし、インライン LOB モードは完全ロードフェーズでのみ機能します。
重要: タスク設定の指定時に、InlineLobMaxSize パラメータを設定する必要があります。
タスク設定 JSON ファイルの例:
{ "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 のベストプラクティス