网站首页 > 博客文章 正文
数据库连接池的意义是什么?
对于数据库连接对象来说,每次创建连接都需要数据库服务端创建专门的资源来应对,如果对于数据库的请求量较少的话,数据库服务端还能撑得住,但是请求量很大时,数据库服务端将会频繁创建关闭数据库连接,频繁创建关闭连接不仅会花费较长的时间,而且还很容易导致数据库服务端停止服务。
所以,在实际的生产中,项目的数据库连接基本都使用连接池的方式。
数据库连接池的工作逻辑是什么?
在项目启动时,先创建数据库连接对象,创建好以后,将该连接对象放到对象池容器中,对象池容器通常是由集合来实现。
此时当程序要连接数据库的时候,就不再直接操作数据库服务端,而是从对象池中取出来一个空闲的数据库连接对象进行操作,操作完之后再将该连接对象交还给对象池容器,这样就不用频繁创建关闭数据库连接。
常用的数据库连接池有哪些?
目前,常用的数据库连接池有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
你 发表评论:
欢迎- 368℃用AI Agent治理微服务的复杂性问题|QCon
- 367℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 359℃初次使用IntelliJ IDEA新建Maven项目
- 352℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 347℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 343℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- 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)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)