Druid连接池配置

本文介绍使用连接池的优势,并详细解析Druid连接池的配置方法。包括如何引入依赖、配置application.yml文件等内容,帮助读者快速掌握Druid连接池的使用。


返回目录

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,那么建议使用其他方式进行登录验证;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值