本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

目录

一、HikariCP 和 Druid 的区别

二、Hikari 连接池特点

三、Druid 连接池特点

四、spring boot 整合 HikariCP

五、spring boot 整合 Druid

一、HikariCP 和 Druid 的区别

类型 \ 种类HikariDruid
性能性能优异,通过异步和非阻塞的方式弱于 Hikari
功能功能简单功能丰富,支持动态调整,监控统计等
易用性配置简单,兼容性强配置较多,可扩展
资源消耗资源消耗低略高于 Hikari
稳定性略低于 Druid较高,具备自动检测和修复连接的功能,减少因数据库连接
异常而导致的应用程序崩溃
安全性低于 Druid较高,支持防御 SQL 注入攻击、密码加密等安全特性,保障
数据库访问的安全性
实战应用选择专注于性能,适合需要高效数据库连接池的项目
且希望最小化资源消耗和最大化吞吐量
需要详细的监控和统计功能,以便进行性能调优和故障排查
适用于对数据库管理分析功能的企业级应用

二、Hikari 连接池特点

HikariCP 是一个高性能的 Java 数据库连接池,它专注于提供极低的延迟和最高的吞吐量。

主要特点:

‌1、高性能‌:通过异步和非阻塞的方式,以及多种性能优化技术,实现卓越的连接获取和释放性能。
2、轻量级‌:代码库非常小,不依赖大量外部库,适合资源受限的环境和快速启动的应用程序。
‌3、自动化管理‌:能够自动管理连接的创建、验证、超时处理和关闭等操作,减少开发人员的负担。
4、配置灵活‌:提供丰富的可配置选项,如最大连接数、最小空闲连接数等,支持动态调整。
‌5、兼容性‌:与大多数主流的 JDBC 框架和数据库引擎兼容,无缝集成于 Spring 框架、Hibernate、MyBatis 等。

三、Druid 连接池特点

Druid 连接池是阿里巴巴开源的一个高效数据库连接池组件,主要用于管理和重用数据库连接。

主要特点:

‌1、高性能‌:采用预编译语句缓存、连接池复用等优化策略,提高数据库访问性能。
‌2、可靠性‌:具备自动检测和修复连接的功能,减少因数据库连接异常而导致的应用程序崩溃。
‌3、可扩展性‌:支持动态调整连接池大小、监控和统计等功能,可以根据应用程序的需求进行灵活配置和扩展。
‌4、监控与统计‌:内置丰富的监控和统计功能,实时查看连接池的使用情况、SQL 执行情况等,方便性能调优和故障排查。
‌5、安全性‌:支持防御 SQL 注入攻击、密码加密等安全特性,保障数据库访问的安全性。

四、spring boot 整合 HikariCP

    1、导入依赖

		<!-- HikariCP -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.4.5</version>
        </dependency>

     2、yml 配置

# Spring配置
spring:
  # 数据源
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/product?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&autoReconnect=true
    username: root
    password: 123456
    hikari:
      connection-timeout: 30000               # 等待连接池分配连接的最大时间(毫秒),超过这个时长还没有可用的连接,则会抛出SQLException
      minimum-idle: 5                         # 最小连接数
      maximum-pool-size: 20                   # 最大连接数
      auto-commit: true                       # 自动提交
      idle-timeout: 600000                    # 连接超时的最大时长,超时则会被释放(毫秒)
      pool-name: DataSourceHikariCP           # 连接池的名字
      max-lifetime: 3600000                   # 连接池的最大生命时长,超时则会被释放(毫秒)
      connection-test-query: SELECT 1

      
五、spring boot 整合 Druid

       1、导入依赖

        <!-- 阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

       2、yml 配置

# Spring配置
spring:
  # 数据源
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/product?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    druid:
      initial-size: 5		# 初始化连接池的连接数量
      min-idle: 5			# 最小空闲连接数
      max-active: 20		# 最大活跃连接数
      max-wait: 30000		# 获取连接等待超时的时间
      time-between-eviction-runs-millis: 60000		# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接(毫秒)
      min-evictable-idle-time-millis: 30000			# 配置一个连接在池中最小生存的时间(毫秒)
      validation-query: SELECT 1		# 验证连接的 SQL 查询
      test-while-idle: true				# 是否在空闲时检测连接
      test-on-borrow: true				# 是否在获取连接时检测连接
      test-on-return: false				# 是否在返回连接时检测连接
      pool-prepared-statements: true	# 是否缓存 preparedStatement
      max-pool-prepared-statement-per-connection-size: 20		# 每个连接的最大缓存 prepared statement 数量
      filters: stat,wall,log4j			# 配置监控统计拦截的 filters
      stat:					# 配置 stat 拦截器的属性
        merge-sql: true
        slow-sql-millis: 5000

详细整合请查看:
SpringBoot 整合 HikariCP 详解(Druid 同之)https://blog.csdn.net/qq_36402747/article/details/144111115