こんにちは、レック・テクノロジー・コンサルティングの伊藤です。
前回の専用サーバーに引き続き、今回は共有サーバー・プロセスのお話です。
■共有サーバーのイメージ
共有サーバーとは?
共有サーバーとは、複数のユーザー・プロセスによって共有されるサーバー・プロセスです。
専用サーバーがユーザー・プロセスと1対1の関係になるのに対して、
共有サーバーは、1つの共有サーバーが複数のユーザー・プロセスからの要求を引き受けます。
このような形でクライアントとサーバーがやり取りをする構成を「共有サーバー接続(構成)」と呼びます。
※共有サーバーの表現
共有サーバーは英語表記で"Shared Server"となるため、人によっては「シェアード・サーバー」と呼ぶ人もいます。また共有サーバーについて調べていると「MTS」という表記に出会うことがあります。これは共有サーバーの旧称「マルチスレッドサーバー (Multi-Threaded Server)」のことです。
共有サーバーの構成
共有サーバー構成における、
ユーザー・プロセス(ご主人様)とサーバー・プロセス(インスタンス君の子分)の関係は、
上図で示した通りです。
ご主人様の要求にこたえる(仕事をする)のは子分であるサーバー・プロセスですが、間にディスパッチャが存在します。
ディスパッチャは、ご主人様の要求をリスト化し、手の空いている子分に順次振り分けます。
子分が結果を出すと、ディスパッチャが順番に要求元のご主人様に報告します。
※ディスパッチャ
英語で"dispatcher"と表記され「配車係」などを意味します。
ITの世界では、複数の要求を効率よく処理できるようCPUなどの資源の割り当てを行うのプログラムのことです。
プロセス |
処理内容 |
|
1 |
ユーザー |
SQL文を発行する。(ディスパッチャに送る) |
2 |
ディスパッチャ |
SQL文を受け取り要求キューへ格納する。 |
3 |
共有サーバー |
要求キューからSQL文を取り出す。 |
4 |
共有サーバー |
SQL文を実行する。 |
5 |
共有サーバー |
SQL文の結果を応答キューへ格納する。 |
6 |
ディスパッチャ |
応答キューから結果を取り出し、ユーザー・プロセスに送る。 |
7 |
ユーザー |
結果を受け取る。 |
どのような場合に使用する?
1つのサーバー・プロセスで複数のユーザー・プロセスに対応できることから、
少ないリソースで多くのユーザーの要求に対応できるという点で優れています。
ユーザー・プロセスの数だけサーバー・プロセスが存在する専用サーバー構成とはちょうど反対の関係です。
・ユーザー・プロセスからの接続時の負荷が低い。
(インスタンス起動時にサーバー・プロセスを事前に起動しておくことができる)
・1つのサーバー・プロセスが複数のユーザー・プロセスに対応できるため、サーバー・ハードウェア(メモリ)の要求は比較的低い。
以上のことから、共有サーバー構成は多数のユーザー・プロセスが存在する環境で、
個々のユーザー・プロセスの接続時間に対してSQL文の実行時間の割合が低いケース、
つまりオンライントランザクションなどの処理での利用に適しています。
ただしこの「少ないリソースで効率よく」というコンセプトは、共有サーバー構成がOracle Databaseとして実装された当時のものです。サーバー・ハードウェアの高性能化や搭載メモリの大容量化によって、現在では多数の接続をすべて専用サーバー接続で対応できるケースも少なくありません。
またアプリケーション層にもデータベース接続を共有化する「接続プール」という機能があります。
今回のまとめ
共有サーバー・プロセスについて説明をしました。
前回の専用サーバーとの特徴を比較を表と図にして締めくくります。
専用サーバー構成 |
共有サーバー構成 |
|
特徴 |
|
|
適する処理形式/構成 |
|
|
