开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC 中在获取mysql 表数据的时候,如果多张表 join 时全量获取数据吗?

ink CDC 中在获取mysql 表数据的时候,如果多张表 join 时全量获取数据还是 一批 一批获取数据? 设置debezium.min.row.count.to.stream.results 在Join能生效吗?

展开
收起
游客hpgeb64l4phve 2023-12-12 17:04:41 129 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink CDC是Flink社区开发的组件,用于从MySQL、Oracle、PostgreSQL等Flink CDC是Flink社区开发的组件,用于从MySQL、Oracle、PostgreSQL等数据库直接读取全量数据和增量变更数据。在join操作中,Flink CDC可以实现全量和增量数据一体化同步,首先读取数据库中表的历史全量数据,再无缝衔接到读取表的增量数据,为用户提供实时的、一致性的快照。

    对于debezium.min.row.count.to.stream.results参数,它控制在快照操作中,连接器为每个包含的表查询所有行产生的读取事件的数量。当表的条数大于该值时,会使用分批读取模式。这意味着,debezium.min.row.count.to.stream.results参数可以控制Flink CDC在执行join操作时,是否对数据进行全量获取,还是进行一批一批的获取。但注意,某些场景下,即便设置了这个参数,如'debezium.min.row.count.to.stream.results' = '10000',依然可能会执行select * from xxx;一次性扫描表的全量数据。

    综上,Flink CDC在进行多表join操作时,能够实现全量和增量数据的一体化同步。而debezium.min.row.count.to.stream.results参数可以控制其获取数据的方式,但在某些情况下可能受到限制。为了获取更稳定的运行效果,可能需要针对具体的业务场景和数据库环境,进行更为细致的配置和优化。

    2023-12-13 14:15:18
    赞同 展开评论 打赏
  • 在使用 Ink CDC 获取 MySQL 表数据时,当多个表进行 JOIN 操作时,默认情况下是一批一批获取数据的,而不是全量获取。

    通过设置 debezium.min.row.count.to.stream.results 参数可以控制在 JOIN 操作中批次数据返回的最小行数。该参数用于优化流式传输结果的性能,仅在结果集达到指定行数时才会发送给消费者。这意味着如果 JOIN 查询的结果集行数未达到 debezium.min.row.count.to.stream.results 的值,那么结果将会被缓存起来,直到达到或超过该值后再发送给消费者。

    需要注意的是,debezium.min.row.count.to.stream.results 参数对 JOIN 操作的影响有限。它更适用于单表查询或简单的 SELECT 查询,而对于复杂的 JOIN 查询可能不会产生明显的效果。这是因为 JOIN 操作通常涉及多个表,数据量较大,且需要进行数据匹配和整合,无法通过调整该参数来完全避免全量获取数据的需求。

    综上所述,在多张表进行 JOIN 操作时,Ink CDC 默认是一批一批获取数据,并且设置 debezium.min.row.count.to.stream.results 参数也仅在特定情况下生效。如果您需要获取全量数据,可能需要考虑其他方法,如增加并发流任务、优化查询、使用索引等来提高性能。

    2023-12-12 21:24:22
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像