java 连接池 HikariCP(Hikari)和 Druid 的区别与 SpringBoot 整合_hikaricp druid
本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net
目录
一、HikariCP 和 Druid 的区别
类型 \ 种类 | Hikari | Druid |
---|---|---|
性能 | 性能优异,通过异步和非阻塞的方式 | 弱于 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