Skip to content

Commit

Permalink
refine TiFlash doc to add executor pushdown white list (pingcap#5966)
Browse files Browse the repository at this point in the history
  • Loading branch information
windtalker authored Apr 7, 2021
1 parent 42496ea commit 83e3c11
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions tiflash/use-tiflash.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,15 +217,21 @@ TiSpark 目前提供类似 TiDB 中 engine 隔离的方式读取 TiFlash,方
## TiFlash 支持的计算下推
TiFlash 支持谓词、聚合下推计算以及表连接,下推的计算可以帮助 TiDB 进行分布式加速。暂不支持的计算类型是 `Full Outer Join` 和 `DISTINCT COUNT`,会在后续版本逐步优化。
目前下推连接 (`Join`) 的功能需要通过以下会话变量开启(暂不支持 `Full Outer Join`):
```
set @@session.tidb_opt_broadcast_join=1
```
目前 TiFlash 支持了有限的常用表达式下推,支持下推的表达式包括:
TiFlash 支持部分算子的下推,支持的算子如下:
* TableScan:该算子从表中读取数据
* Selection:该算子对数据进行过滤
* HashAgg:该算子基于 [Hash Aggregation](/explain-aggregation.md#hash-aggregation) 算法对数据进行聚合运算
* StreamAgg:该算子基于 [Stream Aggregation](/explain-aggregation.md#stream-aggregation) 算法对数据进行聚合运算。StreamAgg 仅支持不带 `GROUP BY` 条件的列。
* TopN:该算子对数据求 TopN 运算
* Limit:该算子对数据进行 limit 运算
* Project:该算子对数据进行投影运算
* HashJoin:该算子基于 [Hash Join](/explain-joins.md#hash-join) 算法对数据进行连接运算,但有以下使用条件:
* 只有在 [MPP 模式](#使用 MPP 模式)下才能被下推
* 必须带有等值的 join 条件
* 不支持下推 `Full Outer Join`
在 TiDB 中,算子之间会呈现树型组织结构。一个算子能下推到 TiFlash 的前提条件,是该算子的所有子算子都能下推到 TiFlash。因为大部分算子都包含有表达式计算,当且仅当一个算子所包含的所有表达式均支持下推到 TiFlash 时,该算子才有可能下推给 TiFlash。目前 TiFlash 支持下推的表达式包括:
```
+, -, /, *, >=, <=, =, !=, <, >, ifnull, isnull, bitor, in, bitand, or, and, like, not, case when, month, substr, timestampdiff, date_format, from_unixtime, json_length, if, bitneg, bitxor,
Expand All @@ -234,12 +240,9 @@ round without fraction, cast(int as decimal), date_add(datetime, int), date_add(
其中,`cast` 和 `date_add` 的下推默认不开启,若需要手动开启,请参考[优化规则及表达式下推的黑名单](/blocklist-control-plan.md)
目前 TiFlash 不支持下推的情况包括:
- 所有包含 Time 类型的表达式均不能下推
- 在聚合函数或者 WHERE 条件中包含了不在上述列表中的表达式,聚合或者相关的谓词过滤均不能下推
另外,所有包含 Time/Bit/Set/Enum/Geometry 类型的表达式均不能下推到 TiFlash:
如查询遇到不支持的下推计算,则需要依赖 TiDB 完成剩余计算,可能会很大程度影响 TiFlash 加速效果。对于暂不支持的表达式,将会在后续陆续加入支持,也可以联系官方沟通。
如查询遇到不支持的下推计算,则需要依赖 TiDB 完成剩余计算,可能会很大程度影响 TiFlash 加速效果。对于暂不支持的算子/表达式,将会在后续陆续加入支持,也可以联系官方沟通。
## 使用 MPP 模式
Expand Down

0 comments on commit 83e3c11

Please sign in to comment.