web-dev-qa-db-ja.com

Postgres Npgsql接続プーリング

PostgresにNpgsqlを使用する場合、Connection Poolingをよく理解したいと思います。 ( http://www.npgsql.org/

接続文字列を使用する場合:

UserID = root; Password = myPassword; Host = localhost; Port = 5432; Database = myDataBase; Pooling = true; Min Pool Size = 0; Max Pool Size = 100;

「プーリング」はどこで行われるのですか?私のアプリケーションサーバーまたはデータベース?

Connection.Open()を呼び出すとどうなりますか?接続が存在する場合はプールから取得され、存在しない場合はプールが作成されますか?

接続プーリングに関するその他の一般的な情報をいただければ幸いです。

ありがとう。

10
chris

Npgsql接続プーリングはアプリケーションプロセス内に実装されています。PostgreSQLとはまったく関係がないため、PostgreSQLとは関係ありません。

メカニズムは非常に簡単です。プールされた接続を閉じると、PostgreSQLへの接続を物理的に閉じる代わりに、物理的な接続はメモリ内のアイドル状態(「プール」内)に保持されます。次回新しい接続を開くときに、その接続文字列が既にプールに存在する物理接続と一致する場合、新しい物理接続を開く代わりにその物理接続が再利用されます。

物理接続の開閉は負荷の高いプロセスであるため、これによりアプリケーションが大幅に高速化されます。

18
Shay Rojansky