プライマリ・コンテンツに移動
Oracle® Database SQLチューニング・ガイド
12c リリース1 (12.1)
B71277-09
目次へ移動
目次
索引へ移動
索引

前
次
次へ

Oracle Database SQLチューニング・ガイドのこのリリースでの変更

この章の内容は次のとおりです。

Oracle Database 12cリリース1 (12.1.0.2)での変更点

Oracle Database 12cリリース1(12.1.0.2)の『Oracle Database SQLチューニング・ガイド』には、次の変更があります。

新機能

このリリースの新機能は次のとおりです。

  • インメモリー集計

    この最適化により、スター・スキーマなどで、単一の大きな表を複数の小さな表に結合する際に各行に必要な結合およびGROUP BY処理が最小限に抑えられます。VECTOR GROUP BY集計では、パラレル問合せ(PQ)処理に関連するインフラストラクチャを使用し、それをCPU効率のよいアルゴリズムと組み合せて、ファクト・データの再分散前に実行される初期集計のパフォーマンスと効果を最大化します。

    「インメモリー集計」を参照してください。

  • 適応問合せ計画のSQL監視サポート

    SQL監視では適応問合せ計画を次のようにサポートします。

    • 問合せ計画が適応かどうかを示し、その現在のステータス(解決中または解決済)を表示します。

    • 現在の問合せ計画、完全問合せ計画または最終問合せ計画を選択できるリストを提供します。

      適応問合せ計画の詳細は「適応問合せ計画」を、SQL監視の詳細は「Cloud Controlを使用したSQL実行の監視」を参照してください。

Oracle Database 12cリリース1 (12.1.0.1)での変更点

Oracle Database 12cリリース1(12.1)の『Oracle Database SQLチューニング・ガイド』には、次の変更があります。

新機能

