プッシュダウンの式のリスト
TiDB が TiKV からデータを読み取るとき、TiDB はいくつかの式 (関数または演算子の計算を含む) を TiKV に処理するようプッシュダウンしようとします。これにより、転送されるデータの量が削減され、単一の TiDB ノードからの処理がオフロードされます。このドキュメントでは、TiDB がすでにプッシュダウンをサポートしている式と、ブロックリストを使用して特定の式のプッシュダウンを禁止する方法を紹介します。
TiFlash は、関数と演算子のプッシュダウンもサポートしていますこのページに記載されている 。
TiKV へのプッシュダウンでサポートされる式
| 式のタイプ | オペレーション | 
|---|
| 論理演算子 | AND (&&)、OR ( | 
| ビット演算子 | & ~ [ | 
| 比較関数と演算子 | < <= = != (<>) > >= <=> ...と...の間 合体() で() 間隔() NULL ではありません ではありません 無効である は 無効である() のように ...と...の間ではありません ありませんで() みたいではなく STRCMP() | 
| 数値関数と演算子 | + - * / ディビジョン % (モッド) - ABS() アコス() ASIN() 日焼け() ATAN2()、ATAN() CEIL() シーリング() 変換() COS() COT() CRC32() 度() 経験値() 床() LN() ログ() LOG10() LOG2() モッド() 、 PI() 、 捕虜() 、 力() 、 ラジアン() 、 ランド() 、 ラウンド() 、 サイン() 、 罪() 、 SQRT() | 
| 制御フロー関数 | 場合 もし() 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([キー, val[, キー, val] ...]) 、  JSON_REMOVE(json_doc, パス[, パス] ...) 、  JSON_REPLACE(json_doc, パス, val[, パス, val] ...) 、  JSON_SET(json_doc, パス, val[, パス, val] ...) 、  JSON_TYPE(json_val) 、  JSON_UNQUOTE(json_val) 、  JSON_VALID(val) | 
| 日付と時刻の関数 | 日付() DATE_FORMAT() DATEDIFF() DAYOFMONTH() 曜日() DAYOFYEAR() FROM_DAYS() 時間() 作成日() 時間を作ります() マイクロ秒() 分() 月() 月名() PERIOD_ADD() PERIOD_DIFF() SEC_TO_TIME() 2番目() SYSDATE() TIME_TO_SEC() 時間差() 週() ウィーコフィイヤー() 年() | 
| 文字列関数 | アスキー() BIT_LENGTH() CHAR() CHAR_LENGTH() CONCAT() CONCAT_WS() ELT() 分野() 16 進数() 長さ() のように LTRIM() ミッド() みたいではなく 正規表現ではありません 正規表現 交換する() 逆行する() 右() RTRIM() 空間() STRCMP() SUBSTR() 部分文字列() | 
| 集計関数 | カウント() 、 カウント(個別) 、 和() 、 平均() 、 MAX() 、 分() 、 分散() 、 VAR_POP() 、 STD() 、 STDDEV() 、 STDDEV_POP 、 VAR_SAMP() 、 STDDEV_SAMP() 、 JSON_ARRAYAGG(キー) 、 JSON_OBJECTAGG(キー, 値) | 
| 暗号化・圧縮関数 | MD5() SHA1()、SHA() UNCOMPRESSED_LENGTH() | 
| キャスト関数と演算子 | キャスト() 変換する() | 
| その他の関数 | UUID() | 
ブロックリスト固有の式
サポートされている式または特定のデータ型 ( ENUMタイプとBITタイプのみ) をプッシュダウンするときに計算プロセスで予期しない動作が発生した場合、対応する関数、演算子、またはデータ型のプッシュダウンを禁止することで、アプリケーションを迅速に復元できます。具体的には、関数、演算子、またはデータ型をブロックリストmysql.expr_pushdown_blacklistに追加することで、それらのプッシュダウンを禁止できます。詳細はブロックリストに追加するを参照してください。