HiKariCP 是数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他连接池。
官网:https://github.com/brettwooldridge/HikariCP
1. SpringBoot1.X 整合数据库连接池 HikariCP
添加maven依赖
<!-- JDBC连接数据库,因为要用HikariCP,所以需要将SpringBoot中的tomcat-jdbc排除 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><exclusions><exclusion><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jdbc</artifactId></exclusion></exclusions></dependency><!-- HikariCP 连接池依赖,从父依赖获取额版本 --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><!-- <scope>runtime</scope> --></dependency>
添加配置
#datasource configspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://rm-2ze8fu325c8wde1z0do.mysql.rds.aliyuncs.com:3306/jiaoyan_cloud?zeroDateTimeBehavior=convertToNull&allowMultiQueries=truespring.datasource.username=guojinpengspring.datasource.password=46d8yx5mspring.datasource.max-idle=10spring.datasource.max-active=15#一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';)spring.datasource.max-lifetime=86430000spring.datasource.log-abandoned=truespring.datasource.remove-abandoned=truespring.datasource.remove-abandoned-timeout=60spring.datasource.initialize=falsespring.datasource.sqlScriptEncoding=UTF-8
新建配置类 DataSourceConfig.java
import com.zaxxer.hikari.HikariConfig;import com.zaxxer.hikari.HikariDataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** HikariCP连接池配置*/@Configurationpublic class DataSourceConfig {@Value("${spring.datasource.url}")private String dataSourceUrl;@Value("${spring.datasource.username}")private String user;@Value("${spring.datasource.password}")private String password;@Beanpublic DataSource dataSource() {HikariConfig config = new HikariConfig();/** 数据源 */config.setJdbcUrl(dataSourceUrl);/** 用户名 */config.setUsername(user);/** 密码 */config.setPassword(password);/** 是否自定义配置,为true时下面两个参数才生效 */config.addDataSourceProperty("cachePrepStmts", "true");/** 连接池大小默认25,官方推荐250-500 */config.addDataSourceProperty("prepStmtCacheSize", "250");/** 单条语句最大长度默认256,官方推荐2048 */config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");/** 新版本MySQL支持服务器端准备,开启能够得到显著性能提升 */config.addDataSourceProperty("useServerPrepStmts", "true");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;}}
2. SpringBoot2.x 整合
springboot2.0之后,采用的默认数据库连接池就是Hikari。不需要引入依赖,已经在SpringBoot中包含了。
在yml中配置
# 数据库配置spring:datasource:type: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: root# Hikari 连接池配置# 最小空闲连接数量hikari:minimum-idle: 5# 空闲连接存活最大时间,默认600000(10分钟)idle-timeout: 180000# 连接池最大连接数,默认是10maximum-pool-size: 10# 此属性控制从池返回的连接的默认自动提交行为,默认值:trueauto-commit: true# 连接池名称pool-name: MyHikariCP# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟max-lifetime: 1800000# 数据库连接超时时间,默认30秒,即30000connection-timeout: 30000connection-test-query: SELECT 1
Hikari配置说明:

