# Springboot数据库连接池

# 连接池

# 常见连接池

C3P0:是Hibernate内置的数据库连接池,官方已经不再维护

DBCP:内部依赖Commons-Pool,性能差,现在已经放弃维护

hikariCP:轻量级,高性能的连接池,快速启动,易于配置和使用

Druid:功能最为全面,sql拦截,统计数据较为全面,具有良好扩展性

# HhariCP使用

    hikari:
      #连接池名
      pool-name: HikariCP
      #最小空闲连接数
      minimum-idle: 5
      # 空闲连接存活最大时间,默认10分钟
      idle-timeout: 600000
      # 连接池最大连接数,默认是10
      maximum-pool-size: 10
      # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
      auto-commit: true
      # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
      max-lifetime: 1800000
      # 数据库连接超时时间,默认30秒
      connection-timeout: 30000
      # 连接测试query
      connection-test-query: SELECT 1

# Druid使用

Druid是阿里巴巴的数据库连接池项目,为监控而生,监控特性不影响性能。功能强大,能防止SQL注入。

内置了监控页面,提供了非常完备的监控信息。

# StatFilter介绍

Druid监控信息通过StatFilter采集,包括SQL执行,并发,慢查,执行区间分布等

特点:

  • 监控不影响性能,占用内存和CPU极小
  • SQL参数化合并监控
  • 执行次数、返回行数、更新行数和并发监控
  • 慢查监控:超过3s被认为是慢查
  • Exception监控
  • 诊断支持:内置了LogFilter
  • 防止SQL注入
    • 基于语义的防SQL注入
    • 极低的漏报率和误报率
    • 防注入对性能影响极小

# 引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.9</version>
</dependency>

# yml配置

    # Druid datasource
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 初始化大小
      initial-size: 5
      # 最小连接数
      min-idle: 10
      # 最大连接数
      max-active: 20
      # 获取连接时的最大等待时间
      max-wait: 60000
      # 一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计
      filters: stat,wall
      # 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
      validation-query: SELECT 1
      # 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
      test-on-borrow: true
      # 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
      test-on-return: true
      # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
      test-while-idle: true
      # 是否开启 StatViewServlet
      stat-view-servlet:
        enabled: true
        # 访问监控页面 白名单,默认127.0.0.1
        allow: 127.0.0.1
        login-username: admin
        login-password: admin
      # FilterStat
      filter:
        stat:
          # 是否开启 FilterStat,默认true
          enabled: true
          # 是否开启 慢SQL 记录,默认false,SQL执行时间超过阈值被打印
          log-slow-sql: true
          # 慢 SQL 的标准,默认 3000,单位:毫秒
          slow-sql-millis: 5000
          # 合并多个连接池的监控数据,默认false
          merge-sql: false

# 测试

访问http://localhost:8080/druid/datasource.html

admin/admin登录

Last Updated: 11/18/2024, 4:01:47 PM