【资源说明】
基于C++实现多线程连接池MySQL源码+项目说明+详细代码注释.zip
C++ 调用 MYSQL API 连接池
## environment:
* VS2022
* MySQL8.0.27
## 高并发下频繁处理瓶颈
* 建立通信:`TCP三次握手`
* 数据库服务器的`连接认证`
* 服务器`关闭连接`的资源回收
* `断开`通信的TCP四次挥手
> 如果客户端和服务端`频繁`进行类似操纵,影响整个`开发效率`
## 数据库连接池
> 为了`提高`数据库(关系型数据库)的访问`瓶颈`,除在服务器端添加缓存服务器缓存常用的数据,还可添加连接池来提高服务器访问效率
连接池主要用于`网络服务器端`,用于同时接受`多个用户端`请求,数据库与数据库客户端采用`TCP通信`.
* 数据库客户端和服务端先建立起`多个连接`
* 多线程通过`套接字通信`取出连接池中的一个连接,然后和服务器直接进行通信,通信之后再将此连接`还给连接池`(减少数据库连接和断开的次数)
* 数据库连接池对应C++中的一个数据库连接对象,即`单例模式`
* 连接池中包括数据库服务器连接对应的IP,端口,用户,密码等信息
* 对数据库对象存入`STL`当中,需要设置最大值,最小值限制队列
* 多线程从连接池中取出数据库对象若有取出,`没有等待`调用算法
* 对 连接池中的数据库连接(空间时间长的即调度算法)进行`适当`断开连接
* 共享资源的访问,需要`互斥锁`(生产者消费者问题)
## 单例模式
* `懒汉模式`
> 当使用这个类的时候才创建它
> 创建对象时,加锁保证有且仅有一个
> (有线程安全问题)
* `饿汉模式`
> 不管用不用它,只要类被创建,这个实例就有
> 没有线程安全问题
【备注】
1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。
3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。
欢迎下载,沟通交流,互相学习,共同进步!