Web アプリケーションに接続プールを実装したいと考えています。実装方法を教えてください。
1433 次
2 に答える
2
あなたには2つの問題があると思います:
- 接続プーリングが必要かどうかわからない
と
- 必要だとわかったとしても、それを実装する方法がわかりません。
私は最初、あなたがそれを必要としないという前提で作業します.接続を再利用することは(おそらく時期尚早の)最適化です.
ただし、本当に必要な場合は、その方法はアプリケーション サーバーの性質によって異なります。
- アプリケーションが Apache で「インプロセス」されている場合、プロセス (またはスレッド) ごとに 1 つの接続以外のオプションはありません。
- mod_jk 経由で Tomcat に接続するなど、アプリが「アウト プロセス」である場合、アプリ サーバー (Tomcat) 内で好きなことを行うことができます。これには、必要に応じて複数のスレッドで使用される接続のプールが含まれる場合があります。
毎回新しい接続を使用する説得力のある理由は次のとおりです。
- 以前のリクエストによって残された古い接続状態による望ましくない副作用はありません
- 必要なときだけ接続する - データベース接続が途切れるリスクが少ない
- 予測可能なパフォーマンス - 接続の作成を含め、リクエストにかかる時間を測定できます
接続を再利用する唯一の説得力のある理由は、接続のオーバーヘッド時間そのものです。
接続の作成が比較的遅いデータベース (Oracle) もあれば、はるかに高速なデータベース (MySQL) もあります。一部のデータベースは、再利用するスレッドのプールを内部に保持するように調整できます (MySQL)。これにより、接続がさらに高速になります。
于 2009-08-25T06:36:45.313 に答える
0
私は決定的な答えを持っていませんが(そしてそれも探しています)、次のことを提案できます(perlバックエンドの場合):
- mod_perl2 を使用している場合は、Apache::DBI ( http://metacpan.org/pod/Apache::DBI ) を参照してください。ページに記載されているいくつかの欠点があります。
- データベースへの接続に perl DBI を使用している場合は、connect() メソッド呼び出しを使用する代わりに、connect_cached() メソッド呼び出しを使用してください。
于 2009-10-07T15:26:59.237 に答える