导语
大家一直在用Druid,却从来都没有研究过Druid到底是什么?Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!下面就来带着大家一起来研究一下Druid。
Druid是一个JDBC组件,主要是包括了如下的三部分内容
- DruidDriver代理Driver,能够提供基于Filter-Chain模式的插件体系
- DruidDataSource 可以高效的管理数据库连接池
- SQLParser
Druid 可以做哪些事情?
- 1、可以监控数据库访问的性能相关数据,Druid 内置提供了强大StatFilter插件,能够统计SQL的执行性能,对于线上分析问题有着很大的帮助。
- 2、替换了DBCP和C3P0数据库连接池。Druid提供了一个比较高效、性能强大、可扩展性强的数据库连接池。
- 3、一般在开发中,我们是将数据库密码写在配置文件中的,这样的操作是极其不安全的,DruidDruiver和DruidDataSource 都是支持了PasswordCallback操作。
- 4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JDKlog,可以按照需求选择对应的LogFilter,监控数据库访问情况。
- 5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
1、可以充当数据库连接池
2、可以监控数据库访问性能
3、获取SQL的执行日志
Druid配置项介绍
Druid配置文件
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: password
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 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