3.4.3 ExadataでのSQL計画管理の使用

SQL計画管理は、長期間にわたってSQL文の実行計画を記録し評価することで、SQL文の実行計画の突然の変更によってパフォーマンスが低下するのを防止します。

SQL計画管理を使用して、効果的であることが判明している既存の計画セットで構成されるSQL計画ベースラインを作成します。次にSQL計画ベースラインを使用して、システムで発生する変更(ソフトウェアのアップグレードや新しいアプリケーション・モジュールのデプロイなど)とは無関係に、対応するSQL文のパフォーマンスを保持します。

SQL計画管理を使用して、新しいオプティマイザ統計や索引などの変更に適切に適応させることもできます。パフォーマンスを向上させる計画変更のみを検証して受け入れることができます。SQL計画の展開は、オプティマイザが新しい計画を検証して既存のSQL計画ベースラインに追加するためのプロセスです。

SQLプロファイルとSQL計画ベースラインのどちらも、オプティマイザで最適な計画のみが使用されるようにすることによりSQL文のパフォーマンスを向上させます。通常、SQL計画ベースラインは重大なパフォーマンスの問題が発生する前に作成します。SQL計画ベースラインは、オプティマイザが最適ではない計画を将来的に使用することを防ぎます。SQLプロファイルは、SQLチューニング・アドバイザを起動するとデータベースにより作成されます。通常、チューニング・アドバイザは、SQL文により高負荷の兆候が示された後にのみ起動します。SQLプロファイルは主に、最適ではない計画につながったオプティマイザのミスを継続的に解決するために使用できます。

DBMS_SPMパッケージは、様々なSQL文に対して保持される、計画履歴およびSQL計画ベースラインに対する制御された操作を実行するためのインタフェースをユーザーに提供することによって、SQL計画管理機能をサポートします。DBMS_SPMパッケージは、計画の展開で使用できるプロシージャとファンクションを提供します。

Oracle Exadata System Softwareリリース19.1以降では、DBMS_SPM.CONFIGUREに新しいパラメータAUTO_SPM_EVOLVE_TASKが用意されており、これはExadata Database MachineオンプレミスおよびOracle Cloudデプロイメントのみで使用できます。AUTO_SPM_EVOLVE_TASKパラメータには、次の3つの値のいずれかを指定できます。

  • ON: この機能が有効になります。SPM展開アドバイザにより、SQL計画履歴を定期的に管理するタスクが作成されます。このタスクでは、代替の有無を確認し、SQL実行計画を展開して受け入れる必要があるかどうかを判断します。このタスクは、高頻度統計収集と同様の方法で、通常のメンテナンス・ウィンドウの外部で実行されます。
  • OFF: この機能は無効になります。これはデフォルト値です。
  • AUTO: Oracle Databaseがこの機能を使用するタイミングを決定します。

関連トピック