跟我学Springboot开发后端管理系统4:数据库连接池Druid和HikariCP
上一篇文章主要讲解了如何再Matrix-Web中使用Mybatis-Plus,Mybatis-Plus作为Orm框架,连接数据库需要连接数据库的依赖。WEB 系统高并发环境下,频繁的进行数据库连接操作,造成系统技术瓶颈问题(无效的资源开销),通过为数据库连接为建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
数据库连接池有很多,比如c3p0、Druid、Hikari等。大家常用的连接池应该是阿里开源的Druid,Druid不仅是连接池,而且带有监控。在Matrix-Web中,选择的Druid作为数据库连接池。Hikari作为Spring Boot官方推荐的连接池,在这里也讲解一下。
在Spring Boot中使用Druid
Druid是阿里开发的一个数据库连接池,在国内比较的流行,具有以下的特性:
- 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
- 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
- SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
- 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
那么如何在Spring Boot项目中集成Durid呢?引入mysql-connector-java的依赖,版本为5.1.38,引入druid-spring-boot-starter,版本为1.1.10。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${durid.version}</version>
</dependency>
在工程的配置文件做以下的配置:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/druid
spring.datasource.username=root
spring.datasource.password=root
这样就在Spring Boot中整合了Durid连接池。
在Spring Boot中使用HikariCP
HikariCP是一个高性能的JDBC连接池,基于BoneCP做了不少的改进和优化。
从上述结果可以看出HikariCP的性能远高于c3p0、tomcat等连接池,以致后来BoneCP作者都放弃了维护,在Github项目主页推荐大家使用HikariCP。另外,Spring Boot将在2.0版本中把HikariCP作为其默认的JDBC连接池。
在Spring Boot中使用HikariCP连接池,在工程pom文件引入HikariCP依赖,版本为3.3.1。
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${HikariCP.version}</version>
</dependency>
然后在工程的配置文件,加上以下配置:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/druid
spring.datasource.username=root
spring.datasource.password=root
总结
本篇文章主要讲解了在SrpingBoot使用数据库连接池,包括Durid和HikariCP。在Matrix-Web中,这两种数据库连接池都是支持的。下篇文章将讲解数据库的读写分离。
参考资料
https://segmentfault.com/q/1010000007865307/a-1020000007871768
http://zongming.net/read-1373
https://www.jianshu.com/p/dd0c2b0ed202
源码下载
https://github.com/forezp/matrix-web
相关文章
- 浅谈kafka
- MySQL学习笔记-事务
- EntityFramworkCore7笔记 -- EFCore
- YOLOv5训练速度慢的一些解决方法
- 【Pytorch】model.train() 和 model.eval() 原理与用法
- 天机-免费的新一代数据安全网关
- 明解数据库------数据库存储演变史
- 使用PostgreSQL而不是MySQL存储中型数据有什么好处?
- 【yolov8】从0开始搭建部署YOLOv8,环境安装+推理+自定义数据集搭建与训练,一小时掌握
- 目标检测,使用最新的yolov7训练自己的数据集,从零开始的手把手教程
- 从“13 天”到“0 天”延时,揭秘火山引擎 DataLeap SLA 保障最佳实践
- Python-sqlparse解析SQL工具库一文详解(一)
- 数学建模--评价类模型
- 对LSTM应用于图像的初步理解
- DTALK直播预约 | 深度解析大资管行业数字化转型
- 【数据处理】Pandas读取CSV文件示例及常用方法(入门)
- kafka常用指令
- 怎么处理消息重发的问题?
- 【yolov5】数据格式、参数、输出结果 分析
- 遥感高光谱图像分类数据集总结