2

数分ごとに実行されるJavaプログラムがたくさんあります。これらのプログラムは、スクリプトによって数分ごとに開始され、1分以内に終了します。それらのほとんどはシングルスレッドであり、MySQLDBにアクセスするために使用します。

DriverManager.getConnection()

一度接続してクエリを実行するだけです。ここで、このグループにマルチスレッドの新しいプログラムを追加します。このプログラムは、すべてのスレッドがDBに同時にアクセスする必要があります。これにはDB接続プール(c3p0)を使用することを考えています。

私の質問は、これらすべてのプログラムがDBにアクセスするための共通のDAOを共有しているため、接続が1つだけ必要な場合でも、シングルスレッドプログラムにDB接続プールを使用するオーバーヘッドがありますか?initialPoolサイズを1に設定し、最小プールサイズを1に設定し、最大プールサイズを10に設定することを計画しています。

4

1 に答える 1

2

接続プールの主な目的は、接続を取得するたびに開いたり閉じたりするのではなく、すぐに使用できる接続をいくつか用意することです。DB が頻繁に使用される場合、このアプローチはかなりの時間を節約します。

Apache DBCPはシングルスレッドですが、アプリケーションが DB 接続を頻繁に使用する場合、パフォーマンスが大幅に向上します。

c3p0 は良い選択ですが、適切な接続プールを選択するには、次の説明を確認してください: JDBC を使用した接続プール オプション: DBCP と C3P0 の比較

于 2013-02-27T18:09:36.480 に答える