レック・テクノロジー・コンサルティング株式会社TECH BLOG

Oracleのメモリ SGAとPGA

前回の続きです。
今回はインスタンス君の頭の中(メモリ)を覗いてみました。

すると、「SGA」「PGA」と書かれていました。

Instance Memory PGA SGA

これは何だ?と思いつつ、インスタンス君取扱説明書(要はOracleのマニュアル)を見てみると、

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

SGAは、SGAコンポーネントと呼ばれる共有メモリー構造のグループで、1つのOracle Databaseインスタンスに関するデータと制御情報が保存されています。SGAは、すべてのサーバー・プロセスおよびバックグラウンド・プロセスで共有されます。SGAに格納されるデータの例には、キャッシュ・データ・ブロックや共有SQL領域があります。

プログラム・グローバル領域(PGA)

PGAは、サーバー・プロセスのデータおよび制御情報が含まれるメモリー領域です。これはサーバー・プロセスの開始時にOracle Databaseによって作成される非共有メモリーです。PGAへのアクセスは、サーバー・プロセスごとに排他的です。各サーバー・プロセスごとに1つのPGAが存在します。バックグラウンド・プロセスにも独自のPGAが割り当てられます。Oracle Databaseインスタンスに連結されるすべてのバックグラウンドおよびサーバー・プロセスに割り当てられるPGAメモリーの合計はインスタンスPGAメモリー合計と呼ばれ、個々のPGAの集合はインスタンスPGA合計、または単にインスタンスPGAと呼ばれます。

・・・まったく分からない。。。(いや、分かりますけどね)
さすがインスタンス君取扱説明書(要はOracleのマニュアル)は難解です。

つまり、こういうことです。

SGA: 共有
PGA: 非共有

ん?分かりやすくしたはずが、よく分からない・・・?

SGA: インスタンス君一家がみんなで使うリビング
PGA: 子分1人1人の仕事部屋

みたいな感じでしょうか。

リビング(SGA)にあるものはみんなが共有して使えます。
インスタンス君一家は超デジタル世代なのでデジタル系のものがたくさん置いてあります。
※ただし、長時間の独占はご主人様(ユーザ)からめちゃくちゃ怒られます。(ホントに)

SGA PGA

SGAにはみんなで使う情報、基本的にはテーブルのデータや、インデックス等がほとんどを占め、SQLの実行計画なども含まれます。

PGAにはスタック領域、セッション情報、カーソルの状態、ソート領域などがあり、そういう難しい話は別の回に私より真面目な誰かが書いてくれる段取りになっています。

今回の話を例によって反映すると、このようになります。

次回はファイルについてです。
それでは。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る