オプティマイザと共有プール
オプティマイザとは、SQL文を解析し最適な処理方式を考えてくれる機能です。
オプティマイザによって考えられた処理方式は共有プールにキャッシュされ再利用されます。
SQL文の特徴としてあげられるのが処理方式を記述しないことです。
なのでRDBMSではオプティマイザがパース(解析)を行い処理方式を決定するのです。
オプティマイズの詳細
Oracleにおいて、オプティマイザの役割を担うのが、サーバプロセスです。サーバプロセスは「コストベース」で処理方式を決定します。コストベースとは、処理時間やI/O回数が最少になるという考え方になります。簡単に言うと一番早く処理できる方式を選択するということです。
サーバプロセスがコストベースでオプティマイズする際に、処理時間を見積もる元となるデータを「統計情報」といいます。
統計情報には、データベースの表データ数やインデックスやCPUクロック、I/O性能などの情報が含まれます。
この統計情報をOracleでは「アナライズ」という定期的な処理によって収集します。
共有プールの動作と仕組み
オプティマイズが以下に大変かということは理解していただけたと思うので、ここではオプティマイズをリソース消費を抑えてかつ高速に処理するために存在する共有プールについて見ていきます。
共有プールもプロセス間で共有する必要があるため、バッファキャッシュと同様に共有メモリに位置します。
共有プールは、ディクショナリキャッシュやライブラリキャッシュなどにわかれます。
以下に、共有プール内の構成を示します。
※ディクショナリキャッシュ:統計情報などのメタ情報が格納される領域
※ライブラリキャッシュ:SQL処理方式(実行計画)を格納する領域
パース(解析)や共有プールの情報をレポートで確認したいときは、Statspack(Oracle分析ツール)を使用して確認することができます。
<オラクルデータベース概要(豆知識)>
|
スポンサードリンク
|