簡體   English   中英

Oracle通用連接池(UCP)有多好

[英]How good is Oracle Universal Connection Pool (UCP)

有沒有人有在實際生產負載下使用Oracle UCP的經驗? 它是否能很好地處理數據庫重新連接? 有任何多線程問題嗎? 有沒有人將它與C3P0或Apache DBCP進行比較?

我評估了UCP 11.2.0.1作為我們傳統連接池的替代品,我不推薦它

  • 不完全支持jdk 6 / ojdbc6.jar。 例如,使用語句緩存和jmx-support不能與java 6一起使用並拋出異常。
  • 沒有內部語句緩存 - 它依賴於jdbc驅動程序的語句緩存( setPoolable()
  • 我向oracle提交了這兩個問題,他們確認了這個問題,並且可能會在oracle 12.0發布時修復它。 但即使這樣也不確定。
  • 發布的數量太少 (3年內發布 2次),社區支持太少。
  • 不是開源的
  • 幾乎無法擴展。 只有少數回調具有可怕的界面設計。
    示例:您希望在Connection超過其TTL時收到通知? 准備包裝器DataSource以及內部/專有UCP API的大量使用。 官方文檔(最新更新:2008)仍然保持沉默,如何實現這一目標。
  • 胖設計 (幾乎是一個0.5 MB的jar) - 許多具有相似名稱/功能的類(例如,有一個PoolDataSource和一個ConnectionPool - 兩者都是相關的,但調用方式不同,並提供稍微不同的功能。)
  • 僅限java.util.logging


更新1(2014年4月)
雖然略顯偏離主題:作為我評估的結果,我決定使用新的tomcat jdbc-pool - 它在幾個生產系統中運行幾年以來幾乎完美。 它設計精良,定期更新,可擴展,並且apache tomcat團隊在回答問題/修復問題方面做得很好

更新2(2016年7月)
我現在強烈推薦HikariCP ,我目前支持所有其他連接池。
它的架構,注重正確性和性能真是太棒了。

我在一個系統中使用UCP,每秒約10次事務(平均值)和每秒360次事務處理峰值,並且沒有問題。 (每個應用服務器的數量為8台服務器)

但是,從UCP獲得的主要好處是,當您使用Oracle RAC和TAF / FAN功能,UCP與Dataguard或您 appserver 之外運行時。

我已經描述了我在UCP中觀察到的性能/可伸縮性問題與隱式連接緩存相比: https//stackoverflow.com/a/27512252/676877

我見過很多客戶在生產中使用UCP。 我沒有看到你關心的問題。 它在負載下表現很好。 並且可以處理重新連接。 重新連接策略是可配置的。 它也很好地支持RAC。

但使用商業連接池的真正好處是,有人對您遇到的任何問題負責。 你會驚訝於有多少人試圖開發和維護自己的連接池。

我剛剛使用基於Eclipse Link的應用程序嘗試了UCP,並且遇到了ORA-0100:每次都超出了最大打開游標數。 我已將參數MaxStatements設置為10,但這沒有任何效果。 我已經檢查了堆,並且有數百個T4CPreparedStatement對象存活但少於10個包裝語句。 所以在我無法控制的地方有一個巨大的語句緩存。

Tomcat jdbc池就像一個魅力。

通過使用連接池(IBM RAD)到oracle,我得到了更快的結果。與正常編程概念相比,在連接池屬性中,默認情況下,最大連接數為10,理想超時為180秒。

在這里我們可以設置最大用戶用戶訪問權限....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM