连接池有C3P0、DBCP、DRUID它们都比较成熟稳定,但是性能不是十分好。所以有了BoneCP这个连接池,它是一个高速、免费、开源的JAVA连接池,它的性能几乎是C3P0、DBCP的25倍,十分强悍。

      BoneCP GitHub:https://github.com/wwadge/bonecp

下面来看下官网对BoneCP连接池的性能测试。

Single Thread

1,000,000 get connection / release connection requests

No delay between getting/releasing connection.

Pool size range: 20-50.

Acquire increment: 5

Helper threads: 1

Partition count: 1

HikariCP号称史上最快速的连接池_java

Multi-Thread

500 threads each attempting 100 get/release connection

Pool size range: 50-200.

Helper threads: 5

HikariCP号称史上最快速的连接池_java_02

但BoneCP这个连接池在2013年停止更新了,就是为了让步于HikariCP这个连接池。

HikariCP

         HikariCP同样是一个十分快速、简单、可靠的及十分轻量级的连接池,只有130KB,在GitHub上看到的是"光HikariCP"的名称,光就是说明它十分快。下面看看HikariCP连接池的性能测试,简直就是碾压其他各种连接池,性能真是十分强悍。

使用和其他连接池差不多,具体的配置及参数参考:

      HikariCP GitHub:https://github.com/brettwooldridge/HikariCP


下面说下如何使用hikariCP:


1、首先创建一个Maven项目

2、maven 依赖如下: 
1)Java 8 maven artifact:

<dependency>    
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
      <version>2.6.1</version>
      <scope>compile</scope>
</dependency>

 

2)Java 7 maven artifact:

<dependency>
       <groupId>com.zaxxer</groupId>
       <artifactId>HikariCP-java7</artifactId>
       <version>2.4.11</version>
       <scope>compile</scope>
</dependency>


其他jar依赖根据缺少情况添加即可。


3、hikari.properties文件


jdbcUrl=jdbc:mysql://localhost:3306/test

username=test password=123456

maximumPoolSize=30

minimumIdle=5

connectionTestQuery=SELECT 1

autoCommit=true

dataSource.cachePrepStmts=true

dataSource.prepStmtCacheSize=250

dataSource.prepStmtCacheSqlLimit=2048

dataSource.useServerPrepStmts=true

dataSource.useLocalSessionState=true

dataSource.useLocalTransactionState=true

dataSource.rewriteBatchedStatements=true

dataSource.cacheResultSetMetadata=true

dataSource.cacheServerConfiguration=true

dataSource.elideSetAutoCommits=true

dataSource.maintainTimeStats=false


4、创建连接

HikariConfig config = new HikariConfig("src/hikari.properties");

System.out.println(config.getJdbcUrl());

System.out.println(config.getConnectionTimeout());

System.out.println(config.getMaximumPoolSize());

System.out.println(config.getMinimumIdle());

System.out.println(config.getUsername());

System.out.println(config.getPassword());

HikariDataSource ds = new HikariDataSource(config);