VS2017+Mysql数据库编程实现连接池(C++)
准备工具:
vs2017+mysql
技术点:
MySQL数据库编程、单例模式、queue队列容器、c++11多线程编程、线程互斥、线程同步通信和unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型
背景知识:
MySQL是基于C/S的数据库管理系统(DBMS),当客户机向服务器发出请求对数据库进行操作时,若短时间内请求数量较多(高并发),客户端与服务器通信要进行大量的TCP三次握手、MySQL Server连接认证、MySQL Sever关闭连接回收资源和TCP四次挥手等操作所耗费的时间也是非常明显的。连接池的目的就是减少这一部分的性能损失。连接池会事先和MySQL Sever创建初始的一定量连接,当应用发起MySQL访问时,就不需要再创建新的连接,直接获取可用连接即可。使用完成后,不释放与MySQl Sever所创建的这个连接,而是归还到连接池中。
连接池功能:
连接池一般包含了数据库连接所用的ip地址,port端口号,用户名、密码以及其它的参数性能,比如初始连接量,最大连接量,最大空闲时间,连接超时时间等。本文也主要对以下四个功能进行实现
初始连接量:连接池事先与MySQL Se