连接池有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
Multi-Thread
500 threads each attempting 100 get/release connection
Pool size range: 50-200.
Helper threads: 5
但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:
代码语言:javascript复制<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
2)Java 7 maven artifact:
代码语言:javascript复制<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);