【Flink系列】JDBC写入调优

本文通过分析Flink实时写入MySQL导致的压力问题,提出了一个优化方案。优化主要步骤包括:1) 不直接将GROUPBY聚合结果写入数据库,而是先存入中间表;2) 转化为DataStream并过滤回撤流;3) 使用TUMBLE窗口获取每分钟的最新聚合数据;4) 使用JdbcSink按需更新数据库。该方法适用于Key空间小且实时性要求不高的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章参考:记一次Flink 写Mysql优化_三年之期已到的博客-优快云博客

使用Flink开发的应用常见实时写入,即更新每一条流水的统计结果至数据库。在生产环境下,数据库为多个应用共用,那随着Flink应用的不断新增部署,数据库的写入压力越来越大,直至Flink应用出现阻塞等待、背压的情况出现,情况更严重的情况下会导致任务checkpoint超时、重启。

从以上角度出发,考虑针对一些特定场景优化Flink应用,降低写入频次,减轻对数据库的压力。


待优化的代码:

Table clearTransTable = tableEnv.fromDataStream(srcStream,$("stlBranchId"),$("stlOrgId"),$("txnAmt"),$("payTimeTs"),$("bigmccId"));
tableEnv.createTemporaryView("clearTransTable", clearTransTable);
tableEnv.executeSql(
                "  CREATE TABLE rts_clear_mcc_day_trans(\n" +
                        "    stl_branch_id VARCHAR,\n" +
                        "    stl_org_id VARCHAR,\n" +
                        "    bigmcc_id VARCHAR,\n" +
                        "    time_date VARCHAR,\n" +
                        "    trans_count BIGINT,\n" +
                       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值