📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

Pushdown 表达式列表

当 TiDB 从 TiKV 读取数据时,TiDB 会尝试将部分表达式(包括函数或操作符的计算)下推到 TiKV 进行处理。这可以减少传输的数据量,并将处理负载从单个 TiDB 节点转移出去。本文介绍了 TiDB 已支持下推的表达式类型,以及如何通过 blocklist 禁止特定表达式的下推。

Tiflash 也支持对 本页面列出的 函数和操作符的下推。

支持下推到 TiKV 的表达式

表达式类型操作内容
逻辑操作符AND (&&)
OR (||)
NOT (!)
XOR
位操作符&[https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_bitwise-and]
~
|
^
<<
>>
比较函数和操作符<
<=
=
!= (<>)
>
>=
<=>
BETWEEN ... AND ...
COALESCE()
IN()
INTERVAL()
IS NOT NULL
IS NOT
IS NULL
IS
ISNULL()
LIKE
NOT BETWEEN ... AND ...
NOT IN()
NOT LIKE
STRCMP()
数值函数和操作符+
-
*
/
DIV
% (MOD)
-
ABS()
ACOS()
ASIN()
ATAN()
ATAN2()
ATAN()

CEIL()
CEILING()
CONV()
COS()
COT()
CRC32()
DEGREES()
EXP()
FLOOR()
LN()
LOG()
LOG10()
LOG2()
MOD()
PI()
POW()
POWER()
RADIANS()
RAND()
ROUND()
SIGN()
SIN()
SQRT()
控制流函数CASE
IF()
IFNULL()
JSON 函数JSON_ARRAY_APPEND()
JSON_ARRAY()
JSON_CONTAINS()
JSON_EXTRACT()
JSON_INSERT()
JSON_LENGTH()
JSON_MERGE_PATCH()
JSON_MERGE()
JSON_OBJECT()
JSON_REMOVE()
JSON_REPLACE()
JSON_SET()
JSON_TYPE()
JSON_UNQUOTE()
JSON_VALID()
MEMBER OF()
日期和时间函数DATE()
DATE_FORMAT()
DATEDIFF()
DAYOFMONTH()
DAYOFWEEK()
DAYOFYEAR()
FROM_DAYS()
HOUR()
MAKEDATE()
MAKETIME()
MICROSECOND()
MINUTE()
MONTH()
MONTHNAME()
PERIOD_ADD()
PERIOD_DIFF()
SEC_TO_TIME()
SECOND()
SYSDATE()
TIME_TO_SEC()
TIMEDIFF()
WEEK()
WEEKOFYEAR()
YEAR()
DATE_ADD()
DATE_SUB()
ADDDATE()
SUBDATE()
字符串函数ASCII()
BIT_LENGTH()
CHAR()
CHAR_LENGTH()
CONCAT()
CONCAT_WS()
ELT()
FIELD()
HEX()
LENGTH()
LIKE
LOWER()
LTRIM()
MID()
NOT LIKE
NOT REGEXP
REGEXP
REGEXP_LIKE()
REGEXP_REPLACE()
REGEXP_SUBSTR()
REPLACE()
REVERSE()
RIGHT(), RLIKE
RTRIM()
SPACE()
STRCMP()
SUBSTR()
SUBSTRING()
UPPER()
聚合函数COUNT()
COUNT(DISTINCT)
SUM()
AVG()
MAX()
MIN()
VARIANCE()
VAR_POP()
STD()
STDDEV()
STDDEV_POP
VAR_SAMP()
STDDEV_SAMP()
JSON_ARRAYAGG(key)
JSON_OBJECTAGG(key, value)
加密与压缩函数MD5()
SHA1(), SHA()
UNCOMPRESSED_LENGTH()
类型转换函数和操作符CAST()
CONVERT()
其他函数UUID()
Window Functions

Blocklist 特定表达式

如果在下推 支持的表达式 或特定数据类型( ENUM typeBIT type)的过程中出现异常行为,你可以通过禁止对应函数、操作符或数据类型的下推,快速恢复应用。具体做法是将它们加入 blocklist mysql.expr_pushdown_blacklist。详情请参考 Add to the blocklist

文档内容是否有帮助?