在配置同步到Kafka的数据同步作业时,为提升同步的性能,您可以调整Kafka Partition(分区)同步策略,例如根据Hash结果将数据同步至不同的Partition。

Hash算法

DTS采用Java默认的hashcode算法来计算Hash值。

配置方法

您需要在配置数据同步作业的选择同步对象环节中配置Kafka Partition同步策略。配置案例请参见从RDS同步至自建Kafka集群,更多相关案例请参见DTS数据同步方案概览

警告 数据同步作业启动后,请勿修改目标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。
  • 优势:该策略性能最好。
  • 缺点:只能保证单条记录的变更的先后顺序,无主键表以及多张表之间的先后顺序无法保证。