web-dev-qa-db-ja.com

JDBC用の接続プールが必要なのはなぜですか?

  • [〜#〜] dbcp [〜#〜] または c3p のようなJDBC接続プールツールを使用する利点は何ですか?

  • small CRUDアプリケーションとoneユーザーの場合、 one接続セッションをシングルトンとして作成しますか?

[〜#〜] ps [〜#〜]:小さなh2データベースでバックエンドされた小さなjavafxアプリケーションを構築しています(5テーブル)。

18
tarrsalah

Jon Skeetの答えから 接続とステートメントプーリングの利点は何ですか?

データベースサーバーへのネットワーク接続の作成は、(比較的)コストがかかります。同様に、サーバーにSQLステートメントの準備を依頼することは(比較的)費用がかかります。

接続/ステートメントプールを使用すると、既存の接続/プリペアドステートメントを再利用でき、接続の開始、SQLの解析などのコストを回避できます。

そして、以下から ケントブオゴールの答え

私はc3p0に精通していませんが、接続とステートメントをプールすることの利点は次のとおりです。

  1. パフォーマンス。データベースへの接続は費用がかかり、時間がかかります。プールされた接続は、データベースに物理的に接続したままにして、データベースアクセスを必要とするさまざまなコンポーネント間で共有できます。このようにして、接続コストは1回支払われ、すべての消費コンポーネントにわたって償却されます。

  2. 診断。データベースへの接続を担当するサブシステムが1つある場合は、データベース接続の使用状況の診断と分析が容易になります。

  3. 保守性。繰り返しますが、データベース接続の配布を担当するサブシステムが1つある場合は、各コンポーネントがデータベース自体に接続されている場合よりも、コードの保守が容易になります。

12
0x6C38

接続の作成にはコストがかかり、トランザクションごとに数ミリ秒しかかからない新しい接続を作成することは意味がありません。プール内のデータベース接続を管理するということは、アプリケーションが接続の作成時間を回避する方法でデータベーストランザクションを実行できることを意味します(接続は引き続き作成する必要がありますが、すべて起動時に作成されます)。欠点は、すべての接続が使用中であり、別の接続が必要な場合、接続がプールに返されるまで要求スレッドが待機する必要があることです。

2
JS.