网站首页 > 博客文章 正文
数据库连接池的意义是什么?
对于数据库连接对象来说,每次创建连接都需要数据库服务端创建专门的资源来应对,如果对于数据库的请求量较少的话,数据库服务端还能撑得住,但是请求量很大时,数据库服务端将会频繁创建关闭数据库连接,频繁创建关闭连接不仅会花费较长的时间,而且还很容易导致数据库服务端停止服务。
所以,在实际的生产中,项目的数据库连接基本都使用连接池的方式。
数据库连接池的工作逻辑是什么?
在项目启动时,先创建数据库连接对象,创建好以后,将该连接对象放到对象池容器中,对象池容器通常是由集合来实现。
此时当程序要连接数据库的时候,就不再直接操作数据库服务端,而是从对象池中取出来一个空闲的数据库连接对象进行操作,操作完之后再将该连接对象交还给对象池容器,这样就不用频繁创建关闭数据库连接。
常用的数据库连接池有哪些?
目前,常用的数据库连接池有dbcp、druid、HikariCP等等。
其中,druid是由阿里巴巴计算平台事业部出品,它是为监控而生的数据库连接池。
今天,就教大家如何在springboot项目中使用druid连接池。
springboot中使用druid连接池
springboot版本:2.3.0;
druid版本:1.1.22;
1 创建springboot项目
如果不会创建springboot项目,请参见我前面的文章:「springboot」开始我的第一个springboot程序
2 引入mybatis框架
在pom.xml文件中添加依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
注意:如果创建springboot项目时已经选择了mybatis,就不用添加上面的依赖
3 引入druid框架
在pom.xml文件中添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
4 新建application-dev.yml并在其中添加druid配置
spring:
datasource:
druid:
username: root
password: password
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
注意:
1,username、password、url、driver-class-name请换成自己数据库的信息;
2,请保证resource文件夹下有appilcation.yml文件,如果没有请创建,并在其中添加如下配置
spring:
profiles:
active: dev
5 启动项目验证
可以看到,druid连接池已经成功的引入项目!
后记
本次阐述了数据库连接池的意义并且讲解了在springboot中如何引入druid连接池,需要注意的是,本教程仅仅是在项目中引入了druid连接池,并没有使用druid连接池提供的高级特性比如sql监控等。
高级功能将会在接下来的教程中持续更新,关注我之后将会第一时间看到后续文章!
猜你喜欢
- 2024-10-17 SpringBoot+Vue3+MySQL集群 开发健康体检双系统(完结)
- 2024-10-17 再有人问你数据库连接池的原理,这篇文章甩给他!
- 2024-10-17 详解Spring Boot并发处理能力:理论与参数设置实践
- 2024-10-17 谈谈高并发系统的一些解决方案(高并发系统设计的三大目标)
- 2024-10-17 微服务事务管理艺术:Spring Boot 集成 Seata 深度指南
- 2024-10-17 阿里巴巴开源数据库jdbc连接池 Druid 1.1.18 发布
- 2024-10-17 【架构之路】提升后端接口性能的实战技巧
- 2024-10-17 「解密」有人要将“高并发”拉下“神坛”!
- 2024-10-17 MySQL连接优化是数据库性能调优的重要一环
- 2024-10-17 SpringBoot中使用Spring Data JPA
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)