Doris 增量数据刷新方案 - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
KJH

Doris 增量数据刷新方案

  •  1
     
  •   KJH 8 days ago 1853 views

    各位巨佬,真没招呀,在线拜求

    目前我们引入了 Doris 实时数仓,版本 2.1 ,FE 8c 32g BE 16c 32g

    数据处理流程是 数据进入到 Doris 后开始使用 Doris 的 insert into select 进行 dwd dwm dws ads 等层级的数据处理。

    由于都是业务数据,不是纯新增数据,所以都是主键模型。

    某个业务维护的相关表需要先根据 update_time 统计出关联的业务字段,写入到一张增量表中,最后由增量表作为驱动表。也就是在一个大的多表 JOIN sql 中,增量表作为 build 端,利用 RUNTIME FILTER 下推过滤大表数据从而实现表数据更新

    现在问题就出现在这个增量驱动表上,增量表数据很少可能也就 3 万~5 万区间,5 分钟跑一次,每次全量刷新。

    然后利用 ANALYZE TABLE 刷新增量表的统计新的,我没想到的是,增量表数据进去了以后,统计信息居然需要等 3 分钟在执行才能统计到条数,

    这也就导致 Doris 优化器 CBO 在利用统计信息判断 join 的时,增量表如果统计信息是 0,或者健康度太低,就不会走 RF ,从而进行全表扫描,导致OOM !!

    我尝试过使用 /*+ SET_VAR(disable_join_reorder=true) / 或/+ LEADING(ab c) */ 都不行,效率太差,内存使用更高,原本能成功的,用了这两个优化后失败率更高了。

    现在是我每两个小时执行一次增量表统计信息收集,然后 DORIS 的 ETL 任务能抗两小时,两小时后就开始报错 OOM 了。

    所以想请教下各位巨佬,Doris 不是各个大厂都在推么,难道没这种问题么?还是我使用方式错了,我人要麻了。。。

    14 replies    2026-05-20 09:57:33 +08:00
    BlueBing
        1
    BlueBing  
       8 days ago   1
    帮楼主顶一个,顺便问下,选型没考虑 starorcks 吗
    KJH
        2
    KJH  
    OP
       8 days ago
    @BlueBing 没用阿里云
    Jim2Chen
        3
    Jim2Chen  
       8 days ago   1
    帮楼主顶一个
    KJH
        4
    KJH  
    OP
       8 days ago
    没大佬来哇 。。完啦
    yaoyuan7571
        5
    yaoyuan7571  
       8 days ago   1
    我看官方文档 ANALYZE 命令不是支持同步参数 WITH SYNC 吗,试试?
    coefu
        6
    coefu  
       7 days ago
    加他们群问。
    Oldletter
        7
    Oldletter  
       7 days ago   2
    你这个场景是强依赖 RF 过滤大表,统计信息不准的时候 Doris 可能会把 RF 裁掉。先把 RF 裁剪关掉,看 Profile 里面 RF 有没有正常下推、有没有生效。

    另外我觉得这个增量驱动表没必要用主键模型。它本质上只是一个小的驱动表,每 5 分钟重建一次,用来过滤大表,不是真正的业务 upsert 表。可以考虑改成 Duplicate Key 表,加一个 batch_id ,每轮写一批新的数据,查询时带 batch_id 过滤,跑完再清老批次。这样比反复刷新同一张主键表更稳,统计也更容易控制。

    如果还不行,可以临时用手动注入统计信息兜底。反正这个小表大概就是 3 ~ 5 万行,不需要特别精确,只要别让优化器以为它是 0 行就行。

    最后建议升级一下 2.1 的小版本。2.1 早期在 row count 、统计信息、RF 这块确实有一些坑,后面的小版本修过一些类似问题。我记得 2.1.8 和 11 都修复过问题,升级完版本不行的话再调参数,按理说你这个最好不行就上新的版本算了。
    KJH
        8
    KJH  
    OP
       6 days ago
    @yaoyuan7571 不行 当表重新重建后,如果立刻执行表收集信息并且带了 with sync , 统计出来的还是 0
    KJH
        9
    KJH  
    OP
       6 days ago
    @Oldletter RF 裁剪是默认关的,这个之前确认过没问题, 然后主键模型这个确实也考虑过,不过一直懒得改,抽时间我试下

    然后手动注入这个我也考虑过,但是他有一个 update_rows ,就是每次我更新这个增量表后,这个 update_rows 也会变,当他大到一定程度以后,好像表的健康值就会下降,然后 CBO 判断就不会走 RF ,不过这个方案我也没试,不敢说有问题,抽时间我也试试

    主要是 Doris 是托管的,他们最高的版本只有 2.1.7 ,无语了都。。

    谢谢大佬
    KJH
        10
    KJH  
    OP
       6 days ago
    @Oldletter 而且就算我执行了统计信息收集,通过 show table stats 查看了表的数据量确实能统计出来, 然后 profile 里面,对于这个增量表的统计数量依然是 0 ,不知道是不是这个版本的 bug 。
    tchqiq
        11
    tchqiq  
       6 days ago   1
    拿聚合模型试一下,注意聚合键以及分桶要和 join 条件对齐
    KJH
        12
    KJH  
    OP
       5 days ago
    @tchqiq 我试试
    Oldletter
        13
    Oldletter  
       4 days ago   1
    @KJH 这么离谱最高是 2.1.7 卧槽
    明天我有空给你试试 我这本地好像是 2.1.11
    KJH
        14
    KJH  
    OP
       3 days ago
    @Oldletter #13 是啊。。很无语,好像存算分离的版本会高一些 3.多, 谢谢大佬哇
    About     Help     Advertise     Blog     API     FAQ     Solana     1757 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 16:16 PVG 00:16 LAX 09:16 JFK 12:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86