從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&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/. 歡迎圍觀