TTConnectionPoolクラスは、マルチスレッド・アプリケーションによって、接続のプールの管理に使用されます。
通常、マルチスレッド・アプリケーションは次のいずれかの基本的な方法を使用して作成できます。
注意: | 全体のパフォーマンスを最高にするために、データベース・サーバーのCPUごとに1つまたは2つの同時ダイレクト・メモリー・データベース接続を使用することをお薦めします。同時ダイレクト・メモリー・データベース接続の数(接続プールのサイズ)は、常にデータベース・サーバーのCPU数の2倍を超えるようにしてください。ただし、クライアント/サーバー・モードでは、CPUごとにさらに多くの接続が効率的にサポートされます。 |
アプリケーションは、TTConnectionPoolクラスを使用するために、クラスの単一のインスタンスを作成します。その後、多数のTTConnectionオブジェクトを作成しますが、それらのConnectメソッド(実際にそれらをTimesTenに接続するメソッド)はコールしません。アプリケーションは次に、TTConnectionPool::AddConnectionToPoolメソッドをコールして接続オブジェクトをプールに追加します。その後、TTConnectionPool::ConnectAllをコールして、すべての接続をTimesTenに接続します。TimesTenを使用するスレッドは、getConnectionとfreeConnectionメソッドを使用し、アイドル状態の接続を取得して返します。
なし
メソッド
|
説明
|
---|---|
すべてのTTConnectionオブジェクトを同時にTimesTenに接続します。 |
|
スレッドの接続プールからアイドル状態の接続を確認します。 |
|
別のスレッドへの再割当てができるように接続をプールに返します。 |
|
接続プール内のすべての接続をTimesTenから切断します。 |
|
TTConnectionPoolにステータス情報を問い合せます。 |
int AddConnectionToPool (TTConnection*)
このメソッドは、TTConnectionオブジェクト、またはTTConnectionから導出されたクラスのオブジェクトを接続プールに追加するために使用されます。
void ConnectAll (const char* connStr, TTStatus&)
AddConnectionToPoolによってTTConnectionオブジェクトが接続プールに追加された後、ConnectAllメソッドを使用して、すべてのTTConnectionオブジェクトを同時にTimesTenに接続できます。
例外が有効な場合は、エラーが発生するとTTStatusオブジェクトが例外としてスローされます。例外が無効な場合は、メソッドから返される際に、発生したエラーに関する情報が、最後のパラメータとしてメソッドに渡されたTTStatus&オブジェクトに格納されます。
TTConnection* getConnection (int timeout_millis=0)
スレッドの接続プールからアイドル状態の接続を確認します。アイドル状態のTTConnectionオブジェクトへのポインタが返されます。スレッドはその後、トランザクションを実行し、CommitまたはRollbackのいずれかでそれを終了してから、freeConnectionメソッドを使用して接続をプールに返します。
プール内にアイドル状態の接続がない場合は、freeConnectionのコールによって接続がプールに返されるまで、getConnectionをコールするスレッドがブロックされます。オプションのタイムアウトをミリ秒単位で指定できます。タイムアウトが指定されると、getConnectionは空き接続が出るまで、timeoutミリ秒を上限として待機し、その時間内に接続が使用可能にならなければコール元にNULLを返します。
void freeConnection (TTConnection*)
別のスレッドへの再割当てができるよう、接続をプールに返します。アプリケーションでは、トランザクション中の接続を解放しないでください。freeConnectionをコールする直前に、TTConnection::CommitまたはTTConnection::Rollbackをコールする必要があります。
void DisconnectAll (TTStatus&)
接続プール内のすべての接続をTimesTenから切断します。
アプリケーションでは、プロセス障害の分析とリカバリに関連するオーバーヘッドを回避するために、終了の前にDisconnectAllをコールする必要があります。
例外が有効な場合は、エラーが発生するとTTStatusオブジェクトが例外としてスローされます。例外が無効な場合は、メソッドから返される際に、発生したエラーに関する情報が、最後のパラメータとしてメソッドに渡されたTTStatus&オブジェクトに格納されます。
void getStats(int *nGets, int *nFrees, int *nWaits, int *nTimeouts,
int *maxInUse, int *nForcedCommits)
TTConnectionPoolにステータス情報を問い合せます。次のデータが返されます。