[java] JDBCを使用した接続プーリング・オプション:DBCPとC3P0


Answers

私はBoneCPを試してみることをお勧めします。無料でオープンソースであり、利用可能な方法よりも高速です(ベンチマークの節を参照)。

免責事項:私は著者ですので、私は偏っていると言うことができます:-)

更新:2010年3月現在、新しい書き直しApache DBCP( "tomcat jdbc")プールよりも約35%高速です。 ベンチマークセクションの動的ベンチマークリンクを参照してください。

アップデート#2:(12月'13)4年後、競争相手がより速くなりました: https://github.com/brettwooldridge/HikariCP : https://github.com/brettwooldridge/HikariCP

アップデート#3:(9月14日)この時点でBoneCPを非推奨にして、HikariCPへの切り替えをお勧めしHikariCP

アップデート#4:(April '15) - ドメインjolbox.comは所有していませんが、新しい所有者は古いコンテンツを注意深く保っています。

Question

Java / JDBCで使用できる最適な接続プーリング・ライブラリは何ですか?

私は2つの主な候補者(フリー/オープンソース)を検討しています:

私はブログや他のフォーラムで多くのことを読んだが、決断を下すことはできなかった。

これらの2つの代替案はありますか?




私たちは接続プールを導入する必要がある状況に直面し、私たちの前に4つのオプションがありました。

  • DBCP2
  • C3P0
  • Tomcat JDBC
  • HikariCP

私たちはいくつかのテストを行い、基準に基づいて比較を行い、HikariCPに行くことに決めました。 なぜ我々がHikariCPを選んだのかを説明するこの記事を読んでください。




適切に設定されていれば、Dbcpはプロダクションレディです。

これは、例えば、1日あたり350000人の訪問者の商業ウェブサイトおよび200の接続のプールで使用される。

正しく設定されていれば、タイムアウトが非常にうまく処理されます。

バージョン2は進行中であり、多くの生産上の問題が取り組まれているため、信頼性の高いバックグラウンドを持っています。

バッチ・サーバー・ソリューションに使用し、何百ものバッチを実行しており、数百万行のデータベースで動作します。

Tomcat jdbc poolによって実行されるパフォーマンステストは、cp30よりも優れたパフォーマンスを示します。




もう1つの代替案、Proxoolがこの記事で言及されています

なぜあなたは、Hibernateがc3p0をデフォルトの接続プール実装のためにバンドルするのかを知ることができますか?




DBCPの自動再接続の問題については、次の2つの構成パラメータを試してみましたか?

validationQuery="Some Query"

testOnBorrow=true



muttreadingプロジェクトを使用している場合、c3p0は良いです。 我々のプロジェクトでは、DBCPを使用して同時に複数のスレッドを実行した後、スレッドをさらに実行すると接続タイムアウトが発生しました。 だから我々はc3p0の設定を行った。







Related