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&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/. 欢迎围观