spring boot连接池Druid和Hikari

前言

druid是我接触的第一个连接池,也是使用最多的一个,由阿里开源,国内用的比较多的一个连接池,功能齐全,自带界面,防火墙、拦截器、SQL监控、检测等。
hikari是springboot2以后默认最优先使用的连接池,速度快,功能少
池化技术的优势:
避免频繁创建连接,销毁连接带来的额外性能损耗、减少响应时间
其他的连接池还有apache的DBCP,c3p0

druid

使用

引入依赖
这里引入的是专门为spring boot打造的druid-spring-boot-starter,如果引入的是druid则需要配置xml文件

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

配置

druid参数可以不写,会按照默认参数处理,需要指定type

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///:3306/数据库名?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username:
    password:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 10 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
      min-idle: 10 # 最小连接池数量
      maxActive: 200 # 最大连接池数量
      maxWait: 60000 # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置
      timeBetweenEvictionRunsMillis: 60000 # 关闭空闲连接的检测时间间隔.Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
      minEvictableIdleTimeMillis: 300000 # 连接的最小生存时间.连接保持空闲而不被驱逐的最小时间
      validationQuery: SELECT 1 FROM DUAL # 验证数据库服务可用性的sql.用来检测连接是否有效的sql 因数据库方言而差, 例如 oracle 应该写成 SELECT 1 FROM DUAL
      testWhileIdle: true # 申请连接时检测空闲时间,根据空闲时间再检测连接是否有效.建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRun
      testOnBorrow: false # 申请连接时直接检测连接是否有效.申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      testOnReturn: false # 归还连接时检测连接是否有效.归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      poolPreparedStatements: true # 开启PSCache
      maxPoolPreparedStatementPerConnectionSize: 20 #设置PSCache值
      connectionErrorRetryAttempts: 3 # 连接出错后再尝试连接三次
      breakAfterAcquireFailure: true # 数据库服务宕机自动重连机制
      timeBetweenConnectErrorMillis: 300000 # 连接出错后重试时间间隔
      asyncInit: true # 异步初始化策略
      remove-abandoned: true # 是否自动回收超时连接
      remove-abandoned-timeout: 1800 # 超时时间(以秒数为单位)
      transaction-query-timeout: 6000 # 事务超时时间
      filters: stat,wall,log4j2
      useGlobalDataSourceStat: true #合并多个DruidDataSource的监控数据
      connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #通过connectProperties属性来打开mergeSql功能;慢SQL记录

hikari

使用

在spring boot2中引入jdbc的时候如果没有显式指定数据库连接池,默认使用的就是hikari连接池

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

配置

和druid一样,可以使用默认参数

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///:3306/数据库名?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username:
    password:
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
    # 连接池中允许的最小连接数。缺省值:10
      minimum-idle: 10
    # 连接池中允许的最大连接数。缺省值:10
      maximum-pool-size: 100
    # 自动提交
      auto-commit: true
    # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
      idle-timeout: 600
    # 连接池名字
      pool-name: 泡泡的HikariCP
    # 一 个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒
      max-lifetime: 1800000
    # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
      connection-timeout: 30000    

启用事务

在启动类上添加@EnableTransactionManagement注解,将事务交给spring boot来管理,在service上使用@Transactional注解

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 2.0 中使用 Hikari 连接池替换 Druid 的方法如下所述: 1. 在 pom.xml 文件中,修改数据库连接池依赖的版本,将 druid 依赖排除,同时添加 hikari 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <exclusion> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </dependency> ``` 2. 在 Spring Boot 的配置文件(application.properties 或 application.yml)中,修改数据库连接池相关的配置: ```properties spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.url=jdbc:mysql://localhost:3306/db_name spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 如果需要自定义 Hikari 连接池的配置,则可以在配置文件中添加以下配置项(可选): ```properties # Hikari 连接池配置 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.pool-name=my-connection-pool spring.datasource.hikari.max-lifetime=1800000 ``` 以上就是在 Spring Boot 2.0 中使用 Hikari 连接池替换 Druid 的方法,通过修改 pom.xml 文件和配置文件,同时添加相应的依赖和配置项,即可成功切换至 Hikari 连接池

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值