在SpringBoot中使用HikariCP连接池

HikariCP 是一款性能极佳的数据库连接池,体积很小,大约130Kb。SpringBoot2.0也已经采用HikariCP作为默认连接池配置.。

HikariCP官方Github

对比各类连接池的基准测试。

和Druid比怎么样

国内用 Druid的也不少,如果需要在DuridHikariCP之间进行一个选择,可以先参考双方作者之间的一次沟通 :speak_no_evil:

SpringBoot整合

SpringBoot对数据源连接池的选择算法

  1. 如果 HikariCP可用,那么就会选择 HikariCP
  2. 如果没有 HikariCP,但是Tomcat-Pool可用。 就会使用 Tomcat-Pool
  3. HikariCPTomcat-Pool 都不可用,但是 commons-dbcp 可用的话,就会使用commons-dbcp

如果使用 spring-boot-starter-jdbc 或者spring-boot-starter-data-jpa “starters”, 会自动依赖 HikariCP

可以忽略这个算法,通过配置强制SpringBoot使用指定的数据源

spring.datasource.type=

HikariCP的Maven

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

配置项

#------------------------------------------------------------------------------------------------------
# 基本的核心配置,可以在 DataSourceProperties 中找到配置属性的定义
#------------------------------------------------------------------------------------------------------
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=root

#------------------------------------------------------------------------------------------------------
# hikari连接池的配置,可以在 HikariConfig 中找到配置属性的定义
#------------------------------------------------------------------------------------------------------
spring.datasource.hikari.allow-pool-suspension=
spring.datasource.hikari.auto-commit=
spring.datasource.hikari.catalog=
spring.datasource.hikari.connection-init-sql=
spring.datasource.hikari.connection-test-query=
spring.datasource.hikari.connection-timeout=
spring.datasource.hikari.data-source-class-name=
spring.datasource.hikari.data-source-j-n-d-i=
spring.datasource.hikari.data-source-properties=
spring.datasource.hikari.driver-class-name=
spring.datasource.hikari.exception-override-class-name=
spring.datasource.hikari.health-check-properties=
spring.datasource.hikari.health-check-registry=
spring.datasource.hikari.idle-timeout=
spring.datasource.hikari.initialization-fail-timeout=
spring.datasource.hikari.isolate-internal-queries=
spring.datasource.hikari.jdbc-url=
spring.datasource.hikari.leak-detection-threshold=
spring.datasource.hikari.login-timeout=
spring.datasource.hikari.max-lifetime=
spring.datasource.hikari.maximum-pool-size=
spring.datasource.hikari.metric-registry=
spring.datasource.hikari.metrics-tracker-factory=
spring.datasource.hikari.minimum-idle=
spring.datasource.hikari.password=
spring.datasource.hikari.pool-name=
spring.datasource.hikari.read-only=
spring.datasource.hikari.register-mbeans=
spring.datasource.hikari.scheduled-executor=
spring.datasource.hikari.schema=
spring.datasource.hikari.transaction-isolation=
spring.datasource.hikari.username=
spring.datasource.hikari.validation-timeout=

HikariCP带有 合理的 默认值,在大多数部署中都可以 正常运行 ,而无需进行其他调整。每个属性都是可选的。除了以下基本的核心属性以外。

  • data-source-class-name
  • jdbc-url
  • username
  • password

因为整合了springboot,springboot已经在 spring.datasource 配置了如上属性,所以Hikari的中这些配置在这里可以忽略。

常用的配置项,以及说明

https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby

1 个赞