一.数据库连接池的必要性
(一).传统数据库连接模式的的步骤
1.在主程序中创建连接
2025年07月18日
工作中发现,spring开启事务当竟然会阻塞线程,当开启事务的并行线程数大于数据库连接池的最大连接数时就会出现这种情况。上demo!!!
2025年07月18日
在SpringBoot 2.x项目中,默认使用Hikari连接池管理数据源。相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加优秀。
2025年07月18日
数据源连接池的原理及Tomcat中的应用
在Java Web开发过程中,会广泛使用到 数据源 。
我们基本的使用方式,是通过Spring使用类似如下的配置,来声明一个数据源:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
2025年07月18日
- 前言 -
【2w1h】是技术领域中一种非常有效的思考和学习方式,即What、Why和How;坚持【2w1h】,可以快速提升我们的深度思考能力。
2025年07月18日
ZQPool是 中启乘数科技 发布的PostgreSQL数据的开源连接池软件。是一个可以替代 pgbouncer 的连接池软件 ,在 ZQPool 1.1 版本中主要做了以下改进:
2025年07月18日
开始本文之前,我们看一段Go连接数据库的代码:
//openDB()函数返回一个sql.DB连接池。
func openDB() (*sql.DB, error) {
//使用sql.Open()创建一个空连接池
db, err := sql.Open("postgres", "postgres://username:password@localhost/db_name")
if err != nil {
return nil, err
}
//创建一个具有5秒超时期限的上下文。
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
//使用PingContext()建立到数据库的新连接,并传入上下文信息,连接超时就返回
err = db.PingContext(ctx)
if err != nil {
return nil, err
}
// 返回sql.DB连接池
return db, nil
}
2025年07月18日
连接池的本质是构建一个容器,容器是用来存创建好的线程,http连接、数据库连接、netty连接等
各个连接池的使用大致分为三个部分
1、首先是初始化连接池,根据设置相应的参数、连接池的大小、核心连接数等参数,初始化创建数据库、http连接、netty连接以及jdk线程等。
2、第二步是连接池的使用,直接从连接池中、线程中取出资源即可使用,使用完后交还给连接池、线程池,通过池容器对线程进行管理。
3、对于连接池维护,连接池、线程池来维护连接、线程状态,不可用连接、线程进行销毁,正在使用连接、线程进行状态标注,连接、线程不够后并且少于设置最大连接、线程数,要进行新连接、线程创建。