マルチスレッド・サーバ構成
データ
ファイル
制御
ファイル
初期パラメータ
ファイル
Redoログ
ファイル
Redoログ
バッファ
キャッシュ
共有
プール
領域
データベース
バッファ
キャッシュ
アーカイブ
ファイル
DBWR
ARCH
LGWR
SMON
PMON
共有サーバ
・プロセス
要求
キュー
応答
キュー
ディスパッチャ
・プロセス
前のスライド
最初のスライドに戻る
グラフィックスの表示
Notes:
ユーザ・アプリケーションがデータベースに接続すると、サーバ側にてサーバー・プロセスがセッションに対して1つずつ起動します。その為、多くのセッションが同時に接続するとサーバのメモリが消費され、データベースのキャッシュメモリであるシステム・グローバル領域がディスクへスワップ・アウトし、データベース・サーバのパフォーマンスが激減することになります。
そこで、Oracle RDBMSが動作するサーバのリソースであるメモリーを有効に活用するために考えられたのが、『マルチスレッド・サーバ構成』です。
マルチスレッド・サーバ構成は、セッション毎に起動するサーバ・プロセスに対して、決められた『共有サーバ・プロセス』をデータベースが起動する際に同時に起動しておき、1つの共有サーバ・プロセスを複数のセッションにて利用します。その為、サーバのメモリをあまり使用せず、メモリーリソースの問題を解決することができます。
共有サーバ・プロセスに対して、一般的なセッション毎のサーバ・プロセスを『専用サーバ・プロセス』と言います。
共有サーバ・プロセスと専用サーバ・プロセスは、サーバ上にて混在することができます。ユーザ・アプリケーションは、データベースに接続する際、共有サーバ・プロセスに接続するか、専用サーバ・プロセスに接続するか指定することができます。設定は SQL*Net のパラメータである tnsnames.ora に行い、ユーザ・アプリケーションはデータベース接続文字列を変更するだけで可能です。
※ この設定は、付属している Net8 Easy Configuration では設定できません。Tnsnames.ora をメモ帳などテキスト・エディタにて開いて書き換えます。
マルチスレッド・サーバ構成の場合、ユーザ・アプリケーションとのセッションを直接サーバ・プロセスが受け取るのでなく、SQL*Netという付属のミドルウエアのディスパッチャーというプロセスが受け持ちます。
ディスパッチャーは、受け取ったSQL文を、SGA内の要求キューに登録します。
共有サーバ・プロセスは、処理が終わると、SGA内の要求キューからSQL文を読み、処理を行い、SGA内の応答キューに登録します。
ディスパッチャーは、応答キューに結果が入ると、その結果をユーザ・アプリケーションに返します。
このように、マルチスレッド・サーバ構成では、1つのサーバ・プロセスが擬似的に複数のセッションの処理を行います。
しかし、複数のセッションを切り替えて使用するため、同じ共有サーバ・プロセスを使用しているセッションは同時に処理を行うことができません。近年において、メモリーの価格が非常に安くなった為、このマルチスレッド・サーバ構成を考慮するよりメモリーを増設する方がコストが安く、あまり使われなくなりました。
(C) 2004 HiroLaboratory. All rights reserved.