# Springboot数据库连接池
# 连接池
# 常见连接池
C3P0:是Hibernate内置的数据库连接池,官方已经不再维护
DBCP:内部依赖Commons-Pool,性能差,现在已经放弃维护
hikariCP:轻量级,高性能的连接池,快速启动,易于配置和使用
Druid:功能最为全面,sql拦截,统计数据较为全面,具有良好扩展性
# HhariCP使用
hikari:
#连接池名
pool-name: HikariCP
#最小空闲连接数
minimum-idle: 5
# 空闲连接存活最大时间,默认10分钟
idle-timeout: 600000
# 连接池最大连接数,默认是10
maximum-pool-size: 10
# 此属性控制从池返回的连接的默认自动提交行为,默认值:true
auto-commit: true
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
max-lifetime: 1800000
# 数据库连接超时时间,默认30秒
connection-timeout: 30000
# 连接测试query
connection-test-query: SELECT 1
# Druid使用
Druid是阿里巴巴的数据库连接池项目,为监控而生,监控特性不影响性能。功能强大,能防止SQL注入。
内置了监控页面,提供了非常完备的监控信息。
# StatFilter介绍
Druid监控信息通过StatFilter采集,包括SQL执行,并发,慢查,执行区间分布等
特点:
- 监控不影响性能,占用内存和CPU极小
- SQL参数化合并监控
- 执行次数、返回行数、更新行数和并发监控
- 慢查监控:超过3s被认为是慢查
- Exception监控
- 诊断支持:内置了LogFilter
- 防止SQL注入
- 基于语义的防SQL注入
- 极低的漏报率和误报率
- 防注入对性能影响极小
# 引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.9</version>
</dependency>
# yml配置
# Druid datasource
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 初始化大小
initial-size: 5
# 最小连接数
min-idle: 10
# 最大连接数
max-active: 20
# 获取连接时的最大等待时间
max-wait: 60000
# 一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计
filters: stat,wall
# 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
validation-query: SELECT 1
# 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
test-on-borrow: true
# 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
test-on-return: true
# 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
test-while-idle: true
# 是否开启 StatViewServlet
stat-view-servlet:
enabled: true
# 访问监控页面 白名单,默认127.0.0.1
allow: 127.0.0.1
login-username: admin
login-password: admin
# FilterStat
filter:
stat:
# 是否开启 FilterStat,默认true
enabled: true
# 是否开启 慢SQL 记录,默认false,SQL执行时间超过阈值被打印
log-slow-sql: true
# 慢 SQL 的标准,默认 3000,单位:毫秒
slow-sql-millis: 5000
# 合并多个连接池的监控数据,默认false
merge-sql: false
# 测试
访问http://localhost:8080/druid/datasource.html
admin/admin登录