Flink CDC中pgsql cdc在什么情况下会整表查询呢,这个表有400万数据?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Flink CDC的pgsql cdc connector在进行数据同步时,通常会根据主键来分割chunk,并且只查询变更的数据。因此,在正常情况下,不会对整表进行查询。
但是,如果你使用了Flink CDC的全量同步功能(即includeSchemaChanges参数设置为true),那么在第一次同步时会对整个表进行查询,以获取表的完整结构信息。这是因为Flink CDC需要知道表的所有列以及它们的数据类型等信息,以便正确地进行数据同步。
对于一个有400万数据的大表来说,全量同步可能会消耗大量的时间和资源。因此,在实际使用中,我们建议尽量避免全量同步,而是采用增量同步的方式来进行数据同步。如果确实需要全量同步,可以考虑使用分批次的方式进行,以减少一次性查询的数据量。
Flink CDC在同步PostgreSQL数据库时,会判断表是否支持CDC。如果支持,那么在启动阶段,Flink CDC会执行一次全量快照来获取该表的初始数据。然后,在之后的同步过程中,Flink CDC通过不断读取WAL(Write-Ahead Log)日志来捕获表中的数据变更,并实时同步到下游系统。
对于具有大量数据(例如400万条记录)的表,整表查询通常发生在启动阶段的全量快照中。这个阶段的目的是获取表中的所有数据作为初始状态,以便后续能够准确地捕获和同步数据变更。然而,值得注意的是,从Flink 2.0版本开始,Postgres的CDC连接器仅在VVR 2.0及以上版本中得到支持。而且,Postgres CDC不支持在全表扫描阶段执行Checkpoint。因此,如果在全表扫描阶段触发了Checkpoint操作,可能会导致作业因Checkpoint超时而失败。
总的来说,对于大数据量的表,Flink CDC可能会执行全表查询以进行初始数据的获取。但在使用过程中,需要注意相关的版本限制和作业运行的稳定性问题。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。