GAGA LIFE.

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

スポンサーリンク

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

f:id:undercovergeek:20200711101601p:plain

ラージプール

ラージプールは、データベース管理者が構成できるオプションのメモリ領域であり、次のものに大容量のメモリを割り当てることができる。
- ユーザーグローバルエリア(UGA):共有サーバーとOracle XAインターフェースのセッションメモリ(トランザクションが複数のデータベースと対話する場合に使用)
- I/Oバッファー領域:I/Oサーバープロセス、並列クエリ操作で使用されるメッセージバッファー、Recovery Manager(RMAN)I/Oスレーブ用のバッファー、アドバンスドキューイングメモリテーブルストレージ
- 遅延挿入プール:高速取り込み機能により、MEMOPTIMIZE FOR WRITEとして定義されたテーブルのデータベースへの高頻度の単一行データ挿入が可能になる。 高速取り込みによる挿入は、遅延挿入とも呼ばれます。 これらは最初に大きなプールにバッファーされ、後でオブジェクトごとにセッションごとに1MB相当の書き込みの後、または60秒後に、スペース管理コーディネーター(SMCO)およびWxxxスレーブバックグラウンドプロセスによって非同期にディスクに書き込まれる。 このプールでバッファリングされたデータは、コミットされていても、SMCOバックグラウンドプロセスがスイープするまで、ライターを含むどのセッションでも読み取ることができない。
プールは、最適化されたテーブルの最初に挿入された行の大きなプールで初期化される。 十分なスペースがある場合、2Gは大きなプールから割り当てられる。 大きなプールに十分なスペースがない場合、ORA-4031が内部的に検出され、自動的にクリアされる。 割り当ては、要求されたサイズの半分で再試行される。 それでも大きなプールに十分なスペースがない場合は、割り当てが512Mおよび256Mで再試行される。その後、インスタンスが再起動されるまで、機能は無効になる。 プールが初期化されると、サイズは静的なままで、伸び縮みすることはない。
- Free memory

ラージプールは、共有プールから割り当てられた他のメモリと同じLRU(Least Recently Used)リストを使用する共有プールの予約スペースとは異なる。 ラージプールにはLRUリストがない。 メモリの一部が割り当てられ、使用が完了するまで解放できない。

クライアントからの接続

ユーザーからの要求は、ユーザーのSQLステートメントの一部である単一のAPI呼び出し。 専用サーバー環境では、1つのサーバープロセスが1つのクライアントプロセスの要求を処理する。 各サーバープロセスは、CPUサイクルやメモリなどのシステムリソースを使用する。 共有サーバー環境では、次のアクションが発生する。
1. クライアントアプリケーションがデータベースインスタンスに要求を送信し、その要求がディスパッチャーによって受信される。
2. ディスパッチャは、リクエストを大きなプールのリクエストキューに配置する。
3. 要求は、次に使用可能な共有サーバープロセスによって取得される。 共有サーバープロセスは、共通の要求キューで新しい要求をチェックし、先入れ先出し方式で新しい要求を取得する。 1つの共有サーバープロセスがキュー内の1つの要求を取得する。
4. 共有サーバープロセスは、データベースに必要なすべての呼び出しを行って、要求を完了する。まず、共有サーバープロセスが共有プールのライブラリキャッシュにアクセスして、要求されたアイテムを確認する。たとえば、テーブルが存在するかどうか、ユーザーに適切な権限があるかどうかなどをチェックする。次に、共有サーバープロセスがバッファキャッシュにアクセスしてデータを取得する。データがそこにない場合、共有サーバープロセスはディスクにアクセスする。異なる共有サーバープロセスが各データベース呼び出しを処理できる。したがって、クエリを解析し、最初の行をフェッチし、次の行をフェッチし、結果セットを閉じる要求は、それぞれ異なる共有サーバープロセスによって処理される場合がある。異なる共有サーバープロセスが各データベース呼び出しを処理する可能性があるため、UGAには各クライアントセッションに関する情報が含まれているため、ユーザーグローバル領域(UGA)は共有メモリ領域である必要がある。または逆に、UGAには各クライアントセッションに関する情報が含まれており、共有サーバープロセスはセッションのデータベース呼び出しを処理できるため、すべての共有サーバープロセスで使用できる必要がある。
5. 要求が完了すると、共有サーバープロセスは、応答を大きなプールの呼び出し側ディスパッチャーの応答キューに配置する。 各ディスパッチャーには独自の応答キューがある。
6. 応答キューはディスパッチャに応答を送信する。
7. ディスパッチャは完了したリクエストを適切なクライアントアプリケーションに返す。

スポンサーリンク