對現有的資料庫連線池做調研對比,綜合性能,可靠性,穩定性,擴充套件性等因素選出推薦出最優的資料庫連線池 。
note: 本文所有測試均是mysql庫
1:效能方面 hikaricp>druid>tomcat-jdbc>dbcp>c3p0 。hikaricp的高效能得益於最大限度的避免鎖競爭。
2:druid功能最為全面,sql攔截等功能,統計資料較為全面,具有良好的擴充套件性。
3:綜合性能,擴充套件性等方面,可考慮使用druid或者hikaricp連線池。
4:可開啟preparestatement快取,對效能會有大概20%的提公升。 功能
dbcp
druid
c3p0
tomcat-jdbc
hikaricp
是否支援pscache是是
是否否監控
擴充套件性弱好弱
弱弱sql攔截及解析無支援
無無無**
簡單中等
複雜簡單
簡單更新時間
2015.8.6
2015.10.10
2015.12.09
2015.12.3
特點依賴於common-pool
阿里開源,功能全面
歷史久遠,**邏輯複雜,且不易維護
優化力度大,功能簡單,起源於bonecp
連線池管理
linkedblockingdeque
陣列fairblockingqueue
threadlocal+copyonwritearraylist
環境配置:
cpuintel(r) xeon(r) cpu e5-2430 v2 @ 2.50ghz,24core
msyql version
5.5.46
tomcat-jdbc version
8.0.28
hikaricp version
2.4.3
c3p0 version
0.9.5-pre8
dbcpversion
2.0.1
druidversion
1.0.5
1:獲取關閉連線效能測試
測試說明:
圖形:
mock效能資料 (單位:ms)520
50100
tomcat-jdbc
442447
1,013
1,264
c3p0
4,480
5,527
7,449
10,725
dbcp
676689
8671,292
hikari
3833
3830
druid
291293
562985
mysql效能資料 (單位:ms)520
50100
tomcat-jdbc
436453
1,033
1,291
c3p0
4,378
5,726
7,975
10,948
dbcp
671679
8971,380
hikari
9682
8778
druid
304424
6901,130
測試結果:
hikaricp效能分析:
2:查詢一條語句效能測試
測試說明:
圖形:
測試資料:58
2050
100tomcat-jdbc
2,178
1,495
1,769
1,818
1,858
c3p0
3,237
3,451
4,488
5,994
7,906
dbcp
2,816
1,935
2,097
2,243
2,280
hikari
2,299
1,546
1,682
1,751
1,772
druid
2,297
1,551
1,800
1,977
2,032
測試結果:
3:pscache效能對比
測試說明:
測試資料:
cache
1,927
not cache
2,134
測試結果:
測試說明:
pscache的key為prepare執行的sql和catalog等,value對應的為preparestatement物件。開啟快取主要是減少了解析sql的開銷。
幾種常見資料庫連線池的使用比較
注意datasource這個bean在dao層 hibernate或jdbc 的配置檔案裡需要作為datasource名稱的屬性配置到所有bean中 其中 jdbc myds 這個就是jndi名稱了,下一步就是在應用伺服器連線池裡進行資料庫連線以及對應的jndi配置了 一 開源資料連線池 1 dbc...
資料庫連線池配置
連線池的必要性 資料庫連線池是負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有的資料庫連線,可以視作乙個存放資料庫連線的容器。資料庫連線池採用了資源池設計模式,用於資源共享,避免資源的頻繁分配與釋放問題。同時便於統一管理,可以通過對連線池的控制,限制系統與資料庫的連線,監視資料庫的連線...
資料庫連線池技術 DBCP連線池 配置
最近遇到資料庫連線池配置問題,搜了很多資料對照著進行全域性配置都沒有解決。報的錯誤是 org.apache.tomcat.dbcp.dbcp.sqlnestedexception cannot create jdbc driver of class for connect url jdbc mysq...