經常使用的主流開源數據庫鏈接池有C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid等git
C3p0: 開源的JDBC鏈接池,實現了數據源和JNDI綁定,支持JDBC3規範和JDBC2的標準擴展。目前使用它的開源項目有Hibernate、Spring等。單線程,性能較差,適用於小型系統,代碼600KB左右。github
DBCP (Database Connection Pool):由Apache開發的一個Java數據庫鏈接池項目, Jakarta commons-pool對象池機制,Tomcat使用的鏈接池組件就是DBCP。單獨使用dbcp須要3個包:common-dbcp.jar,common-pool.jar,common-collections.jar,預先將數據庫鏈接放在內存中,應用程序須要創建數據庫鏈接時直接到鏈接池中申請一個就行,用完再放回。單線程,併發量低,性能很差,適用於小型系統。數據庫
Tomcat Jdbc Pool:Tomcat在7.0之前都是使用common-dbcp作爲鏈接池組件,可是dbcp是單線程,爲保證線程安全會鎖整個鏈接池,性能較差,dbcp有超過60個類,也相對複雜。Tomcat從7.0開始引入了新增鏈接池模塊叫作Tomcat jdbc pool,基於Tomcat JULI,使用Tomcat日誌框架,徹底兼容dbcp,經過異步方式獲取鏈接,支持高併發應用環境,超級簡單核心文件只有8個,支持JMX,支持XA Connection。安全
BoneCP:官方說法BoneCP是一個高效、免費、開源的Java數據庫鏈接池實現庫。設計初衷就是爲了提升數據庫鏈接池性能,根據某些測試數據顯示,BoneCP的速度是最快的,要比當時第二快速的鏈接池快25倍左右,完美集成到一些持久化產品如Hibernate和DataNucleus中。BoneCP特點:高度可擴展,快速;鏈接狀態切換的回調機制;容許直接訪問鏈接;自動化重置能力;JMX支持;懶加載能力;支持XML和屬性文件配置方式;較好的Java代碼組織,100%單元測試分支代碼覆蓋率;代碼40KB左右。併發
Druid:Druid是Java語言中最好的數據庫鏈接池,Druid可以提供強大的監控和擴展功能,是一個可用於大數據實時查詢和分析的高容錯、高性能的開源分佈式系統,尤爲是當發生代碼部署、機器故障以及其餘產品系統遇到宕機等狀況時,Druid仍可以保持100%正常運行。主要特點:爲分析監控設計;快速的交互式查詢;高可用;可擴展;Druid是一個開源項目,源碼託管在github上。https://blog.csdn.net/weinichendian/article/details/78503469框架