池化组件之连接池(mysql)

本文深入探讨了池化技术,特别是关注于数据库连接池的原理、优点和使用。介绍了连接池如何减少资源开销,提升系统响应速度,并防止资源泄露。文章还比较了使用连接池与未使用时的流程,区分了连接池与长连接,同时讨论了连接池与线程池的关系以及连接池的设计要点。最后,提供了一个简单的连接池代码设计思路。
摘要由CSDN通过智能技术生成

本文章介绍池化技术,连接池原理与实现
池化技术能够减少资源对象的创建次数,提高程序的相应性能,特别是在高并发下。常用于
1对象创建时间长
2 对象创建需要大量资源
3 对象创建后可重复使用

数据库连接池:

1 定义:程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态的对池中的连接进行申请,使用,释放。

2 优点:
1 资源复用:
避免了频繁的创建,释放连接引起的性能开销等
2 更快的系统响应速度:
程序启动时候,往往已经创建了若干连接至于池中,但连接到来时候,初始化已完成。对于业务请求处理而言,直接利用现有的可用连接,避免连接初始化和释放过程。
3 统一的连接管理,避免数据库连接泄露:
完善的连接池设计中,可根据预先的连接暂用超时设定,强制收回被占用连接。避免资源泄露。

3 使用连接池与未使用连接池流程对比:
未使用
1.TCP建⽴连接的三次握⼿(客户端与MySQL服务器的连接基于TCP协议)2.MySQL认证的三次握⼿
3.真正的SQL执⾏
4.MySQL的关闭
5.TCP的四次握⼿关闭

使用
程序启动时,需要创建连接和初始化连接等,后面请求就不用在建立连接等操作了
在这里插入图片描述
4 长连接和连接池的区别
连接池是应用服务器的组件,它可以通过参数来配置连接数,连接检查,连接生命周期等。

5 数据库连接池运行机制:
1 从连接池获取或创建可用连接(请求)
2 使用完毕后,把连接返回给连接池(归还)
3 系统关闭前,断开所有连接并释放连接占用的系统资源
具体流程:
在这里插入图片描述
6 连接池和线程池的关系
线程池:主动调用任务
连接池:被动被任务使用

连接池和线程池设置数量的关系:
a. 一般线程池线程数量和连接池连接对象数量一致
b. 一般线程执行任务完毕的时候归还连接对象

7 连接池设计要点:
使用连接池需要预先建立数据库连接
线程池设计思路:
1.连接到数据库,涉及到数据库ip、端⼝、⽤户名、密码、数据库名字等;
a.连接的操作,每个连接对象都是独⽴的连接通道,它们是独⽴的4数据 \n
b.配置最⼩连接数和最⼤连接数
2.需要⼀个队列管理他的连接,⽐如使⽤list;
3.获取连接对象:
4.归还连接对象

8 连接池连接设置数量
连接数=((核⼼数2)+有效磁盘数)按照这个公式,即是说你的服务器CPU是4核i7的,那连接池连接数⼤⼩应该为((42)+1)=9这⾥只是⼀个经验公式。还要和线程池数量以及具体业务结合在⼀起

连接池代码设计与实现

CDBConn连接类,CDBPool管理连接类(管理CDBConn);当然也可以添加一个Pool管理类(可能应用程序会有多个连接池)。

CDBConn连接类:

class CDBConn {
   
public:
	CDBConn(CDBPool* pDBPool);
	virtual ~CDBConn();<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰恒谷

你的鼓励是我最大创作动力!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值