Dataworks-切分键和并发数
数据集成任务上提供了一个切分键的设置,那么该切分键是否可以对源库SQL查询有一定的提升,进而提高数据同步任务的整体效率呢?
切分键:(1)可以将源数据表中某一列作为切分键,建议使用主键或有索引的列作为切分键,因为为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。
(2)目前splitPk仅支持整型数据切分,不支持字符串、浮点、日期等其他类型。如果您指定其他非支持类型,忽略splitPk功能,使用单通道进行同步。
(3)如果不填写splitPk,包括不提供splitPk或者splitPk值为空,数据同步视作使用单通道同步该表数据 。
- 切分(拆分)任务
(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 。
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/articles/17662618.html

浙公网安备 33010602011771号