Flink CDC中pgsql cdc在什么情况下会整表查询呢,这个表有400万数据?

Flink CDC中pgsql cdc在什么情况下会整表查询呢,这个表有400万数据?image.png

展开
收起
真的很搞笑 2023-11-16 08:07:44 123 分享 版权
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink CDC的pgsql cdc connector在进行数据同步时,通常会根据主键来分割chunk,并且只查询变更的数据。因此,在正常情况下,不会对整表进行查询。
    但是,如果你使用了Flink CDC的全量同步功能(即includeSchemaChanges参数设置为true),那么在第一次同步时会对整个表进行查询,以获取表的完整结构信息。这是因为Flink CDC需要知道表的所有列以及它们的数据类型等信息,以便正确地进行数据同步。
    对于一个有400万数据的大表来说,全量同步可能会消耗大量的时间和资源。因此,在实际使用中,我们建议尽量避免全量同步,而是采用增量同步的方式来进行数据同步。如果确实需要全量同步,可以考虑使用分批次的方式进行,以减少一次性查询的数据量。

    2023-11-16 13:18:36
    赞同 1 展开评论
  • 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可能会执行全表查询以进行初始数据的获取。但在使用过程中,需要注意相关的版本限制和作业运行的稳定性问题。

    2023-11-16 10:09:20
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理