Dataworks-切分键和并发数

1、切分键

数据集成任务上提供了一个切分键的设置,那么该切分键是否可以对源库SQL查询有一定的提升,进而提高数据同步任务的整体效率呢?

切分键:(1)可以将源数据表中某一列作为切分键,建议使用主键或有索引的列作为切分键,因为为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。

              (2)目前splitPk仅支持整型数据切分,不支持字符串、浮点、日期等其他类型。如果您指定其他非支持类型,忽略splitPk功能,使用单通道进行同步。

               (3)如果不填写splitPk,包括不提供splitPk或者splitPk值为空,数据同步视作使用单通道同步该表数据 。

  • 切分(拆分)任务
  此阶段将源端待同步数据切分为多个task,以便并发、分批进行读取数据,切分规则如下:

  (1)关系型数据库:按照您在界面配置时指定的切分键splitPk,作为切分依据,将待同步数据切分为多个task,通过并发分批读取切分的task。若未设置切分键,将通过单并发同步任务。

  (2)LogHub/DataHub/Mongodb:按照shard数进行切分,任务并发上限不超过shard数。

  (3)半结构化存储:按照文件数或文件数据量进行切分。例如,OSS任务并发上限不超过文件数。

  • 设置切分键时,SQL如何执行?

(1)、查询切分键的最大最小值范围

SELECT MIN(id),MAX(id) FROM `shardkey`;

(2)、根据切分键范围进行切分,范围割接左闭右开,max值时左闭右闭,除范围查询外增加切分键is null的查询,避免遗漏数据

1)根据min/max进行范围切分
select xxx,xxx from `shardkey` where (1 <= id AND id < 19923)
select xxx,xxx from `shardkey` where (19923 <= id AND id < 39845)
......
select xxx,xxx from `shardkey` where (179299 <= id AND id <= 199221)
2)查询切分键 is null的情况
select xxx,xxx from `shardkey` where id IS NULL

(3)、按照最大并发数进行并发查询(实际并发数<=任务最大期望并发数)

在任务执行时可通过在数据库执行show processlist进行监控查看

 

 

2、并发数

(1)不设置并发数时,默认只启动一个task运行任务。

(2)设置并发数时,每个并发会启动5个task,总共启动的task数为:并发数*5 + 1 。

 

posted @ 2023-08-28 16:09  业余砖家  阅读(421)  评论(0)    收藏  举报