コネクションプールのデータベースマネージャ [詳解]
#include <pooledDatabaseManager.h>
公開メンバ関数 | |
pooledDbManager () | |
pooledDbManager (const connectParams *param) | |
~pooledDbManager () | |
void | abortTrn () |
void | beginSnapshot (short bias=CONSISTENT_READ, binlogPos *bpos=NULL) |
void | beginTrn (short bias) |
uchar_td * | clientID () const |
database * | db () const |
int | enableTrn () |
void | endSnapshot () |
void | endTrn () |
bool | isOpened () const |
bool | isUseXa () const |
char_td | mode () const |
__int64 | option () |
void | reset (int v) |
void | setOption (__int64 v) |
void | setUseXa (bool v) |
short_td | stat () const |
table_ptr | table (const _TCHAR *name) |
void | unUse () |
const _TCHAR * | uri () const |
void | use (const connectParams *param=NULL) |
int | usingCount () const |
基底クラス idatabaseManager に属する継承公開メンバ関数 | |
virtual | ~idatabaseManager () |
静的公開メンバ関数 | |
static int | maxConnections () |
static void | reserve (size_t size, const connectParams ¶m) |
static void | setMaxConnections (int maxWorkerNum) |
コネクションプールのデータベースマネージャ
プロセスに唯一実装されるコネクションプールからデータベースを利用するためのデータベースマネージャです。
このクラスは、Webアプリケーションで、コネクションプールを使用する際にデータベースとテーブルの取得、管理に使います。
C++から利用する場合は、プロジェクトにconnectionPool.cppを加えてください。tdclcpp内には含まれていません。
始めに、プロセス開始後に static pooledDbManager::setMaxConnections() を呼び出してプールするコネクション数を設定します。 データベースの接続要求時に、利用可能なデータベースがない場合、最大 setMaxConnections() まで新しい接続を開始します。一度接続がされると、プロセスが終了するまで接続を終了することなく再利用されます。
既に、プールされた接続が最大数に達しさらに要求があった場合は、どれか他の接続が空きになるまで待機します。
コネクションプールからデータベースを利用する時にこのクラスのインスタンスを生成し、コンストラクタに接続先を渡すか、 use()に接続先を渡すとこのインスタンスが利用可能なデータベースマネージャになります。
pooledDbManagerはスレッドごとにインスタンスを作成してください。pooledDbManager自体はほとんどリソースを持ちません。コネクションプールからの取り出しと返却、一時預かりを担います。 activeTableにこのインスタンスを直接渡せます。
通常のテーブルアクセスする場合は table() 関数にて利用可能な table インスタンスを得ることができます。
データベースの利用が終わったら、 unUse() を呼び出します。これで、この内部データベースがプールに戻され他のスレッドから利用できる状態になります。
また、例外saftyにするため、デストラクタで自動的に unUse() が呼び出されます。
|
inline |
コンストラクタ。この状態ではまだ利用可能ではありません。利用するめに use() を呼び出してください。
|
inline |
コンストラクタ。paramで指定したデータベースをプールからと取り出して利用可能な状態にします。
|
inline |
|
inlinevirtual |
トランザクションを中止し変更を無効にします。詳しくは nsdatabase::abortTrn() を参照してください。
idatabaseManagerを実装しています。
スナップショットを開始します。詳しくは nsdatabase::beginSnapshot() を参照してください。
idatabaseManagerを実装しています。
|
inlinevirtual |
トランザクションを開始します。詳しくは nsdatabase::beginTrn() を参照してください。
idatabaseManagerを実装しています。
|
inlinevirtual |
現在のカレントデータベースのclientIDポインタを返します。
idatabaseManagerを実装しています。
|
inlinevirtual |
現在のカレントデータベースを返します。
idatabaseManagerを実装しています。
|
inlinevirtual |
トランザクションが開始されているかどうかを返します。
idatabaseManagerを実装しています。
|
inlinevirtual |
スナップショットを終了します。詳しくは nsdatabase::endSnapshot() を参照してください。
idatabaseManagerを実装しています。
|
inlinevirtual |
トランザクションをコミットします。詳しくは nsdatabase::endTrn() を参照してください。
idatabaseManagerを実装しています。
|
inlinevirtual |
現在のカレントデータベースがオープンされているかどうかを返します。
idatabaseManagerを実装しています。
|
inline |
XAトランザクションが有効かどうかを返します。
|
inlinestatic |
setMaxConnections() で指定された最大コネクション数を返します。
|
inlinevirtual |
現在のカレントデータベースのオープンモードを返します。
idatabaseManagerを実装しています。
|
inlinevirtual |
オプション値を取得します。
idatabaseManagerを実装しています。
|
inlinestatic |
呼び出し元プロセスで利用するparamで指定した接続先のコネクションを事前に作成済みにしプールします。
|
inlinevirtual |
プールされた接続をすべて切断します。waitSecで指定した秒数の間コネクションの開放を待ちます。 その間にすべて開放され切断できた場合はtrueを返します。
idatabaseManagerを実装しています。
|
inlinestatic |
呼び出し元プロセスで利用する最大コネクション数を指定します。接続先が複数の場合でもその合計の数を指定してください。
|
inlinevirtual |
オプション値をセットします。
idatabaseManagerを実装しています。
|
inline |
XAトランザクションを使用するかを指定します。
|
inlinevirtual |
現在のカレントデータベースの最後のデータベースオペレーションの結果を返します。
idatabaseManagerを実装しています。
nameで渡されたテーブル名から table オブジェクトを取得して返します。
indexで渡されたテーブル番号から table オブジェクトを取得して返します。
idatabaseManagerを実装しています。
|
inlinevirtual |
データベースの利用を終了し、プールに返却します。
idatabaseManagerを実装しています。
|
inlinevirtual |
現在のデータベースの接続先uriを返します。
idatabaseManagerを実装しています。
|
inlinevirtual |
paramで指定した接続先にのデータベースをプールから取り出し利用可能な状態にします。
使用し終わったら unUse() を呼び出してください。 paramがNULLの場合は既にプールされたデータベースから取り出して利用可能な状態にします。このオプションを選択する場合、 reserve() を使用して同じ接続先へのコネクションを事前に作成しておく必要があります。また、プールされたコネクションの接続先はすべて同じであるとの前提になります。接続先が同じであるかのチェックは行われません。
idatabaseManagerを実装しています。
|
inline |
現在使用中のコネクション数を返します。