このリリースの新機能は次のとおりです。

  • 適応SQL計画管理(SPM)

    SPM展開アドバイザは、展開タスクのスケジュール、展開タスクの再実行および持続的なレポートの生成を可能にするタスク・インフラストラクチャです。新しい自動展開タスクSYS_AUTO_SPM_EVOLVE_TASKが、デフォルトのメンテナンス・ウィンドウに実行されます。このタスクは、承認されていないすべての計画をランク付けし、それらの展開プロセスを実行します。新しい計画のほうが既存の計画よりもパフォーマンスが高いとわかった場合、タスクは自動的にその計画を承認します。DBMS_SPMパッケージを使用して、手動で展開タスクを実行することもできます。

    「SPM展開アドバイザのタスクの管理」を参照してください。

  • 適応問合せ最適化

    適応問合せ最適化は、オプティマイザが、実行計画に対する実行時の調整を行い、より優れた統計を導くための追加情報を検出できるようにするための一連の機能です。それには、次のような機能が含まれます。

    • 適応問合せ計画

      適応問合せ計画に用意されている組込みオプションを使用すると、文に対してデフォルトの計画とは異なる最終計画を使用できます。最初の実行時、特定のサブプランがアクティブになる前に、オプティマイザは、どのオプションを使用するかについて最終的な決定を行います。オプティマイザの選択は、この時点までの実行中に行われた監視に基づいています。オプティマイザが計画を適応することにより、問合せのパフォーマンスを向上させることができます。

      「適応問合せ計画」を参照してください。

    • 自動再最適化

      自動再最適化を使用すると、オプティマイザは、問合せの初期実行を監視します。実際の実行統計が元の計画統計と大きく異なる場合、オプティマイザは、実行統計を記録し、次回その文が実行されるときにその実行統計を使用してより最適な計画を選択します。データベースでは、自動再最適化で取得された情報を使用して、自動的にSQL計画ディレクティブが生成されます。

      「自動再最適化」を参照してください。

    • SQL計画ディレクティブ

      Oracle Database 12cより前のリリースの場合、データベースでは、コンパイルおよび実行に関する統計は、非永続の共有SQL領域に格納されていました。このリリースから、データベースでは、SQL計画ディレクティブを使用できるようになりました。SQL計画ディレクティブは、オプティマイザがより最適な計画の生成に使用できる追加の情報および命令です。データベースでは、SQL計画ディレクティブがSYSAUX表領域に永続的に格納されます。実行計画を生成する際、オプティマイザは、SQL計画ディレクティブを使用して、計画でアクセスするオブジェクトに関する詳細情報を取得できます。

      「SQL計画ディレクティブ」を参照してください。

    • 動的統計の拡張

      Oracle Database 12cより前のリリースでは、動的統計(以前は動的サンプリングと呼ばれていました)は、問合せ内の1つ以上の表にオプティマイザ統計が存在しない場合にのみ使用されました。このリリースから、オプティマイザは、動的統計が有用であるかどうか、およびすべてのSQL文に対して使用する動的統計レベルを自動的に決定するようになりました。動的統計で収集された情報は、永続的であり、他の問合せで使用できます。

      「補足的な動的統計」を参照してください。

  • 新しいタイプのヒストグラム

    このリリースでは、上位頻度ヒストグラムおよびハイブリッド・ヒストグラムが導入されています。列に254を超える個別値があり、かつ上位254の最頻出値の占める割合がデータの99%を超える場合は、上位254の最頻出値を使用して上位頻度ヒストグラムが作成されます。統計的には重要でない非ポピュラー値を無視することによって、データベースでは、頻繁に出現する値に関するより高品質なヒストグラムを作成できます。ハイブリッド・ヒストグラムは、拡張された高さ調整済ヒストグラムです。このヒストグラムでは、各エンドポイントの正確な頻度がサンプルに格納され、値が複数のバケットに格納されることはありません。

    また、通常の頻度ヒストグラムも拡張されています。オプティマイザは、NDVの計算時に、小規模なサンプルではなくデータの全体スキャンに基づいて頻度ヒストグラムを計算します(AUTO_SAMPLING使用時)。拡張された頻度ヒストグラムでは、非常に頻度の低い値でも正確なバケット・カウントによってヒストグラム内で適切に表されます。

    「ヒストグラム」を参照してください。

  • データベース操作の監視

    リアルタイムなデータベース操作の監視によって、長時間実行されるデータベース・タスク(バッチ・ジョブ、スケジューラ・ジョブ、データ抽出、変換およびロード(ETL)ジョブなど)の監視が可能になります。この機能は、監視対象のビジネス・オペレーションに関連付けられたSQLおよびPL/SQLの問合せの進行状況を追跡します。DBAまたは開発者は、オペレーションの開始と終了を明確に指定するか、またはオペレーションを識別するタグで暗黙的に指定することにより、監視用のビジネス・オペレーションを定義できます。

    「データベース操作の監視」を参照してください。

  • 同時統計収集

    複数の表、表パーティションまたは表サブパーティションでオプティマイザ統計を同時に収集できます。マルチプロセッサ環境をフルに活用することで、データベースでは、統計の収集に必要な全体時間を短縮できます。Oracle SchedulerおよびAdvanced Queuingにより、統計を同時に収集するためのジョブが作成および管理されます。スケジューラは、使用可能なシステム・リソースとJOB_QUEUE_PROCESSES初期化パラメータの値に基づいて、同時に実行するジョブの数およびキューに入れるジョブの数を決定します。

    「オプティマイザ統計の同時収集」を参照してください。

  • DBMS_STATS統計収集関数のレポート作成モード

    DBMS_STATS関数をレポート作成モードで実行できます。このモードでは、オプティマイザは、実際には統計を収集せずに、指定された統計収集関数を使用した場合に処理されるオブジェクトをレポートします。

    「レポート作成モードでの統計収集関数の実行」を参照してください。

  • 過去の統計収集操作に関するレポート

    DBMS_STATS関数を使用して、特定の統計収集操作または特定の日時の間に発生した操作のレポートを作成できます。

    「過去の統計収集操作のレポート作成」を参照してください。

  • 列グループの自動作成

    列グループの統計を使用すると、データベースでは、列のグループ(1つの単位として扱われます)に関するオプティマイザ統計が収集されます。Oracle Database 12cから、データベースは自動的に、指定のワークロードまたはSQLチューニング・セットで必要な列グループを判断し、それらの列グループを作成するようになりました。そのため、指定のどのワークロードについても、各表のどの列をグループ化する必要があるのかを知る必要はありません。

    「特定のワークロードに対して有用な列グループの検出」を参照してください。

  • グローバル一時表のセッション固有統計

    このリリースから、グローバル一時表に、各セッションの異なるオプティマイザ統計セットが含まれるようになりました。セッション固有の統計により、ユーザーは、各セッションでグローバル一時表の統計を設定したり、動的統計を使用したりする必要がなくなるため、一時表のパフォーマンスと管理性が向上します。グローバル一時表に対するカーディナリティ見積りのエラーの可能性は低くなり、最適な実行計画の決定に必要な情報がオプティマイザに確実に存在するようになります。

    「グローバル一時表のセッション固有統計」を参照してください。

  • SQLテスト・ケース・ビルダーの拡張

    SQLテスト・ケース・ビルダーにより、特定の動的および変動要因に依存するインシデントの診断を可能にするアクションおよびイベントを捕捉して再現できます。この機能は特に、パラレル問合せおよび自動メモリー管理に役に立ちます。

    「SQLテスト・ケース・ビルダーを使用した診断データの収集」を参照してください。

  • バルク・ロードのためのオンライン統計収集

    バルク・ロードとは、CREATE TABLE AS SELECTまたはINSERT INTO ... SELECT操作です。Oracle Database 12cより前のリリースでは、失効した統計によって実行計画が最適なものとならない可能性を避けるため、バルク・ロードの後に手動で統計を収集する必要がありました。このリリースから、Oracle Databaseでは、オプティマイザ統計が自動的に収集されるようになりました。それにより、パフォーマンスと管理性の両方が向上します。

    「バルク・ロードのためのオンライン統計収集」を参照してください。

  • パーティション・メンテナンス操作後にシノプシスを再利用します。

    ALTER TABLE EXCHANGEは共通のパーティション・メンテナンス操作です。パーティションの交換時に、パーティションおよび表の統計も交換されます。シノプシスとは、INCREMENTAL値がtrueに設定されている場合に、パーティション表で収集される一連の補助統計です。Oracle Database 12cより前のリリースでは、表にある表レベルのシノプシスは収集できませんでした。これにより、表にある表レベルのシノプシスの収集、表とパーティションの交換およびパーティションのシノプシスによる終了ができませんでした。増分モードでオプティマイザ統計を明示的に収集して、欠落しているシノプシスを作成する必要がありました。このリリースからは、表にある表レベルのシノプシスを収集できます。この表を、増分モードの表内のパーティションと交換する場合は、シノプシスも交換されます。

    「パーティション・メンテナンス操作の増分統計の維持」を参照してください。

  • 失効したまたはロックされたパーティション統計のある表に対するグローバル統計の自動更新

    増分統計では、パーティションまたはサブパーティション統計が失効したりロックされている場合でも、パーティション表のグローバル統計を自動的に計算できます。

    「失効したまたはロックされたパーティション統計のある表の増分統計の維持」を参照してください。

  • キューブ問合せのパフォーマンスの向上

    この向上により、CPUおよびメモリーの消費が最小化され、キューブに対する問合せのI/Oが削減されます。

    CUBE JOIN操作の詳細は、表7-7を参照してください。

非推奨となった機能

次の機能は、今回のリリースで非推奨となっており、将来のリリースではサポートされなくなります。

サポート対象外機能

このドキュメントで以前説明されていたいくつかの機能は、Oracle Database 12cではサポートされていません。サポート対象外機能のリストについては、『Oracle Databaseアップグレード・ガイド』を参照してください。

その他の変更

このリリースでのその他の変更は次のとおりです。

  • 新しいチューニング・ガイド

    Oracle Database 11gの『Oracle Databaseパフォーマンス・チューニング・ガイド』は、Oracle Database 12cでは次の2つのガイドに分けられました。

    • Oracle Databaseパフォーマンス・チューニング・ガイド(データベースのチューニングに関連するトピックのみが含まれています)

    • Oracle Database SQLチューニング・ガイド(SQLのチューニングに関連するトピックのみが含まれています)