目录

  • 1、Druid
  • 2、HikariCP

SpringBoot默认使用的连接池为

HikariCP无需任何操作直接配置即可,如果是使用

Druid需要引入maven坐标,比如:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid.version}</version>
</dependency>

1、Druid

spring:
	   datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
              # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时(缺省值:0)
              initial-size: 1
              # 最小链接池数量
              min-idle: 1
              # 最大连接池数量(缺省值:8)
              max-active: 20
              # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。(缺省值:false)
              # pool-prepared-statements: false
              # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
              # max-open-prepared-statements: -1
              # 用来检测连接q是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
              validation-query: select 'x'
              # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
              # test-on-borrow: false
              # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
              # test-on-return: false
              # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
              test-while-idle: true
              # 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
              # log4j 需要加入依赖
              filters: stat,wall,log4j
              # 监控统计 —— 可删除
              # 地址/端口/项目context-path/druid
              filter:
                stat:
                  # 数据库类型
                  db-type: mysql
                  # 慢SQL
                  log-slow-sql: true
                  # 慢SQL执行时间,缺省值 3000ms ,表示超过多少ms为执行慢的sql(监控页面可以查询具体的sql)
                  slow-sql-millis: 2000
                wall:
                  enabled: true
                  db-type: mysql
                  config:
                    delete-allow: false
                    drop-table-allow: false
         		#statViewServlet配置
              	stat-view-servlet:
                    # 是否启用statViewServlet配置
                    enabled: true
                    # 访问监控页面
                    url-pattern: "/druid/*"
                    # 禁止手动重置监控数据
                    reset-enable: false
                    # 设置监控页面的登陆名
                    login-username: admin
                    # 设置监控页面的登陆密码
                    login-password: admin
        		#WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
              	web-stat-filter:
                    # 是否启用WebStatFilter
                    enabled: true
                    # 访问路径
                    url-pattern: "/*"
                    # 排除不必要的url,请求不进行sql统计
                    exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
                    # 监控最大session数,默认是1000
                    session-stat-max-count: 1000
                    # 是否启用session的统计功能
                    session-stat-enable: true
                    # 是否启用监控单个Url调用的sql列表
                    profile-enable: true
           		#使druid当前session的用户是谁,session_user_key是你保存到session中的sessionName
                principalSessionName: session_user_key
                # 使druid只当当前的user是谁,cookie_user_key是你保存在cookie中的cookieName
                principalCookieName: cookie_user_key

2、HikariCP

spring:
  datasource:
	type: com.zaxxer.hikari.HikariDataSource
    hikari:
      #最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值
      maximum-pool-size: 10
      #最小空闲连接,默认值 10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size
      minimum-idle: 2
      #连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒
      connection-timeout: 60000
      #空闲连接超时时间,默认值600000ms(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;
      #不等于0且小于10秒,会被重置为10秒。
      #只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放(自动释放过期链接)
      idle-timeout: 600000
      #连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短
      max-lifetime: 640000
      #连接测试查询
      connection-test-query: SELECT 1