Chapter 06

システムグローバル領域(SGA)

Me
Me
2021.11.23に更新

システムグローバル領域 (SGA)

インスタンス起動時に割り当てられるプロセス間共有メモリ領域をSGAと呼ぶ.
プロセス間で共有しない特定のプロセス専用の領域はプログラムグローバル領域またはPGAと呼ぶ.

SGAは以下のようなコンポーネントから構成される.

データベースバッファキャッシュ領域

データベースから読み込んだデータを一時的にキャッシュしておくための領域をデータベースバッファキャッシュ領域と呼ぶ.
一般的なキャッシュメモリと同様に、ユーザが要求した情報がデータベースバッファキャッシュ領域に保管されている場合は、データベースから取得は行わずにキャッシュ情報を再利用する.
また、書き込みの際にも、Oracleはデータベースへの即時書き込みは行わず、一時的に内容をキャッシュする. キャッシュされた書き込み情報はバックグラウンド・プロセスの1つであるデータベースライター(DBWn)により遅れてDBへの書き込み処理が行われる (遅延書き込み).

遅延書き込みのメリットは以下の通り:
a. 書き込み処理が一時的に高頻度になっても、処理負荷の平準化が行われる.
b. 同じデータへの書き込み処理が複数回行われた場合であっても、実際のDBへの書き込み回数が1度に固定化される.

REDO ログバッファ領域

REDOログファイルに書き込む前の変更履歴を一時的に保管する.

Javaプール領域

Java言語で記述されたストアドプログラムの実行時に使用される領域.

ラージプール領域

バックアップや並列処理などの作業領域として使用される.

共有プール領域

解析済みSQLやシーケンス、データディクショナリなどをキャッシュする.

SQL文が発行された際の処理と、共有プールに保管されるまで(参考)

  1. 解析
    1a. 構文チェック : SQL文の構文上の妥当性 (FROMなどの予約文字のスペルミスを含む) を検査する.
    1b. セマンティクスチェック : SQL文内で参照されているオブジェクトや列の存在有無などを検査し、文の有効性を確認する.
    1c. 共有プール・チェック : リソース集中型の手順を省略できるかどうかを検査する. 共有プール内に過去に解析されたSQL文が、実行されるSQL文と等価である場合、情報を再利用することで後続処理であるを省くことで、SQL解析のオーバーヘッドを回避する.
    - 存在する場合 : (キャッシュ情報を利用し、処理の実行を行う) 一連の解析をソフト解析と呼ぶ
    - 存在しない場合 :(最適化と行ソース生成および処理の実行を行う) 一連の解析をハード解析と呼ぶ
  2. 最適化
  3. 行ソース生成
  4. 処理の実行