SpringBoot数据库连接池Hikari配置在项⽬中,⼀般情况下访问数据库,会创建⼀个连接,⽤完后就关闭它,对于简单的系统这样不会带来什么明显的性能上的开销。但是对于⼀个复杂的系统,频繁的建⽴、关闭连接,会极⼤的减低系统的性能,因为对于数据库连接的使⽤可能会成为系统性能的瓶颈。数据库连接池负责分配、管理和释放数据库连接,它允许应⽤程序重复使⽤⼀个现有的数据库连接,⽽不是再重新建⽴⼀个;释放空闲时间超过最⼤空闲时间的数据库连接来避免因为没有释放数据库连接⽽引起的数据库连接遗漏。
SpringBoot默认使⽤Hikari
SpringBoot项⽬如果我们通过启动器starter使⽤JPA或者Mybatis,是默认会使⽤Hikari数据库连接池的,官⽅的介绍如下:Connection to a Production Database
Production database connections can also be auto-configured by using a pooling DataSource. Spring Boot uses the following algorithm for choosing a specific implementation:
1. We prefer for its performance and concurrency. If HikariCP is available, we always choose it.
2. Otherwise, if the Tomcat pooling DataSource is available, we use it.
3. Otherwise, if is available, we use it.
4. If none of HikariCP, Tomcat, and DBCP2 are available and if Oracle UCP is available, we use it.
If you use the spring-boot-starter-jdbc or spring-boot-starter-data-jpa “starters”, you automatically get a dependency to HikariCP.
spring-boot-starter-jdbc Starter for using JDBC with the HikariCP connection pool
spring-boot-starter-jdbc依赖会⾃动使⽤HikariCP,在SpringBoot项⽬中如果我们通过mybatis-spring-boot-starter启动器使⽤mybatis连接数据库,可以看到spring-boot-starter-jdbc是编译依赖项。
如果我们通过spring-boot-starter-data-jpa启动器starter使⽤JPA连接数据库,可以看到spring-boot-sta
rter-jdbc也是编译依赖项。所以SpringBoot项⽬我们通过spring-boot-starter-data-jpa使⽤JPA或者mybatis-spring-boot-starter使⽤Mybatis都是会默认⾃动使⽤Hikari数据库连接池。
Hikari常⽤配置
在SpringBoot项⽬中我们可以不配置Hikari的配置项,项⽬会使⽤默认的值启⽤HikariCP数据库连接池,我们也可以通过l/application.properties⽂件设置HikariCP的配置项,常⽤的配置项如下:
# Hikari pool github/brettwooldridge/HikariCPvalidation框架
pe=com.zaxxer.hikari.HikariDataSource
# 连接池中允许的最⼩连接数。缺省值:10
spring.datasource.hikari.minimum-idle=10
# 连接池中允许的最⼤连接数。缺省值:10
spring.datasource.hikari.maximum-pool-size=100
# ⾃动提交
spring.datasource.hikari.auto-commit=true
# ⼀个连接idle状态的最⼤时长(毫秒),超时则被释放(retired),缺省:10分钟
spring.datasource.hikari.idle-timeout=30000
# 连接池名字
spring.datasource.hikari.pool-name=FlyduckHikariCP
# ⼀个连接的⽣命时长(毫秒),超时⽽且没被使⽤则被释放(retired),缺省:30分钟,建议设置⽐数据库超时时长少30秒
spring.datasource.hikari.max-lifetime=1800000
# 等待连接池分配连接的最⼤时长(毫秒),超过这个时长还没可⽤的连接则发⽣SQLException,缺省:30秒
spring.tion-timeout=30000
# 数据库连接测试语句
spring.tion-test-query=SELECT 1
SpringBoot官⽅⽂档罗列了hikari所有的配置项(如下),同时通过HikariCP的官⽅我们可以详细的了解各配置项的默认值以及含
义。
spring.datasource.hikari.allow-pool-suspension spring.datasource.hikari.auto-commit
spring.datasource.hikari.catalog
spring.tion-init-sql spring.tion-test-query spring.tion-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.ption-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.ic-registry spring.datasour
ics-tracker-factory spring.datasource.hikari.minimum-idle spring.datasource.hikari.password
spring.datasource.hikari.pool-name
spring.ad-only
spring.ister-mbeans spring.datasource.hikari.scheduled-executor spring.datasource.hikari.schema
spring.ansaction-isolation spring.datasource.hikari.username
spring.datasource.hikari.validation-timeout Hikari specific settings bound to an instance of Hikari's HikariDataSource
总结
SpringBoot项⽬如果我们通过启动器starter的⽅式使⽤JPA或者Mybatis作为数据库持久层框架访问数据库,都会默认⾃动启⽤HikariCP数据库连接池。实际项⽬上线时,可以根据项⽬的实际情况以及服务器情况设置合适的HikariCP配置项,让HikariCP数据库连接池提⾼对数据库操作的性能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论