AnalyticDB for MySQL は、SQL 文の実行計画をキャッシュするプランキャッシュ機能を提供します。同じ SQL パターンを共有する SQL 文を実行すると、AnalyticDB for MySQL はキャッシュされた実行計画を使用します。これにより、SQL のコンパイルと最適化の時間が短縮され、システムのクエリパフォーマンスが向上します。このトピックでは、プランキャッシュ機能を有効にする方法と使用例について説明します。
前提条件
クラスターのマイナーバージョンは 3.1.10.0 以降である必要があります。
AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
背景情報
同時クエリの数が多い場合、SQL のコンパイルと最適化に必要な時間がシステムのパフォーマンスボトルネックになる可能性があります。プランキャッシュ機能は、SQL 文の実行計画をキャッシュします。同じ SQL パターンを共有する後続の SQL 文を実行すると、キャッシュされた実行計画が直接使用されます。これにより、SQL のコンパイルと最適化の時間が短縮され、システムのクエリパフォーマンスが向上します。
プランキャッシュ機能は、高同時実行ポイントクエリシナリオにのみ適用されます。この機能は、非ポイントクエリシナリオでは推奨されません。
プランキャッシュ機能の有効化または無効化
デフォルトでは、プランキャッシュ機能は無効になっています。次のコマンドを実行して、プランキャッシュ機能を有効または無効にできます。
プランキャッシュ機能を有効にする:
SET ADB_CONFIG O_SPC_SCOPE=POINT_QUERY;プランキャッシュ機能を無効にする:
SET ADB_CONFIG O_SPC_SCOPE=NONE;
例
次のような高同時実行ポイントクエリリクエストがあるとします。
SELECT * FROM tbl0 WHERE col0 = ?;プランキャッシュ機能を有効にする:
SET ADB_CONFIG O_SPC_SCOPE=POINT_QUERY;SQL クエリ文を実行します。この文の実行計画がキャッシュされます。
SELECT * FROM tbl0 WHERE col0 = 666;同じ SQL パターンを持つ文を実行すると、前のステップでキャッシュされた実行計画が自動的に使用されます。これにより、SQL のコンパイルと最適化の時間が短縮されます。
SELECT * FROM tbl0 WHERE col0 = 777;