返回目录
1. 使用连接池的优势
- 资源复用。减少创建、销毁连接时巨大的性能消耗
- 提高响应速度。这个很好理解,在需要进行连接时直接从连接池中取连接肯定要比创建连接速度要快。
- 减少连接泄露。比如MySQL数据库默认8小时自动断开连接,如果程序还在连接中会自动断开,而是用连接池通过判断连接是否有效可以自动规避这种情况的出现。
2. Druid连接池配置及说明
引入资源
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
application.yml中配置
spring:
application:
name: demo
main:
allow-bean-definition-overriding: true
datasource:
url: "jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&useunicode=true&characterEncoding=utf8&autoReconnect=true\
&rewriteBatchedStatements=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull"
username: root
password: 123456
driverClassName: org.gjt.mm.mysql.Driver
type: com.alibaba.druid.pool.DruidDataSource
# druid相关配置
druid:
stat-view-servlet:
enabled: true # 启用监控页面
# login-username: admin #控制台用户名
# login-password: 123456 # 控制台密码
allow: 127.0.0.1 # IP白名单(没有配置或者为空,则允许所有访问)
deny: # IP黑名单 (存在共同时,deny优先于allow)
reset-enable: "false" # 禁用HTML页面上的“Reset All”功能
url-pattern: "/druid/*"
web-stat-filter:
enabled: true # 启用
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*" # 忽略资源
url-pattern: "/*"
initial-size: 10 # 初始化大小
min-idle: 10 # 最小
max-active: 100 # 最大
max-wait: 60000 #最大连接等待超时时间
remove-abandoned: true # 是否自动回收超时链接
remove-abandoned-timeout: 180 #超时时间(以秒数为单位)
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 30000 # 配置一个连接在池中最小生存的时间,单位是毫秒
validation-query: select 'X' #用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow,testOnBorrow,testOnReturn,testWhileIdle都不会起作用。这个可以不配置
test-on-borrow: false # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
test-on-return: false # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
# 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-while-idle: true
use-global-data-source-stat: true # 合并多个DruidDataSource的监控数据
pool-prepared-statements: true #打开PSCache
max-pool-prepared-statement-per-connection-size: 100 #指定每个连接PSCache的大小
filter: # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,
stat:
enabled: true # 启用
merge-sql: true
slow-sql-millis: 10000 # 超过10秒钟定义为慢SQL
log-slow-sql: true # 打印慢SQL到日志中
slf4j:
enabled: true # 启用日志
data-source-log-enabled: true
statement-executable-sql-log-enable: true
wall:
enabled: true
config:
multi-statement-allow: true # 运行一次执行多条SQL
# 解决防火墙拦截loadfile SQL:https://www.jianshu.com/p/fa6e8a4210cb
dir: "META-INF/druid/wall/mysql"
none-base-statement-allow: true # //允许非基本语句的其他语句
注意
- 由于Druid提供的了starter,所以需要自定义编写DruidConfig.java文件,直接在配置文件中进行相应配置即可;
- Druid监控页面地址:http://127.0.0.1:8080/druid/,此时如果配置监控页面的账号(login-username)、密码(login-password),那么权限认证默认使用session方式,如果使用jwt并且禁用session,那么建议使用其他方式进行登录验证;
本文介绍使用连接池的优势,并详细解析Druid连接池的配置方法。包括如何引入依赖、配置application.yml文件等内容,帮助读者快速掌握Druid连接池的使用。

2661

被折叠的 条评论
为什么被折叠?



