問題判別の手引き

DB2 プロセス・モデルの説明

すべての DB2 サーバーが使用するプロセス・モデルは、 データベース・サーバーとクライアント・アプリケーション、 およびローカル・アプリケーションとの間で行われる通信を促進します。 また、データベース・アプリケーションがデータベース制御ブロック、 および重要なデータベース・ファイルなどのリソースから分離されるようにします。

UNIX ベースの環境は、プロセスに基づいた体系を使用します。 たとえば、DB2 通信 listener はプロセスとして作成されます。 OS/2 および Windows NT などの Intel オペレーティング・システムは、 スレッドに基づいた体系を使用してパフォーマンスを最高にします。 たとえば、DB2 通信 listener は、DB2 サーバーのシステム・コントローラー・プロセス内のスレッドとして作成されます。 DB2 のプロセス・モデルでは、プロセスおよびスレッドの動作について説明します。

アクセスされているデータベースごとに、様々なプロセス / スレッドが開始して、 様々なデータベース・タスク (たとえば、事前取り出し、通信、およびロギング) を処理します。

クライアント・アプリケーションの各プロセス / スレッドには、 データベースを操作する調整プログラム・エージェントが 1 つあります。 調整プログラム・エージェントは、アプリケーションに代わって作業し、 プロセス間通信 (IPC) またはリモート通信プロトコルを使用している他のエージェントに通信します。

DB2 体系にはファイアウォールがあり、 アプリケーションが DB2 とは異なるアドレス・スペースで実行できるようになっています。 ファイアウォールは、アプリケーション、ストアード・プロシージャー、 およびユーザー定義関数 (UDF) からデータベースおよびデータベース管理プログラムを保護します。 ファイアウォールによって、 アプリケーション・プログラミング・エラーのために内部バッファー、 またはデータベース管理プログラムのファイルが重ね書きされることはないので、 データベース内のデータの保全性を保持します。 また、アプリケーション・プログラミング・エラーのために データベース管理プログラムが破壊されることもなくなるので、信頼性も向上します。

図 1. DB2 システムのプロセス・モデル


pro1modg

次のリストは、図1 に示されているプロセス / スレッドに関する追加情報を示しています。

クライアント・プログラム
クライアント・プログラムは、リモートに、 またはデータベース・サーバーと同じマシン上で実行します。 クライアント・プログラムは、listener を通してデータベースとの最初の連絡をとります。 次に、調整プログラム・エージェント (db2agent) がクライアント・プログラムに割り当てられます。

listener
クライアント・プログラムは、DB2 を開始したときに開始された通信 listener と最初の連絡をとります。 構成された通信プロトコルごとに 1 つの listener、 およびローカル・クライアント・プログラムにはプロセス間通信 (IPC) listener (db2ipccm) があります。 listener には、以下のものが含まれます。

listener の活動化に問題があるかどうかを検出するには、 サーバーの db2diag.log を調べてください。 詳細については、db2diag.log ファイルを使用してサーバー通信問題を診断するを参照してください。

エージェント
ローカルかリモートかにかかわらずクライアント・アプリケーションからのすべての接続要求には、 対応する調整プログラム・エージェント (db2agent) が割り振られます。 調整プログラム・エージェントが作成されると、 アプリケーションに代わってすべてのデータベース要求を実行します。

intra_parallel データベース管理プログラム構成パラメーターが使用可能な一部の環境では、 調整プログラム・エージェントはデータベース要求をサブエージェント (db2agntp) に配布します。 これらのエージェントがアプリケーションへの要求を実行します。 いったん調整プログラム・エージェントが作成されると、 データベース上にある要求を実行するサブエージェント (db2agntp) を調整することによって、 そのアプリケーションに代わってすべてのデータベース要求を処理します。

調整プログラム・エージェントは、以下のようになることがあります。

使用されていないエージェントはエージェント・プールにあります。 これらのエージェントは、クライアント・プログラムに代わって操作している調整プログラム・エージェントからの要求、 または既存の調整プログラム・エージェントに代わって操作しているサブエージェントからの要求に対して利用可能です。 利用可能なエージェントの数は、 データベース管理プログラム構成パラメーター maxagents および num_poolagents によって左右されます。

db2udfp
分離ユーザー定義関数 (UDF) は、ファイアウォールの外で実行します。

db2dari
分離ストアード・プロシージャーはファイアウォールの外で実行します。

データベース・スレッド / プロセス
次のリストには、 各データベースによって使用されるいくつかの重要なスレッド / プロセスが含まれています。

データベース・サーバー・スレッド / プロセス
システム・コントローラー (db2sysc) は、 データベース・サーバーが機能するために存在していなければなりません。 また、様々なタスクを実行するために以下のスレッド / プロセスを開始することができます。

Intel と UNIX との間の相違

DB2 によってサポートされる Intel システム (OS/2 および Windows) は、 データベース・エンジンがマルチプロセスではなくマルチスレッドである UNIX ベースの環境とは異なります。 Intel システムでは、 各ファイアウォールのエージェント側にあるディスパッチ可能単位がプロセス db2sysc の下のスレッドであり、 データベース・エンジンがプロセス・レベルではなくスレッド・レベルでオペレーティング・システムにタスク切り替えを実行させることができます。 アクセスされているデータベースごとに、 別のスレッドが開始されて、データベース・タスク (たとえば、事前取り出し) を処理します。

もう 1 つの異なる点は、異常終了の処理にあります。 Intel システムでは、 割り振られたリソースが異常終了後にクリーンアップされるようになっているため、「ウォッチドッグ」プロセスは必要ありません。 そのため、Intel システムには db2wdog プロセスに相当する物はありません。 さらに、Intel システムにはスレッドを開始するための独自のメカニズムがあるため、db2gds プロセス / スレッドは Intel システム上では必要ありません。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]