数据库连接池 ( 三 ) springboot默认连接池 Hikari
3.Java常用连接池
3.0.常用连接池
在Java中开源的数据库连接池有以下几种 :
1.C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
2.Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的JDBC驱动程序增加连接池功能。
3.Jakarta DBCP:DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池。DBCP可以直接的在应用程序中使用。
3.1.Hikari
Hikari是一款非常强大,高效,并且号称“史上最快连接池”。
由于其性能方面比较好,并且在springboot2.0之后,采用的默认数据库连接池就是Hikari,在引用parents后不用专门再添加依赖。 也可以导入依赖
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.0</version> </dependency>
性能方面的比较:hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。
3.1.1.配置
在Spring Boot自动化配置中,对于数据源的配置可以分为两类:
1、通用配置:以 spring.datasource.* 的形式存在,主要是对一些即使使用不同数据源也都需要配置的一些常规内容。
比如:数据库链接地址、用户名、密码等。通常就这些配置:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver
2、数据源连接池配置:以 spring.datasource.<数据源名称>.* 的形式存在。
详细配置请访问:https://github.com/brettwooldridge/HikariCP
比如:Hikari的配置参数就是 spring.datasource.hikari.* 形式。下面这个是我们最常用的几个配置项及对应说明:
# 最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size spring.datasource.hikari.minimum-idle=10 # 最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值 spring.datasource.hikari.maximum-pool-size=20 # 空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0; # 不等于0且小于10秒,会被重置为10秒。 spring.datasource.hikari.idle-timeout=500000 # 连接最大存活时间,不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短 spring.datasource.hikari.max-lifetime=540000 # 连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒 spring.datasource.hikari.connection-timeout=60000 # 用于测试连接是否可用的查询语句 spring.datasource.hikari.connection-test-query=SELECT 1 ## 此属性控制从池返回的连接的默认自动提交行为,默认值:true spring.datasource.hikari.auto-commit=true ## 连接池名称 spring.datasource.hikari.pool-name=MyHikariCP
3.1.2.yml格式配置
spring: application: name: hikari-demo datasource: url: jdbc:mysql://127.0.0.1:3306/atest_stuexam username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.zaxxer.hikari.HikariDataSource hikari: maximum-pool-size: 1000 #最大连接数,默认值10. minimum-idle: 200 #最小空闲连接,默认值10. connection-timeout: 60000 #连接超时时间(毫秒),默认值30秒. #空闲连接超时时间,默认值600000(10分钟),只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放 #如果大于等于 max-lifetime 且 max-lifetime>0,则会被重置为0. idle-timeout: 600000 max-lifetime: 3000000 #连接最大存活时间,默认值30分钟.设置应该比mysql设置的超时时间短 connection-test-query: select 1 #连接测试查询