これらのアプローチのどちらが優れていますか:接続プールまたはスレッドごとのJDBC接続?
3 に答える
間違いなく接続プーリング。スレッドごとに新しい接続を作成する理由はまったくありません。ただし、たとえば (特にトランザクションが必要な場合) HTTP 要求全体に同じ接続を使用することが理にかなっている場合があります。
使用しているデータベースに応じて、最小および最大接続数を持つように接続プーリング フレームワークを簡単に構成できます。ただし、パフォーマンスの問題がある場合は、接続の最大数を増やしすぎる前に、キャッシュを使用してみてください。
確かに、そしてほとんどの場合、接続プーリング。
新しいデータベース接続を作成すると、パフォーマンスが大幅に低下します。また、異なる DB エンジン (ライセンスまたは単に設定に応じて) には、異なる最大接続数があります (1 の場合もあれば、通常は 50 を超えない場合もあります)。
Per-Thread 接続を使用する唯一の理由は、特定の少数の永続スレッド (たとえば 10) があることがわかっている場合です。現実世界でこの状況を想像することはできません。
Web アプリの場合、他の人が既に提供している理由から、接続プーリングは一般的に正しい答えです。
データベースに対して実行されるほとんどのデスクトップ アプリでは、必要な接続は 1 つだけであり、複数の接続を持つと DB サーバーのリソースが消費されるため、接続プールは適切ではありません。(これにユーザー数を掛けます。) ここでは、単一の永続的な接続を選択するか、必要に応じて接続を作成するかを選択します。最初の方法では、接続の構築と切断のオーバーヘッドがないため、クエリが高速になります。2 番目は低速ですが、DB サーバーへの要求も少なくなります。