プッシュダウンの式のリスト
TiDB は TiKV からデータを読み取る際に、処理するいくつかの式 (関数や演算子の計算を含む) を TiKV にプッシュダウンしようとします。これにより、転送されるデータの量が削減され、単一の TiDB ノードから処理がオフロードされます。このドキュメントでは、TiDB がすでにプッシュダウンをサポートしている式と、ブロックリストを使用して特定の式のプッシュダウンを禁止する方法を紹介します。
TiFlash は関数と演算子のプッシュダウンもサポートしていますこのページに記載されている 。
ノート
Aggregate関数は、 ウィンドウ関数として使用される場合、 TiKV へのプッシュダウンをサポートしません。
TiKVへのプッシュダウンでサポートされている式
| 表現タイプ | オペレーション |
|---|
| 論理演算子 | AND (&&)、OR ( |
| ビット演算子 | & 〜 [ |
| 比較関数と演算子 | < <= = != (<>) > >= <=> BETWEEN COALESCE() IN() INTERVAL() IS NOT NULL IS NOT IS NULL IS ISNULL() LIKE NOT BETWEEN 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([val[, val] ...]) , JSON_CONTAINS(ターゲット、候補[、パス]) 、 JSON_EXTRACT(json_doc, パス[, パス] ...) 、 JSON_INSERT(json_doc、パス、val[、パス、val]...) 、 JSON_LENGTH(json_doc[, パス]) 、 JSON_MERGE(json_doc、json_doc[、json_doc]...) 、 JSON_OBJECT([キー、値[、キー、値] ...]) 、 JSON_REMOVE(json_doc, パス[, パス] ...) 、 JSON_SET(json_doc、パス、val[、パス、val]...) 、 JSON_TYPE(json_val) 、 JSON_UNQUOTE(json_val) , JSON_VALID(値) 、 値 MEMBER OF(json_array) |
| 日付と時刻関数 | 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() |
| 文字列関数 | ASCII() BIT_LENGTH() CHAR() CHAR_LENGTH() CONCAT() CONCAT_WS() ELT() FIELD() HEX() LENGTH() LIKE LOWER() LTRIM() MID() NOT LIKE NOT REGEXP REGEXP REGEXP_INSTR() 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() |
| ウィンドウ関数 | なし |
ブロックリストの特定の表現
サポートされている表現または特定のデータ型( ENUM型とBITタイプのみ)をプッシュダウンしたときに計算処理で予期しない動作が発生する場合は、該当する関数、演算子、またはデータ型のプッシュダウンを禁止することで、アプリケーションを迅速に復旧できます。具体的には、関数、演算子、またはデータ型をブロックリストmysql.expr_pushdown_blacklistに追加することで、プッシュダウンを禁止できます。詳細については、 ブロックリストに追加を参照してください。