Connection オブジェクトの ClearPool メソッドおよび ClearAllPools メソッドは、接続プールからすべての接続を削除します。ClearPool は特定の接続に関連付けられている接続プールを空にします。対照的に、
ClearAllPools はデータ プロバイダーによって使用されるすべての接続プールを空にします。メソッドを呼び出すときに使用中だった接続は、閉じるときに破棄されます。
メモ:デフォルトで、無効な接続を破棄することによって、接続数が Min Pool Size 属性で指定した数より少なくなった場合、新しい接続はアプリケーションで必要になるまで作成されません。
メモ:データ プロバイダーは、SQL ステートメントの実行時にデータベース サーバーへの再接続を試みることができるため、ステートメントが実行されるときに接続エラーをアプリケーションへ返すことができます。データ プロバイダーがサーバーに再接続できない(たとえば、サーバーがまだダウンしている)場合、実行メソッドは再接続の試行が失敗したことと、その接続が失敗した理由の詳細を知らせるエラーをスローします。
表 2 はステートメント キャッシング設定とその影響を要約したものです。
接続フェールオーバーによって、ハードウェア障害やトラフィックの過負荷などが原因でプライマリ データベース サーバーが利用できなくなった場合でも、アプリケーションは代替またはバックアップ データベース サーバーに接続することができます。接続フェールオーバーは、重要な .NET アプリケーションが依存するデータを常に使用可能な状態にします。
たとえば、図 1 は複数のデータベース サーバーを持つ環境を示しています。データベース サーバー A はプライマリ データベース サーバー、データベース サーバー B は 1 番目の代替サーバー、そしてデータベース サーバー C は 2 番目の代替サーバーとして設計されています。
まず、アプリケーションはプライマリ データベースであるデータベース サーバー A(1)に接続を試みます。接続フェールオーバー機能を有効にすると、アプリケーションがデータベース サーバー A に接続できなかった場合はデータベース サーバー B(
2)に接続を試みます。その接続の試行も失敗した場合、アプリケーションはデータベース サーバー C(
3)に接続を試みます。
このシナリオで、最低でもどれか 1 つのサーバーへは接続できると思われますが、接続にすべて失敗した場合、データ プロバイダーはプライマリ サーバーと各代替データベースに対し指定の回数分だけ接続を再試行させることができます。接続の再試行(
Connection Retry Count)機能を使用すれば、試行回数を指定することができます。
接続の試行間隔(
Connection Retry Delay)機能を使用すれば、接続の試行間隔を秒数で指定することもできます。接続の再試行の詳細については、
接続の再試行機能の使用を参照してください。
クライアント ロード バランスは接続フェールオーバーと共に動作してユーザーの環境で新しい接続を分散することで、接続要求に対応できないサーバーがないようにします。接続フェールオーバーとクライアント ロード バランスがどちらも有効な場合、プライマリ データベースおよび代替データベースへ接続が試行される順序はランダムです。
たとえば、図 2 で示すようにクライアント ロード バランスが有効になっているとします。
まず、データベース サーバー B への接続が試行されます(1)。それからデータベース サーバー C への接続が試行され(
2)、続いてデータベース サーバー Aへの接続が試行されます(
3)。その後、これと同じ順序で接続が試行されます。対照的に、このシナリオでクライアント ロード バランスが無効だった場合、各データベースへの接続の試行はシーケンシャルな順序で行われます。つまり、最初にプライマリ サーバーに試行したら、その後は代替サーバー リスト内のエントリ順に基づいて代替サーバーに試行します。
接続の再試行では、データ プロバイダーが最初の接続の試行に失敗した後に、プライマリ サーバーおよび(設定している場合)代替サーバーへ接続を試行する回数を定義します。接続の再試行は、システム復旧の有力な方策となります。たとえば、停電などの電力障害によりクライアントとサーバーの両方が動作しなくなってしまうシナリオを考えてみましょう。電力が復旧してすべてのコンピューターが再起動される際、サーバーが自身のスタートアップ ルーチンを完了する前にクライアントがそのサーバーに接続しようとするかもしれません。接続の再試行が有効な場合、クライアント アプリケーションは、サーバー側で接続が正しく受け入れられるようになるまで接続を何度も試行し続けることができます。
接続フェールオーバーによって、ハードウェア障害やトラフィックの過負荷などが原因でプライマリ データベース サーバーが利用できなくなった場合でも、アプリケーションは代替またはバックアップ データベース サーバーに接続することができます。
ファイル名には CSV ファイル名と拡張子 ".lob" が含まれます(たとえば、CSV_filename_nnnnnn.lob)。これらのファイルは CSV ファイルと同じ場所に存在します。_000001.lob から開始して 1 ずつ大きくなります。
表 3 では、トレースを有効にしたり制御したりするための環境変数について説明します。
Correlation# は重複のない番号で、これによって、アプリケーション内の同じメソッド呼び出しの ENTER エントリと EXIT エントリを符合させます。
Value は、個々の関数呼び出しに固有のオブジェクトのハッシュ コードです。
表 4 では、アプリケーションの接続を調整するために使用できる各種 PerfMon カウンターについて説明します。
ADO.NET Entity Framework ユーザーへの注記:PsqlConnection の統計情報用のメソッドおよびプロパティは、ADO.NET Entity Framework レイヤーでは利用できません。代わりに、データ プロバイダーは「擬似」ストアド プロシージャを介して同様の機能を公開します。詳細については、
「ADO.NET Entity Framework でのストアド プロシージャの使用」を参照してください。