在配置遷移到Kafka的數據遷移任務時,為提升遷移的性能,您可以調整Kafka Partition(分區)遷移策略,例如根據Hash結果將數據遷移至不同的Partition。

Hash算法

DTS采用Java默認的hashcode算法來計算Hash值。

配置方法

您需要在配置數據遷移任務的遷移類型及列表環節中配置Kafka Partition遷移策略。配置案例請參見從自建Oracle遷移至阿里云消息隊列Kafka,更多相關案例請參見遷移方案概覽

警告 數據遷移任務啟動后,請勿修改目標Topic的Partition數量,否則將導致數據遷移失敗。

策略說明

策略名稱說明優缺點
全部遞到Partition 0將所有數據和DDL信息都投遞到目標Topic的Partition 0。
  • 優勢:所有對象的創建、更改順序都和源庫保持一致。
  • 缺點:性能一般。
按庫名+表名的hash值投遞到不同Partition將庫名與表名合并作為Partition Key來計算Hash值,然后將各個表的數據和DDL信息投遞到目標Topic中的各個Partition。
說明
  • 同一個表的數據和DDL信息會投遞到同一個Partition。
  • 與表無關的DDL信息(例如CREATE DATABASE)則投遞到Partition 0。
  • 優勢:單個表的創建、變更順序和源端保持一致,性能較好。
  • 缺點:由于不同的表投遞到不同的Partition,表與表之間的先后順序無法保證。
按主鍵的hash值投遞到不同Partition將表中的列(默認為主鍵,如果無主鍵則使用唯一鍵)作為Partition Key來計算Hash值,然后將不同的行投遞到目標Topic的各個Partition中。您也可以指定單個或多個列作為Partition Key來計算Hash值。
說明
  • 此策略下,DDL信息默認投遞到目標Topic的Partition 0中。
  • 如果表沒有主鍵和唯一鍵,DTS會將其數據和DDL信息都投遞到目標Topic的Partition 0。
  • 優勢:該策略性能最好。
  • 缺點:只能保證單條記錄的變更的先后順序,無主鍵表以及多張表之間的先后順序無法保證。