SQLを自動最適化する12cのオプティマイザ

EnterpriseZine / 2013年10月31日 0時0分

 前回はOracle Database 12cのRACとASMにおける変更点を紹介しました。本シリーズ最終回となる今回は、SQLの実行において重要な役割を担うオプティマイザについて紹介します。

■12cでは、より最適な実行計画が選ばれやすくなる

 これまでのリリースでもバージョンアップする度に様々な新機能が追加されてきたオプティマイザですが、Oracle Database 12c(以下、12c)ではより最適な実行計画が選択されるように「適応問合せの最適化」、「SQL計画管理(SQL Plan Management)」、「バルクロードのオンライン統計収集」などの新機能が追加されています。今回は12cにバージョンアップした際の大きな変更点となる、「適応問合せの最適化」について紹介します。

 「適応問合せの最適化」とは、より優れた実行計画になるための追加情報を検出する機能の総称です。役割に応じて以下のように細かく分類されていますが、わかりやすく言えば「今まで最適な実行計画が選ばれなかったSQLでも、12cにするとより良い実行計画が選ばれやすくなる」という機能です。

■統計情報と現実のギャップを埋める、適応計画

 Oracle Databaseでは、SQLを実行するとデータ・ディクショナリに格納されているオプティマイザ統計をもとに最も効率的な実行計画を選択し、実行フェーズに移ります。この時データ・ディクショナリに格納した統計が不正確であったり、複雑な演算子や条件述語が存在する状況では、非効率な実行計画が選択されることがあります。

 Oracle DatabaseではSQLの解析負荷を軽減するために、事前に収集した統計をもとに実行計画を立てる動作になっていますが、あくまで統計取得時点の情報であるため、現実とのギャップが生じてしまうことも少なくありません。そのため、管理者が適切な取得タイミングや頻度、レベルで統計情報を収集するといった作業が求められます。

 12cから新しく実装された適応計画では、SQL実行中に検索対象となる行数などの追加情報を収集し、見積った結果と大きく異なる場合、追加情報をもとに最終的な実行計画を選択してくれるようになりました。

●適応計画の基本動作

 1. オプティマイザ統計をもとにデフォルト・プランを作成
 2. SQL実行中に統計コレクタが追加の情報を収集し、閾値を上回るか否かをチェック
 3. 収集した情報によって最適なサブ・プランを選択し、最終プランを決定

  • 前のページ
    • 1
    • 2
  • 次のページ
EnterpriseZine

トピックスRSS

ランキング