【ORACLE】共有プールとは

ここでは、ORACLEデータベースのメモリ領域SGAの中にある、共有プールについて紹介します。

共有プールは、ライブラリキャッシュ、ディクショナリキャッシュ、結果キャッシュの大きく3つの役割があります。

SGAの内容については↓で紹介していますので参考にしてください。
>>【ORACLE】SGAとは

ライブラリキャッシュ

ライブラリキャッシュには、一度実行されたSQLの解析結果(実行計画など)の情報が格納されています。

SQLが実行されたとき、ORACLEオプティマイザによって、そのSQLが過去に実行され解析済みの情報がライブラリキャッシュ内に存在するかどうかチェックします。

解析済み情報が存在する場合は、解析済みの情報を使ってSQLを実行します。解析済み情報が存在しない場合は、ハードパースと呼ばれる解析処理が行われます。

ハードパースは非常に時間とコストのかかる処理で、SQLのパフォーマンスに大きく影響します。よってライブラリキャッシュが十分な容量でないと、データベース全体のパフォーマンスにも影響が出る可能性があります。

ディクショナリキャッシュ

データディクショナリビューの情報をキャッシュさせるための領域です。

データディクショナリビューとは、テーブルやインデックスなどのオブジェクトの定義や権限などの情報が格納されており、頻繁にアクセスされる情報です。そのため、ディクショナリキャッシュに保持し、アクセル効率を向上させています。

結果キャッシュ

SQLの問合せやファンクションの結果をキャッシュします。SQLにヒントでresul_cacheを書いた場合のSQL結果などが格納されます。