Flink CDC这个表 才 7万多行,是不是可以优化一下split的参数?Execute ScanFetchTask for split: SnapshotSplit{tableId=rls_schema.t_bd_materialgroup, splitId='rls_schema.t_bd_materialgroup:843', splitKeyType=[fdbid
BIGINT NOT NULL], splitStart=[1653290424519647393], splitEnd=[1653301491019184407], highWatermark=null}
rls_schema.t_bd_materialgroup
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的信息,Flink CDC 表的数据量为 7 万多行,当前的 split
参数可能需要优化以提升性能。以下是针对该问题的详细分析和优化建议:
在 Flink CDC 中,表数据会被分成多个分片(chunk),每个分片会通过主键字段进行划分并逐个读取。如果分片大小设置不合理,可能会导致内存占用过高或任务执行效率低下。
scan.incremental.snapshot.chunk.size
scan.incremental.snapshot.chunk.size
的值,例如设置为 5000
或 10000
,以确保每个分片的数据量适中。/*+ OPTIONS('scan.incremental.snapshot.chunk.size'='5000') */
scan.incremental.snapshot.chunk.key-column
指定一个分布更均匀的字段作为分片字段。/*+ OPTIONS('scan.incremental.snapshot.chunk.key-column'='fdbid') */
如果分片数据量较大,可能会导致 TaskManager 出现 OOM 问题。可以通过以下方式优化内存配置:
taskmanager.memory.process.size
的值。taskmanager.memory.process.size: 4g
为了进一步提升性能,可以优化 Checkpoint 和 State 相关参数:
300s
。execution.checkpointing.interval: 300s
129600000ms
(36 小时)。table.exec.state.ttl: 129600000
如果作业中包含多张 MySQL 源表,建议开启 Source 复用功能,以减少 Binlog 连接数,降低数据库压力。
SET 'table.optimizer.source-merge.enabled' = 'true';
table.exec.mini-batch.enabled: true
table.exec.mini-batch.allow-latency: 5s
COUNT DISTINCT
,且存在热点问题,可以开启 PartialFinal 优化。table.optimizer.distinct-agg.split.enabled: true
针对您提到的 7 万多行的 Flink CDC 表,建议从以下几个方面进行优化: 1. 调整 scan.incremental.snapshot.chunk.size
和 scan.incremental.snapshot.chunk.key-column
参数,优化分片策略。 2. 增加 TaskManager 内存或升级 Flink 版本,避免 OOM 问题。 3. 优化 Checkpoint 和 State 配置,提升任务稳定性和性能。 4. 开启 Source 复用功能,减少 Binlog 连接数。 5. 根据实际需求,启用 Mini-Batch 和 PartialFinal 优化。
通过以上优化措施,可以显著提升 Flink CDC 表的读取效率和任务稳定性。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。