zoukankan      html  css  js  c++  java
  • 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 联系我,非常感谢。
    笔者网店: http://aoleitaisen.taobao.com. 欢迎围观

      

  • 相关阅读:
    POJ 1423 Greatest Common Increasing Subsequence【裸LCIS】
    hdu 1513 Palindrome【LCS滚动数组】
    hdu 1159 Common Subsequence 【LCS 基础入门】
    hdu 1257 最少拦截系统【贪心 || DP——LIS】
    hdu 1677 Nested Dolls【贪心解嵌套娃娃问题】
    hdu 4512 吉哥系列故事——完美队形I【LCIS经典应用】
    POJ 3020 Antenna Placement【二分匹配——最小路径覆盖】
    POJ 2253 Frogger【最短路变形——路径上最小的最大权】
    POJ 2240 Arbitrage【Bellman_ford坑】
    为什么你应该(从现在开始就)写博客(转)
  • 原文地址:https://www.cnblogs.com/jpfss/p/8422122.html
Copyright © 2011-2022 走看看