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

2022-06-30 16:19:57 浏览数 (1)

连接池有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);

0 人点赞