各種資料庫連線池對比

2021-07-24 15:30:48 字數 961 閱讀 2808

主要功能對比

druid

bonecp

dbcp

c3p0

proxool

jboss

tomcat-jdbc

lru是否是

否是是?

pscache是是

是是否否

是pscache-oracle-optimized是否

否否否否

否exceptionsorter是否

否否否是

否更新維護是否

否否否?

是 lru是乙個效能關鍵指標,特別oracle,每個connection對應資料庫端的乙個程序,如果資料庫連線池遵從lru,有助於資料庫伺服器優化,這是重要的指標。在測試中,druid、dbcp、proxool是遵守lru的。bonecp、c3p0則不是。bonecp在mock環境下效能可能好,但在真實環境中則就不好了。

pscache是資料庫連線池的關鍵指標。在oracle中,類似select name from user where id = ?這樣的sql,啟用pscache和不啟用pscache的效能可能是相差乙個數量級的。proxool是不支援pscache的資料庫連線池,如果你使用oracle、sql server、db2、sybase這樣支援游標的資料庫,那你就完全不用考慮proxool。

oracle 10系列的driver,如果開啟pscache,會占用大量的記憶體,必須做特別的處理,啟用內部的enterimplicitcache等方法優化才能夠減少記憶體的占用。這個功能只有druiddatasource有。如果你使用的是oracle jdbc,你應該毫不猶豫採用druiddatasource。

exceptionsorter是乙個很重要的容錯特性,如果乙個連線產生了乙個不可恢復的錯誤,必須立刻從連線池中去掉,否則會連續產生大量錯誤。這個特性,目前只有jbossdatasource和druid實現。druid的實現參考自jbossdatasource,經過長期生產反饋補充。

資料庫連線池對比

常見的driverclassname和url oracle mysql sqlserver sqlserver 2005 druid bonecp dbcp c3p0 proxool jboss tomcat jdbc lru是否是 否是是?pscache是是 是是否否 是pscache oracl...

資料庫連線池 Redis連線池

基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...

資料庫連線池與非連線池效率的直觀對比

如果網路狀況複雜 每次連線耗時更長 的情況下,使用連線池的優勢將更加明顯。執行結果 執行100次,共耗費109毫秒 非池執行100次,共耗費4422毫秒 執行200次,共耗費141毫秒 非池執行200次,共耗費8031毫秒 執行300次,共耗費219毫秒 非池執行300次,共耗費11812毫秒 測試...