JAVA數據庫連接池的革命 -- 從BoneCP到HikariCP


從BoneCP到HikariCP

    今天筆者本想更新一下項目中使用到的BoneCP版本的。卻無意發現jolbox網站打不開了。起初以為是被牆掉了,經過一番查找,居然在BoneCP的Github站看到了如下的一段話:

    BoneCP的作者不知何時修改了簡述。(ps:紅色框中的部分意思:雖然BoneCP性能優於老舊的C3PO和DBCP連接池,但是現在應該被舍棄了,以迎接HikariCP)

    作者詞語之間充滿了悲涼之感,好比當年的少年俠客,風流倜儻,如今已是遲暮之年,不得不退出江湖,何其悲涼。

    在筆者胡亂感傷一通過后,那么問題就來了。

HikariCP是蝦米?

  Github主頁:http://brettwooldridge.github.io/HikariCP/

  HikariCP是一個高效的數據庫連接池。

  • One Connection Cycle is defined as single DataSource.getConnection()/Connection.close().
    • In Unconstrained benchmark, connections > threads.
    • In Constrained benchmark, threads > connections (2:1).
  • One Statement Cycle is defined as single Connection.prepareStatement(),Statement.execute()Statement.close().

1 Versions: HikariCP 2.1.0, BoneCP 0.8.0, Tomcat 8.0.9, Vibur 1.2.0, C3P0 0.9.5-pre8, Java 8u20 
2 Java options: -server -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Xmx512m

 

從HikariCP網站給出的對比圖來看。其性能相比於BoneCP有了質的變化,革命性的變更。

筆者因為使用了Spring框架。所以更換使用HikariCP相當簡單,只要將原本BoneCP的配置信息修改一下就好了。詳細見下:

 

 1 <!-- HikariCP 高性能數據庫連接池 -->
 2     <bean id="dataSourceHikari" class="com.zaxxer.hikari.HikariDataSource">
 3         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
 4         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/black1?useUnicode=true&amp;characterEncoding=UTF-8"/>
 5         <property name="username" value="root"/>
 6         <property name="password" value=""/>
 7         <!-- Default settings -->
 8         <!-- 控制自動提交行為 default:true -->
 9         <property name="autoCommit" value="true"/>
10         <!--連接池獲取的連接是否只讀 default:false-->
11         <property name="readOnly" value="false"/>
12         <!--控制連接的事務隔離等級 default:none-->
13         <property name="transactionIsolation" value="none"/>
14         <!--設置catalog以便於支持查看catalogs , 若不指定的話將直接使用 JDBC driver使用的 default:none-->
15         <property name="catalog" value="none"/>
16         <!--最大連接超時時間 default:30秒-->
17         <property name="connectionTimeout" value="30000"/>
18         <!--最大空閑超時時間 default:10分鍾   -->
19         <property name="idleTimeout" value="600000"/>
20         <!--連接池中一個連接的最大生命周期 default:30分鍾-->
21         <property name="maxLifetime" value="1800000 "/>
22         <!--  ...還有一些其他配置屬性 有興趣可以看看 O(∩_∩)O哈哈~ -->
23     </bean>

 

  Ps:筆者也是首次使用HikariCP類庫。具體的性能和優越性暫時還不好下定論。但是相信HikariCP開發組能發表這樣的對比圖,想來未必是空穴來風,暫時使用一下,過段時間再來完善性能是否如圖表所示。持續關注中。

  HikariCP官方網網的一些教程文檔:https://github.com/brettwooldridge/HikariCP/wiki

  Maven : 

  【JDK1.8】

1 <dependency>
2     <groupId>com.zaxxer</groupId>
3     <artifactId>HikariCP</artifactId>
4     <version>2.1.0</version>
5     <scope>compile</scope>
6 </dependency>

  【JDK1.6和1.7】:

1 <dependency>
2     <groupId>com.zaxxer</groupId>
3     <artifactId>HikariCP-java6</artifactId>
4     <version>2.1.0</version>
5     <scope>compile</scope>
6 </dependency>

 


作者
TinyZ
出處:http://www.cnblogs.com/zou90512/
關於作者:從事於網絡游戲服務端開發(JAVA)。喜歡接觸和了解新技術。通過不斷探索學習,提升自身價值。記錄經驗分享。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接
如有問題,可以通過 zou90512@126.com 聯系我,非常感謝。
筆者網店: https://shop70768633.taobao.com/. 歡迎圍觀

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM