すべての DB2 サーバーが使用するプロセス・モデルは、 データベース・サーバーとクライアント・アプリケーション、 およびローカル・アプリケーションとの間で行われる通信を促進します。 また、データベース・アプリケーションがデータベース制御ブロック、 および重要なデータベース・ファイルなどのリソースから分離されるようにします。
UNIX ベースの環境は、プロセスに基づいた体系を使用します。 たとえば、DB2 通信 listener はプロセスとして作成されます。 OS/2 および Windows NT などの Intel オペレーティング・システムは、 スレッドに基づいた体系を使用してパフォーマンスを最高にします。 たとえば、DB2 通信 listener は、DB2 サーバーのシステム・コントローラー・プロセス内のスレッドとして作成されます。 DB2 のプロセス・モデルでは、プロセスおよびスレッドの動作について説明します。
アクセスされているデータベースごとに、様々なプロセス / スレッドが開始して、 様々なデータベース・タスク (たとえば、事前取り出し、通信、およびロギング) を処理します。
クライアント・アプリケーションの各プロセス / スレッドには、 データベースを操作する調整プログラム・エージェントが 1 つあります。 調整プログラム・エージェントは、アプリケーションに代わって作業し、 プロセス間通信 (IPC) またはリモート通信プロトコルを使用している他のエージェントに通信します。
DB2 体系にはファイアウォールがあり、 アプリケーションが DB2 とは異なるアドレス・スペースで実行できるようになっています。 ファイアウォールは、アプリケーション、ストアード・プロシージャー、 およびユーザー定義関数 (UDF) からデータベースおよびデータベース管理プログラムを保護します。 ファイアウォールによって、 アプリケーション・プログラミング・エラーのために内部バッファー、 またはデータベース管理プログラムのファイルが重ね書きされることはないので、 データベース内のデータの保全性を保持します。 また、アプリケーション・プログラミング・エラーのために データベース管理プログラムが破壊されることもなくなるので、信頼性も向上します。
![]() |
次のリストは、図1 に示されているプロセス / スレッドに関する追加情報を示しています。
listener の活動化に問題があるかどうかを検出するには、 サーバーの db2diag.log を調べてください。 詳細については、db2diag.log ファイルを使用してサーバー通信問題を診断するを参照してください。
intra_parallel データベース管理プログラム構成パラメーターが使用可能な一部の環境では、 調整プログラム・エージェントはデータベース要求をサブエージェント (db2agntp) に配布します。 これらのエージェントがアプリケーションへの要求を実行します。 いったん調整プログラム・エージェントが作成されると、 データベース上にある要求を実行するサブエージェント (db2agntp) を調整することによって、 そのアプリケーションに代わってすべてのデータベース要求を処理します。
調整プログラム・エージェントは、以下のようになることがあります。
使用されていないエージェントはエージェント・プールにあります。 これらのエージェントは、クライアント・プログラムに代わって操作している調整プログラム・エージェントからの要求、 または既存の調整プログラム・エージェントに代わって操作しているサブエージェントからの要求に対して利用可能です。 利用可能なエージェントの数は、 データベース管理プログラム構成パラメーター maxagents および num_poolagents によって左右されます。
DB2 によってサポートされる Intel システム (OS/2 および Windows) は、 データベース・エンジンがマルチプロセスではなくマルチスレッドである UNIX ベースの環境とは異なります。 Intel システムでは、 各ファイアウォールのエージェント側にあるディスパッチ可能単位がプロセス db2sysc の下のスレッドであり、 データベース・エンジンがプロセス・レベルではなくスレッド・レベルでオペレーティング・システムにタスク切り替えを実行させることができます。 アクセスされているデータベースごとに、 別のスレッドが開始されて、データベース・タスク (たとえば、事前取り出し) を処理します。
もう 1 つの異なる点は、異常終了の処理にあります。 Intel システムでは、 割り振られたリソースが異常終了後にクリーンアップされるようになっているため、「ウォッチドッグ」プロセスは必要ありません。 そのため、Intel システムには db2wdog プロセスに相当する物はありません。 さらに、Intel システムにはスレッドを開始するための独自のメカニズムがあるため、db2gds プロセス / スレッドは Intel システム上では必要ありません。