承認済の計画
SQL計画管理のコンテキストにおいて、SQL文のSQL計画ベースラインに存在する計画であり、オプティマイザで使用できます。承認済の計画には、ヒント・セット、計画のハッシュ値、計画に関連するその他の情報が含まれます。
適応カーソル共有
バインド変数を含む1つの文で複数の実行計画を使用可能にする機能。カーソル共有には「適応」機能があります。つまり、データベースが各実行または各バインド変数値に常に同じ計画を使用することがないように、カーソルがその動作を適応させます。
適応問合せ最適化
適応オプティマイザが、実行計画に対する実行時の調整を行い、より優れた統計を導くための追加情報を検出できるようにするための一連の機能。適応最適化は、最適な計画を生成するために既存の統計が十分でない場合に役に立ちます。
自動データベース診断モニター(ADDM)
ADDMはOracle Databaseに組み込まれている自己診断エンジンです。ADDMで自動ワークロード・リポジトリ(AWR)に取得されたデータが調査および分析され、発生する可能性のあるデータベース・パフォーマンスの問題を判別します。
初期計画の自動取得
データベースで実行される繰返し可能なSQL文のSQL計画ベースラインを自動的に作成するメカニズム。OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES
初期化パラメータをtrue
に設定することで(デフォルトはfalse
)、初期計画の自動取得を有効にします。
繰返し可能なSQL文を参照してください。
自動再最適化
SQL文のその後の実行時に計画を自動的に変更するオプティマイザの機能。自動再最適化は、最適ではない分散メソッドから並列度の不正確な選択まで、オプティマイザの見積りが不正確であるために選択されたすべての最適でない計画を修正できます。
自動SQLチューニング・アドバイザ
自動化メンテナンス・タスクとして実行するSQLチューニング・アドバイザ。自動SQLチューニングは自動化メンテナンス・タスクとしてシステムのメンテナンス時に実行され、高負荷SQL文の実行計画を改善する方法を検索します。
SQLチューニング・アドバイザを参照してください。
自動チューニング・オプティマイザ
SQLチューニング・アドバイザで起動されるオプティマイザ。SQLチューニング・モードにおいて、オプティマイザは、追加の分析を実行して、標準モードで生成された計画をさらに改善できるかどうかをチェックします。オプティマイザの出力は、実行計画ではなく、さらに優れた計画を生成するための一連のアクションと、その理論的根拠および予測されるメリットを示します。
自動ワークロード・リポジトリ(AWR)
問題の検出および自己チューニングを目的として、Oracle Databaseのコンポーネントに、統計の収集、保持および使用のためのサービスを提供するインフラストラクチャ。
AWRスナップショット
パフォーマンスの比較に使用される特定の期間についてのデータのセット。スナップショットで取得したデルタ値は、時間ごとの各統計に対する変更を示します。収集した統計はメモリーから問い合せます。収集したデータは、レポートおよびビューで表示できます。
バインド対応カーソル
バインド値ごとに異なる計画を使用するのに適したバインド依存カーソル。カーソルをバインド対応にした後で、オプティマイザは、バインド値とそのカーディナリティの見積りを基に、今後の実行のための計画を選択します。
バインド依存カーソル
最適な計画がバインド変数の値に依存するカーソルです。データベースは、別の計画が有効であるかどうかを判断するために、別のバインド値を使用するバインド依存カーソルの動作を監視します。
バインド変数
SQL文の中のプレースホルダで、SQL文を正常に実行するために、有効な値または値のアドレスと置換される必要があります。バインド変数を使用すると、実行時に入力データまたはパラメータを受け取るSQL文を作成できます。次の問合せでは、バインド変数としてv_empid
を使用します。
SELECT * FROM employees WHERE employee_id = :v_empid;
バインド変数の照合
ハード解析の間にバインド変数の値を参照するオプティマイザの機能。バインド値を照合することにより、まるでリテラルが使用された
かのようにWHERE句条件の選択性を判断することができ、これによって計画が改善されます。
ビットマップ・ピース
ビットマップ索引エントリのサブコンポーネントです。索引付けられた列の値には1つ以上のビットマップ・ピースが含まれる場合があります。データベースはビットマップ・ピースを使用して、ブロックのサイズに比べて大きい索引エントリを分割します。
Bツリー索引
ツリーを上下反転させたような形状の索引。Bツリー索引には、検索用のブランチ・ブロックと、値を格納するリーフ・ブロックの2種類のブロックがあります。リーフ・ブロックには、すべての索引付きデータ値と、実際の行を検索するための対応するROWIDが含まれています。Bはbalanced(バランスが取れた)の略で、これは、すべてのリーフ・ブロックが自動的に同じ深さになるためです。
デカルト結合
1つ以上の表が文中に他の表への結合条件を持たない結合。オプティマイザは、データ・ソースにあるすべての行を、2つのセットのデカルト積を作成しながら、別のデータ・ソースにあるすべての行と結合します。
子カーソル
親カーソルにテキストが格納されている文の計画、コンパイル環境およびその他の情報が含まれるカーソル。親カーソルの番号は0
、最初の子の番号は1
、のようになります。子カーソルは親カーソルと同じSQLテキストを参照しますが、異なります。たとえば、テキストSELECT * FROM t
での2つの問合せは、t
という名前の2つの異なる表を参照する場合に、別のカーソルを使用します。
クラスタ・スキャン
表クラスタへのアクセス・パス。索引クラスタでは、最初に、クラスタ索引をスキャンして、選択された行の1つのROWIDを取得します。次に、このROWIDに基づいて行の位置を特定します。
複合データベース操作
データベース操作において、各セクションが独自の開始点および終了点を定義する、データベース・セッションの2つの時点間でのアクティビティです。1つのセッションは、一度に1つの複合データベース操作にのみ関与できます。
同時実行性
多数のユーザーによる同一のデータへの同時アクセス。マルチユーザー・データベース管理システムには、データが正しく更新または変更され、データ整合性が維持されるように、適切な同時実行性制御が必要です。
カーソルのマージ
共有SQL領域を節約するためのカーソルの結合。オプティマイザがバインド対応カーソルの計画を作成し、この計画が既存のカーソルと同じである場合、オプティマイザはカーソルのマージを実行できます。
並列度(DOP)
単一の処理に関連付けられているパラレル実行サーバーの数。パラレル実行は複数のCPUを効率よく使用するためのものです。Oracle Databaseのパラレル実行フレームワークでは、特定の並列度をユーザーが明示的に選択することも、Oracle Databaseによって自動的に並列度を制御することもできます。
動的パフォーマンス・ビュー
動的パフォーマンス表で作成されたビュー。現在のデータベース・アクティビティを記録する仮想表です。動的パフォーマンス・ビューは、データベース管理者が変更または削除できないため、固定ビューと呼ばれます。文字列V$
(Oracle RACのGV$
)で始まるため、V$
ビューとも呼ばれます。
動的統計レベル
データベースで動的統計を収集するタイミングと、統計の収集にオプティマイザが使用するサンプル・サイズの両方を制御するレベル。動的統計レベルを設定するには、OPTIMIZER_DYNAMIC_SAMPLING
初期化パラメータまたは文ヒントのいずれかを使用します。
エンドポイント数
ヒストグラム内のバケットを一意に識別する番号。頻度ヒストグラムおよびハイブリッド・ヒストグラムでは、エンドポイント数はエンドポイントの頻度の累積です。高さ調整済ヒストグラムでは、エンドポイント数はバケット数です。
エンドポイント繰返しカウント
ハイブリッド・ヒストグラムでは、ヒストグラム内の各エンドポイント(バケット)について、エンドポイント値が繰り返された回数。繰返しカウントを使用することで、オプティマイザは、ほぼポピュラーな値についての正確な見積りを得ることができます。
実行計画
SQL文を実行するためにデータベースによって使用されるステップの組合せ。各処理では、データベースからデータ行を物理的に検索するか、文を発行したセッションのためにデータ行を準備します。ヒントを使用すると実行計画を上書きできます。
拡張可能オプティマイザ
ユーザー定義関数およびユーザー定義索引の作成者が、実行計画選択時にオプティマイザで使用する統計収集、選択性およびコスト・ファンクションを作成できるオプティマイザ機能。オプティマイザのコスト・モデルは、CPUおよびI/Oのコストにアクセスするユーザーから提供される情報を統合するように拡張されています。
外部表
メタデータがデータベースに格納されている一方、データがデータベース外部のファイルに格納されている読取り専用の表。データベースは外部表を記述したメタデータを使用して、外部表をリレーショナル表とみなし、外部表のデータを公開します。
頻度ヒストグラム
列の各個別値が1つのバケットに対応するヒストグラムのタイプ。コインの分類に例えて考えてみましょう。バケット1にはすべての1セント硬貨を入れ、バケット2にはすべての5セント硬貨を入れるなどのように分類します。
完全外部結合
左と右の外部結合の組合せ。内部結合に加えて、内部結合の結果で戻されなかった両方の表からの行がNULLを使用して維持されます。つまり、完全外部結合を使用すると、表をまとめて結合できますが、結合される表内に対応する行を持たない行も示すことができます。
ハード解析
新しい実行可能なバージョンのアプリケーション・コードを構築するためにデータベースによって実行されるステップ。実行を依頼された文の解析済の表現が共有SQL領域内に存在しない場合、データベースはソフト解析ではなくハード解析を行います。
ハッシュ結合
大規模なデータ・セットを結合する方法。データベースは、2つのデータ・セットの小さい方を使用して、メモリーに結合キーについてのハッシュ表を作成します。次に、大きい方のデータ・セットをスキャンし、ハッシュ表を調べて結合された行を見つけます。
ハッシュ・スキャン
表クラスタへのアクセス・パス。ハッシュ・スキャンでは、ハッシュ値に基づいてハッシュ・クラスタ内の行の位置を特定します。ハッシュ・クラスタ内においては、同一のハッシュ値を持つすべての行が同じデータ・ブロックに格納されています。ハッシュ・スキャンを実行するには、最初に、文で指定されたクラスタ・キー値にハッシュ関数を適用することによって、ハッシュ値を取得し、次に、そのハッシュ値を持つ行が含まれているデータ・ブロックをスキャンします。
ハッシュ表
ハッシュ結合で結合キーを行と関連付けるインメモリー・データ構造。たとえば、employees
表とdepartments
表の結合では、部門IDが結合キーになる場合があります。ハッシュ関数は結合キーを使用してハッシュ値を生成します。このハッシュ値は、ハッシュ表である配列内の索引です。
ハッシュ値
ハッシュ・クラスタで、バケットを識別する一意の数値ID。Oracle Databaseでは、無数にあるハッシュ・キー値を入力として受け付け、限定された数のバケットに選別するハッシュ関数が使用されます。各ハッシュ値は、ハッシュ・キー値(部門10、20、30など)に対応する行の格納ブロックのデータベース・ブロック・アドレスにマップされます。
暗黙的問合せ
副問合せなしでデータを取得するDML文の構成要素。明示的にSELECT
文が含まれていないUPDATE
、DELETE
またはMERGE
文では、変更対象の行が暗黙的問合せを使用して取得されます。
索引スキップ・スキャン
索引スキャンは、コンポジット索引の初期列が問合せでスキップされる(指定されない)場合に行われます。たとえば、コンポジット索引キーが(cust_gender,cust_email)
である場合、問合せ述語はcust_gender
列を参照しません。
索引統計
全表スキャンまたは索引スキャンを実行するかどうかの判断をするためにオプティマイザが使用する索引に関する統計。索引統計には、Bツリー・レベル、リーフ・ブロック数、索引クラスタ化係数、個別キーおよび索引内の行数が含まれます。
内部表
ネステッド・ループ結合における、外部表(駆動表)ではない表。外部表の行ごとに、内部表のすべての行がアクセスされます。外部ループは外部表にあるすべての行に対するものであり、内部ループは内部表の中にあるすべての行に対するものです。
結合の因数分解
UNION ALL
問合せのブランチの共通の計算を因数分解する、コストベースの変換。結合の因数分解を使用しない場合、オプティマイザは、UNION ALL
問合せの各ブランチを単独で評価します。そのため、データ・アクセスや結合などの処理が繰り返し実行されることになります。大きな実表を追加でスキャンすることを回避できるため、パフォーマンスが大幅に向上します。
結合順序
複数の表を一緒に結合する順序。たとえば、employees
表の行ごとに、departments
表の各行を読み取ることができます。別の結合順序では、departments
表の行ごとに、employees
表の各行を読み取ります。
Oracle Databaseでは、3つ以上の表を結合する文を実行する場合、2つの表を結合し、その結果作成された行ソースを次の表に結合します。このプロセスは、すべての表が結合されて結果が生成されるまで続きます。
ライブラリ・キャッシュ
共有プール内のメモリー領域。このキャッシュには、共有SQL領域、プライベートSQL領域(共有サーバー構成の場合)、PL/SQLプロシージャおよびパッケージ、ロックやライブラリ・キャッシュ・ハンドルなどの制御構造が含まれています。
メンテナンス・ウィンドウ
自動化されたメンテナンス・タスクが実行される連続的な時間間隔。メンテナンス・ウィンドウは、MAINTENANCE_WINDOW_GROUP
というウィンドウ・グループに属するOracle Schedulerのウィンドウです。
マルチブロック読取り
複数のデータベース・ブロックを読み込むI/Oコール。マルチブロック読取りでは、高速で全表スキャンを実行できます。たとえば、データ・ブロックが8 KBの場合がありますが、オペレーティング・システムでは1回のI/Oで1024 KBを読み取れます。問合せによっては、オプティマイザが、1回のI/Oで128個のデータ・ブロックを読み取るほうが128回の順次I/Oよりもコスト効率が高いと判断する場合があります。
ネステッド・ループ結合
結合方法の一種。ネステッド・ループ結合は、結合を駆動する外部表を判定し、外部表の各行について内部表の各行を調べます。外部ループは外部表にある各行に対するものであり、内部ループは内部表の中にある各行に対するものです。プログラミングに例えると、別のfor
ループを含むfor
です。
オンデマンドSQLチューニング
SQLチューニング・アドバイザの手動起動。自動SQLチューニング・タスクの結果として行われるのではないSQLチューニング・アドバイザの起動は、すべてオンデマンド・チューニングです。
オプティマイザのコスト・モデル
オプティマイザが実行計画を選択するために使用するモデル。オプティマイザはコストが最も少ない実行計画を選択します。コストは、その計画のリソース使用量の見積りを表します。オプティマイザ・コスト・モデルでは、問合せで使用されるI/O、CPUおよびネットワーク・リソースが考慮されます。
オプティマイザの目標
オプティマイザによるリソース使用の優先順位付け。OPTIMIZER_MODE
初期化パラメータの使用により、オプティマイザの目標を最短のスループットや最短のレスポンス時間に設定できます。
オプティマイザ統計の収集
データベース・オブジェクトのオプティマイザ統計を収集すること。データベースではこの統計を自動的に収集するか、またはシステムによって提供されるDBMS_STATS
パッケージを使用して手動で収集できます。
外部結合
表のどれか1つの1つ以上の列で外部結合演算子(+
)を使用する結合条件。データベースは、結合条件に一致する行をすべて戻します。また、外部結合演算子を指定した表で一致する行がない場合、外部結合演算子を使用せずに表からすべての行を戻します。
パラレル問合せ
1つのSQL問合せを実行するために、複数のプロセスが同時に連携して動作する問合せ。複数プロセス内で作業を分割すると、Oracle Databaseでは、より迅速に文を実行できます。たとえば、1つのプロセスで4つの四半期分をすべて処理するのではなく、4つのプロセスで1年のそれぞれの四半期に対する行を取得します。
親カーソル
SQLテキストおよびSQL文のその他の最小情報が格納されているカーソル。子カーソルには、計画、コンパイル環境、その他の情報が含まれます。文が最初に実行されると、データベースによって共有プールに親カーソルと子カーソルが作成されます。
解析
SQL文の各部分を他のルーチンで処理できるデータ構造へ分解するSQL処理の段階。
ハード解析は、実行されるSQL文が、共有プール内にないか、共有プール内にあっても共有できない場合に行われます。ソフト解析は、セッションでSQL文を実行する際に、その文がすでに共有プール内にあり、その文を使用できる場合に行われます。
パフォーマンス・フィードバック
この自動再最適化の形式ではPARALLEL_DEGREE_POLICY
がADAPTIVE
に設定された場合に、繰り返しSQL文に対して自動的に選択される並列度を改善できます。
パイプライン・テーブル・ファンクション
入力として行のコレクションを受け入れるPL/SQLファンクション。SELECT
文のFROM
リストで表演算子のオペランドとしてテーブル・ファンクションを起動します。
述語のプッシュ
オプティマイザが関連する述語を、それを含む問合せブロックからビューの問合せブロックにプッシュする変換技法。マージされていないビューでは、プッシュされた述語は、索引へのアクセスまたはフィルタとして使用できるので、この方法を使用するとマージされていないビューのサブプランが改善されます。
プライベートSQL領域
解析済の文と処理に使用するその他の情報が保持されるメモリー内の領域。プライベートSQL領域には、バインド変数値、問合せ実行状況の情報、問合せ実行作業領域などのデータが格納されます。
SQLの事前チューニング
SQLチューニング・ツールを使用して、ユーザーがパフォーマンスの問題に不満を持つ前にチューニングの候補となるSQL文を識別することです。
SQLの事後チューニング、SQLチューニングを参照してください。
再帰的SQL
ユーザーが発行したSQL文を実行するために、データベースで発行が必要になるSQLの追加文。再帰的SQLの生成は、再帰的コールと呼ばれます。たとえば、データ・ディクショナリの情報がメモリーにないため、ディスクから取り出す必要がある場合に、データベースで再帰的コールが生成されます。
行ソース・ツリー
行ソース・ジェネレータによって生成される行ソースのコレクション。SQL文の行ソース・ツリーでは、表の順序、アクセス方法、結合方法、フィルタやソートなどのデータ操作といった情報を示します。
選択性
述語または述語の組合せによって取り出される行セットの割合を示す値。たとえば、WHERE last_name = 'Smith'
などです。0
を選択すると述語テストに合格する行がないことを意味し、値1
を選択するとすべての行がテストに合格することを意味します。
選択性という語句は、大まかに「選ぶ」ことを意味します。選択性の高い問合せでは、戻される行の割合が低く(選択性が0
に近い)、非選択性の高い問合せでは、戻される行の割合は高くなります(選択性が1
に近い)。
セミ結合
第2の表に少なくとも1つの一致がある場合に、第1の表から行を戻す結合。たとえば、少なくとも1人従業員がいる部門をリストします。セミ結合と従来の結合の違いは、第1の表の行が1回しか戻されないことです。セミ結合は、EXISTS
またはIN
の構成を使用します。
ソフト解析
ハード解析以外のすべての解析。発行されるSQL文が共有プール内の再利用可能なSQL文と同じ場合、Oracle Databaseは既存のコードを再利用します。コードの再利用は、ライブラリ・キャッシュ・ヒットとも呼ばれます。
SQLアクセス・アドバイザ
SQLアクセス・アドバイザは、どのマテリアライズド・ビュー、索引およびマテリアライズド・ビュー・ログを作成、削除または保持するのが適切かを提示する内部診断ソフトウェアです。
SQL計画ディレクティブ
オプティマイザがより最適な計画を生成するために使用できる追加情報および命令。たとえば、SQL計画ディレクティブは、欠落している統計の収集または動的統計の収集をオプティマイザに命令することもあります。
SQL ID
特定のSQL文に対する、ライブラリ・キャッシュ内の親カーソルの一意の識別子。SQL文のテキストに適用されたハッシュ関数によってSQL IDが生成されます。V$SQL.SQL_ID
列で、SQL IDが表示されます。
SQLインシデント
Oracle Databaseの障害診断インフラストラクチャでは、SQL関連の問題の1回の発生を表します。問題(クリティカル・エラー)が複数回発生したとき、それぞれの発生に対してインシデントが作成されます。インシデントには日時が記録され、自動診断リポジトリ(ADR)で追跡されます。
SQL管理ベース(SMB)
文のログ、計画履歴、SQL計画ベースラインおよびSQLプロファイルが格納されている論理リポジトリ。SMBは、データ・ディクショナリの一部であり、SYSAUX
表領域内にあります。
SQL計画ベースライン
繰返し可能なSQL文に対する1つ以上の承認済の計画のセット。各承認済の計画には、ヒント・セット、計画のハッシュ値、計画に関連するその他の情報が含まれます。SQL計画管理は、SQL計画ベースラインを使用して、一定期間SQL文の実行計画を記録し、評価します。
SQL計画ディレクティブ
オプティマイザがより最適な計画を生成するために使用する追加情報。オプティマイザは、文レベルではなく、問合せ式のSQL計画ディレクティブを収集します。このようにして、ディレクティブは、複数のSQL文で使用可能になります。
SQLプロファイル
SQL文の自動チューニング中に作成される補助的な情報セット。SQLプロファイルとSQL文の関係は、統計と表の関係と同様です。オプティマイザは、SQLプロファイルを使用して、カーディナリティおよび選択性の見積りを改善し、より適切な計画を選択できるようになります。
SQLシグネチャ
大/小文字および空白が正規化されているSQL文のテキストを使用して計算されたハッシュ値。SQL文は一意に識別されます。データベースでは、このシグネチャをキーとして使用し、SQLプロファイル、SQL計画ベースライン、SQLパッチなどのSQL管理オブジェクトを管理します。
SQLテスト・ケース・ビルダー
ユーザーが別のデータベースで問題を再現できるように、SQL文の関連情報を収集し、パッケージ化するデータベース機能。DBMS_SQLDIAG
パッケージは、SQLテスト・ケース・ビルダーのインタフェースです。
SQLトレース・ファイル
個々のSQL文に関するパフォーマンス情報を提供するサーバー生成ファイル。たとえば、トレース・ファイルには、解析数、実行数、フェッチ数、CPUと経過時間、物理読込みと論理読込み、ライブラリ・キャッシュでのミスなどが含まれます。
スター・スキーマ
ディメンション・データ・モデルを表すように設計されたリレーショナル・スキーマです。1つ以上のファクト表と、外部キーを介して関連付けられている1つ以上のディメンション表で構成されます。
統計フィードバック
カーディナリティの見積りが誤っている繰返し問合せの計画を自動的に改善する自動再最適化の形式。オプティマイザは、統計がない、統計が不正確である、述語が複雑であるなど、多数の理由でカーディナリティを誤って見積ることがあります。
サブプラン
オプティマイザが実行時に代替として切り替えることができる適応計画の一部。サブプランは、計画内の複数の操作で構成できます。たとえば、オプティマイザは、実行時に計画を変更するかどうか判断する際に、結合方法および対応するアクセス・パスを1単位として扱うことができます。
表クラスタ
1つ以上の共通する列を持つ、1つ以上の表のデータを含むスキーマ・オブジェクト。表クラスタでは、データベースは同じクラスタ・キーを共有するすべての表について、すべての行をまとめて格納します。
表統計
表アクセス・コスト、結合カーディナリティ、結合順序などを判断するためにオプティマイザが使用する表に関する統計。表統計には、行数、ブロック数、空のブロック、各ブロックの平均空き領域、連鎖行数、行の平均の長さおよび表統計の失効が含まれます。
チューニング・モード
2つのオプティマイザ・モードのうちの1つ。チューニング・モードで実行する場合、オプティマイザは自動チューニング・オプティマイザと呼ばれます。チューニング・モードにおいて、オプティマイザは、標準モードで生成された計画をさらに改善できるかどうかを判断します。オプティマイザの出力は、実行計画ではなく、さらに優れた計画を生成するための一連のアクションと、その理論的根拠および予測されるメリットを示します。
非選択性
行セットのうち比較的多数の行。選択性が1
に近づくほど、問合せの非選択性は高くなります。たとえば、100万行の表から999,999行が戻される問合せは、非選択性の問合せです。1行を戻す同じ表の問合せは、選択性の問合せです。
ビューのマージ
ビューを表す問合せブロックを、それを包含する問合せブロックにマージすること。ビューのマージにより、オプティマイザが追加の結合順序、アクセス方法およびその他の変換を考慮できるようになり、計画を向上させることができます。