整合Druid
Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource
在pom.xml引入依赖
xml
<!--整合Druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>在application.yaml设置为Druid连接池
yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 使用阿里的数据库连接池
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC
username: root
password: yuxingxuan进行最简单的配置之后就可以直接使用了,Spring Boot默认使用的是HikariDataSource
application.yaml参考配置信息
yaml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://124.221.121.134:3306/zybtrainsystem?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ZybTrainSystem
password: zcieiB7r2s3BT5NP
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true数据库连接心跳包:
yaml# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 30000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最大生存的时间,单位是毫秒 maxEvictableIdleTimeMillis: 900000 # 配置检测连接是否有效 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false
timeBetweenEvictionRunsMillis:设置了执行空闲连接验证和废弃连接回收任务的间隔时间。在这里,配置的是每30秒(30000毫秒)执行一次这样的任务minEvictableIdleTimeMillis:定义了一个连接在连接池中可以保持空闲状态的最短时间。配置为300000毫秒(5分钟),意味着一个连接如果空闲超过5分钟,它就可以被回收maxEvictableIdleTimeMillis:定义了一个连接在连接池中可以保持空闲状态的最长时间。配置为900000毫秒(15分钟),意味着一个连接如果空闲超过15分钟,它将被强制回收validationQuery:定义了一个简单的SQL查询(SELECT 1 FROM DUAL),用于验证连接的有效性testWhileIdle:性设置为true,表示在连接空闲时执行验证查询testOnBorrow:属性设置为false,表示在从连接池中借用连接之前不执行验证查询testOnReturn:属性设置为false,表示在将连接返回到连接池之前不执行验证查询
