実際の本番負荷でOracle UCPを使用した経験はありますか?データベースの再接続をうまく処理しますか?マルチスレッドの問題はありますか? C3P0やApache DBCPと比較した人はいますか?
私はUCP 11.2.0.1を評価しました従来の接続プールの代替としてそして私はそれを推奨できません:
setPoolable()
)PoolDataSource
とConnectionPool
があります-両方とも関連していますが、呼び出されます)別に、わずかに異なる機能を提供します。)
UPDATE 1(2014年4月):
少しトピックから外れていますが、私の評価の結果、新しい Tomcat jdbc-pool -を使用することにしました。これは、1年以来、いくつかの運用システムでほぼ完全に機能しています。それは非常によく設計されており、定期的に更新され、拡張可能であり、Apache Tomcatチームは 質問への対応/問題の修正に優れています を行います。
UPDATE 2(2016年7月):
これで強く推奨できます HikariCP 現在、他のすべての接続プールよりも推奨しています。
そのアーキテクチャ、正確さとパフォーマンスに焦点を当てたものは、驚くべきものです。
1秒あたり約10トランザクション(平均)と1秒あたり360トランザクションのピークがあるシステムでUCPを使用しましたが、まだ問題はありません。 (数は8台のサーバーを備えたアプリサーバーごと)
ただし、UCPから得られる主な利点は、Oracle RACと TAF/FAN機能、Dataguardを備えたUCP を使用している場合、またはoutsideアプリサーバー。
ここでは、暗黙的な接続キャッシュと比較してUCPで観察したパフォーマンス/スケーラビリティの問題について説明しました https://stackoverflow.com/a/27512252/676877
私はEclipse LinkベースのアプリケーションでUCPを試したところ、ORA-0100が発生しました:常に最大オープンカーソル数を超えました。パラメーターMaxStatementsを10に設定しましたが、効果がありませんでした。私はヒープを検査しましたが、何百ものT4CPreparedStatementオブジェクトが生きていますが、ラップされたステートメントは10未満でした。したがって、私が制御できないどこかに巨大なステートメントキャッシュがあります。
Tomcat jdbcプールは魅力のように機能します。
UCPを本番環境で使用している複数の顧客を見てきました。私はあなたが心配している問題を見たことがありません。負荷がかかっても非常によく機能します。そして、再接続を処理できます。再接続ポリシーは構成可能です。また、RACもサポートしています。
しかし、商用接続プールを使用する本当の利点は、あなたが抱えている問題に対して誰かが責任を負うことです。多くの人が自分の接続プールを開発して維持しようとすることに驚くでしょう。