GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

Oracle データベース アーキテクチャ(共有プール)

f:id:undercovergeek:20200710090740p:plain

共有プールはシステムグローバルエリア(SGA)のコンポーネントであり、さまざまなタイプのプログラムデータのキャッシュを担当する。
例えば、共有プールには、解析されたSQL、PL/SQLコード、システムパラメータ、およびデータディクショナリ情報が格納される。
共有プールは、データベースで発生するほとんどすべての操作に関与している。
例えば、ユーザーがSQL文を実行すると、Oracle Databaseは共有プールにアクセスする。

共有プールはいくつかのサブコンポーネントに分かれている。

ライブラリキャッシュ

実行可能なSQLおよびPL/SQLコードを格納する共有プールのメモリ構造。
このキャッシュには、共有SQLおよびPL/SQL領域と、ロックやライブラリキャッシュハンドルなどの制御構造が含まれている。
SQL文が実行されると、データベースは以前に実行されたコードを再利用しようとする。
SQLステートメントの解析済み表現がライブラリキャッシュに存在し、共有できる場合、データベースはコードを再利用する。
このアクションは、ソフト解析またはライブラリキャッシュヒットと呼ばれる。
それ以外の場合、データベースは、ハード解析またはライブラリキャッシュミスと呼ばれる、アプリケーションコードの新しい実行可能バージョンを構築する必要がある。

予約済みプール

共有プール内のメモリー領域であり、Oracle Databaseはこれを使用して、連続した大量のメモリーを割り当てることができる。
データベースは、共有プールからチャンクでメモリを割り当てる。
チャンキングにより、1つの連続した領域を必要とせずに、ラージオブジェクト(5 KB以上)をキャッシュにロードできる。
このようにして、データベースは断片化のために連続したメモリが不足する可能性を減らす。

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

データベースオブジェクト(ディクショナリデータ)に関する情報を格納する。
このキャッシュは、データをバッファではなく行として保持するため、行キャッシュとも呼ばれる。

サーバー結果キャッシュ

共有プール内のメモリプールであり、結果セットを保持する。
サーバー結果キャッシュには、同じインフラストラクチャを共有するSQLクエリ結果キャッシュとPL/SQL関数結果キャッシュが含まれる。
SQLクエリ結果キャッシュには、クエリの結果とクエリフラグメントが格納される。
ほとんどのアプリケーションは、このパフォーマンスの向上の恩恵を受けている。
PL/SQLファンクションの結果キャッシュには、ファンクションの結果セットが格納される。
結果のキャッシュに適した候補は、比較的静的なデータに依存する、頻繁に呼び出される関数。

その他のコンポーネント

エンキュー、ラッチ、情報ライフサイクル管理(ILM)ビットマップテーブル、アクティブセッション履歴(ASH)バッファー、およびその他のマイナーメモリ構造が含まれる。
エンキューは、データベースリソースへのアクセスをシリアル化する共有メモリ構造(ロック)。
これらは、セッションまたはトランザクションに関連付けることができる。
例:制御ファイルトランザクション、データファイル、インスタンスリカバリ、メディアリカバリ、トランザクションリカバリ、ジョブキューなど。
ラッチは、SGA内の共有データ構造を同時アクセスから保護するために使用される低レベルのシリアル化制御メカニズムとして使用される。
例:行キャッシュオブジェクト、ライブラリキャッシュピン、ログファイルの並列書き込み。

スポンサーリンク