为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
5.0.3
【概述】 场景 + 问题概述
两个group by 后再join 无法下推tiflash
【背景】 做过哪些操作
建表语句和sql.sql (4.0 KB)
如果直接join,则可以正常下推,所以5.x版本join的下推还是不太行?
【现象】 业务和数据库现象
join操作没有下推,导致所有数据推送到tidb server, oom宕机
【问题】 当前遇到的问题
【业务影响】
因为无法正常下推,该业务无法正常进行下去
【TiDB 版本】
5.0.3
1 个赞
spc_monkey
(carry@pingcap.com)
2021 年9 月 22 日 07:25
2
你的 SQL 可以先改写一下,先关联再 group by
1 个赞
正常情况是,join下推到tiflash,因为是inner join,结果应该只有9w多数据,推送给tidb
1 个赞
spc_monkey
(carry@pingcap.com)
2021 年9 月 22 日 07:33
6
能把 你修改后的 explain analyze 执行计划发我一下不(全一点的)
1 个赞
spc_monkey
(carry@pingcap.com)
2021 年9 月 22 日 07:41
8
看你给我的是 explain 的结果,最好给我一下 explain analyze 的结果,explain 的是评估的信息,不一定准确
1 个赞
explain.txt (7.7 KB)
如果吧avg改为sum,join可以下推,但是explain的执行计划感觉不准啊,实际的执行计划没问题
另外我们是需要avg的,改为sum只是因为cast不能下推
1 个赞
这样套一层倒是可以,可以有简化的sql吗,我们现在发现我们几乎每个sql都要手动调校…
1 个赞
另外为什么用了avg就不能下推join了呢,tiflash mpp文档显示是可以下推avg的
1 个赞
fzhedu
(fzhedu-PingCAP)
2021 年9 月 22 日 09:10
12
请在 explain sql; 在执行 show warnings; 看看不能下推的具体原因
对于第一条先group 再 join的吗?
我直接explain,后再show warnings,没数据,这条不能explain analyze,否则tidb 直接宕机
对于倒数第二条,先join再group by,explain analyze后,再show warnings,还是没数据
EXPLAIN ANALYZE SELECT a.src_author_id, COUNT(1) cnt, AVG(a.forward_cnt) AS avg_forward_cnt,
AVG(a.reply_cnt) AS avg_reply_cnt,
AVG(a.like_cnt) AS avg_praise_cnt
FROM kol_doc a INNER JOIN kol_profile b ON a.src_author_id = b.src_author_id AND b.data_from = 1
GROUP BY a.src_author_id
show warnings,没数据
system
(system)
关闭
2022 年10 月 31 日 19:21
17
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。