在SpringBoot中使用HikariCP連接池
HikariCP
是一款性能極佳的數據庫連接池,體積很小,大約130Kb。SpringBoot2.0也已經采用HikariCP作為默認連接池配置.。
HikariCP官方Github
https://github.com/brettwooldridge/HikariCP
對比各類連接池的基准測試。
和Druid比怎么樣
國內用 Druid
的也不少,如果需要在Durid
和 HikariCP
之間進行一個選擇,可以先參考雙方作者之間的一次溝通 。
https://github.com/brettwooldridge/HikariCP/issues/232
SpringBoot整合
SpringBoot對數據源連接池的選擇算法
- 如果
HikariCP
可用,那么就會選擇HikariCP
- 如果沒有
HikariCP
,但是Tomcat-Pool
可用。 就會使用Tomcat-Pool
HikariCP
和Tomcat-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.url=com.mysql.cj.jdbc.Driver
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