h5n1
(H5n1)
1
【TiDB 版本】8.5.2
2个表关联,先通过cte方式聚合,然后cte聚合结果再关联聚合, cte内单表SQL 执行时走的2阶段agg,导致oom , 通过cte内SQL 加 一阶段agg HINT , SQL正常执行。
按照tiflash源码解析中一段描述,系统可以自动选择使用1还是2阶段方式
手工重新收集了其中一个表的信息后,查看执行计划仍然是2阶段agg ,group by 聚合的多个id列字段,属于重复值比较低的情况
plan replayer信息如下
tiflash_plan.zip (62.9 MB)
h5n1
(H5n1)
2
试了 tiflash_hashagg_preaggregation_mode auto/force_streaming 都不好使 ,只有用hint才行
看起来是那里选择agg1 还是agg2 的时候,对统计信息的处理有问题。
h5n1
(H5n1)
5
hint的重要性,能解决一些优化器走不是最优路线的情况
先试一试 tiflash_hashagg_preaggregation_mode 改成 auto 看看
我们的业务也发现经常不走tiflash,办法就是加hit