Spring Boot 使用 HikariCP 连接池

Spring Boot 使用 HikariCP 连接池

这段时间因为疫情的原因,天天在家呆着,最近一次出门是去倒垃圾。人生第一次戴口罩倒垃圾,不过这也是必须要做的。

不过天天在家呆着倒是有一个好处,那就是可以把心静下来好好地吸收吸收知识,学学技术。而昨天在逛论坛的时候就看到一个有意思的文章,说的是一个数据库连接池,叫HikariCP

据说这个连接池的速度非常快,可以秒杀阿里的Druid。而正好我自己搭建的一个资源共享平台用的数据库连接池就是Druid,所以我觉得可以换过去试试看。

HikariCP 安装方式 ( Maven )

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.6</version>
</dependency>

yml 配置文件

spring:
  datasource:
    url: 
    username: 
    password: 
    driver-class-name: com.mysql.jdbc.Driver
    tomcat:
      max-idle: 10
      max-active: 15
      log-abandoned: true
      remove-abandoned: true
      remove-abandoned-timeout: 60

上面配置就是正常的数据库配置,没什么特别的。不过HikariCP需要通过配置类进行配置

HikariCP 配置

下面的配置才是重点,只有配置了下面的内容框架在启动的时候才会使用HikariCP连接池。

@Configuration
public class DataSourceConfig {

    @Value("${spring.datasource.url}")
    private String dataSourceUrl;

    @Value("${spring.datasource.username}")
    private String user;

    @Value("${spring.datasource.password}")
    private String password;

    @Bean
    public DataSource primaryDataSource() {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(dataSourceUrl); //数据源
        config.setUsername(user); //用户名
        config.setPassword(password); //密码
        config.addDataSourceProperty("cachePrepStmts", "true"); //是否自定义配置,为true时下面两个参数才生效
        config.addDataSourceProperty("prepStmtCacheSize", "250"); //连接池大小默认25,官方推荐250-500
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); //单条语句最大长度默认256,官方推荐2048
        config.addDataSourceProperty("useServerPrepStmts", "true"); //新版本MySQL支持服务器端准备,开启能够得到显著性能提升
        config.addDataSourceProperty("useLocalSessionState", "true");
        config.addDataSourceProperty("useLocalTransactionState", "true");
        config.addDataSourceProperty("rewriteBatchedStatements", "true");
        config.addDataSourceProperty("cacheResultSetMetadata", "true");
        config.addDataSourceProperty("cacheServerConfiguration", "true");
        config.addDataSourceProperty("elideSetAutoCommits", "true");
        config.addDataSourceProperty("maintainTimeStats", "false");

        HikariDataSource ds = new HikariDataSource(config);
        return ds;
    }
}

效果

在控制台的启动日志中见到下面内容,即代表成功启动并使用HikariCP连接池。

2020-02-09 22:07:20.541  INFO 145888 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-02-09 22:07:20.718  INFO 145888 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.

最后,不得不说,速度是真的变快了好多。不过HikariCPDruid各有各的侧重点,单论速度会更强。

最后的最后,贴上自己搭建的资源共享平台网址:

resources.bcloud.net.cn

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×