tidb 多表join查询疑问!

多表join关联查询,每个表有多个region,且region分布在多台tikv
请问
1、各表的region,分别从不同tikv传输到tidb,在tidb中进行数据关联,即条件过滤数据不在tikv节点执行
2、通过条件下发,各tikv按条件过滤数据,把符合条件的数据传输到tidb进行关联

join都是在tidb进行的,有些过滤条件或聚合函数是可以下推到tikv,减少到tidb的数据量

多个上亿的表关联查询,tidb的内存需求不是很大,且每条sql最大内存参数配置32G都不够啊

对,有可能oom ,具体还得看SQL和执行计划

我最近也遇到了这种情况,hash join特别慢,index join就非常快 :joy:
https://docs.pingcap.com/zh/tidb/stable/explain-joins

能下推尽量下推,不能下推的AP查询就推给TiFlash

下推的场景不多,一般都是范围过来,不是聚合类的

能在tikv定位到数据的,肯定是下发,不能定位的只能到tidb去过滤

where条件中有筛选过滤条件基本都是tikv做的,能不在tidb做就不在tidb做

我看了半天没看明白问的是什么,问题看起来是在陈述,也没看出错误来。底下各位在回答啥?

可以找一个例子,发一下explain analyze,大家一起看一看

kong老师,这个问题在问什么?好像就我没有get :stuck_out_tongue_closed_eyes:

他应该问的是查询逻辑,是1还是2

看题看错了,1中那个

自动忽略了 :crazy_face:

扫描数据阶段会在tikv过滤,符合条件的发上去,按照region执行。

1 个赞

TiDB 使用查询条件向 TiKV 发起请求,获取符合条件的数据

一般都是tikv先过滤数据,然后,将过滤出的数据返回tidb,在tidb进行关联

为啥不进行渭词下推,分担一下计算压力嘛,dbserver压力好大啊 :smiley:

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。