機能説明
この機能は、単一テーブルクエリの LIMIT/OFFSET または SUM 操作を InnoDB にプッシュダウンし、クエリ遅延を効果的に低減します。
LIMIT/OFFSETがセカンダリインデックスにプッシュダウンされる時、この機能は「テーブルアクセス」操作を回避し、スキャンコストを効果的に低減します。
SUM操作がInnoDBにプッシュダウンされる時、InnoDBレイヤで計算を行い「最終」結果を返すことで、ServerレイヤとInnoDBエンジンレイヤでの「各行」レコードの複数回イテレーションのコストを節約します。
サポートバージョン
カーネルバージョンはTDSQL-C for MySQL 5.7の2.0.23/2.1.9以上です。
適用シーン
この機能は主に単一テーブルクエリで LIMIT/OFFSET または SUM が使用されるシナリオを対象とします。例:「Select * from tbl Limit 10」、「Select * from tbl Limit 10,2」、「Select sum(c1) from tbl」などのクエリが該当します。
最適化できないケース:
クエリ文には distinct、group by、having が含まれます。
ネストされたサブクエリが存在します。
FULLTEXTインデックスが使用されます。
order byが存在し、かつオプティマイザはインデックスを利用したorder byの実現ができません。
マルチレンジのMRRを利用した。
SQL_CALC_FOUND_ROWSが存在します。
パラメータ説明
SQL実行の過程で、対応する機能制御パラメータのオン/オフ状態に基づいて、オプティマイザがクエリプランを自動的に書き換え、計算プッシュダウンの最適化を完了します。
パラメータは以下の通り:
|
cdb_enable_offset_pushdown | Yes | bool | ON | {ON,OFF} | LIMIT/OFFSETプッシュダウンを制御します。デフォルトで有効 |
cdb_enable_sumagg_pushdown | Yes | bool | OFF | {ON,OFF} | SUMプッシュダウンを制御します。デフォルトで無効 |
説明
ユーザーは現在、上記パラメータの値を直接変更することはできません。変更が必要な場合は、チケットを提出して変更を行ってください。