功能
为了提高MySQL数据库(基于C/S设计)的访问瓶颈,除了在服务端添加缓存服务器缓存常见的数据之外(例如redis),还可以增加连接池来提高SQL的访问效率,在高并发情况下,大量的TCP 三次握手、MySQL Server连接认证、MySQL Server关闭连接回收资源和TCP四次挥手所带来的消耗十分明显,连接池的主要功能就是优化这些性能损耗。
技术工具
MySQL数据库编程、线程安全的懒汉单例模式、queue、C++11多线程编程、线程互斥、线程同步通信、生产者-消费者模型、基于CAS的原子整形、智能指针shared_ptr、lambda表达式等。
主要函数以及功能
ConnectionPool.cpp和ConnectionPool.h:连接池代码实现
Connection.cpp和Connection.h:数据库操作代码、增删改查代码实现
ConnectionPool.h中定义了初始连接量、最大连接量、最大空闲时间、连接超时时间、连接池中连接的数量、以及数据库的配置信息(Mysql的IP地址、端口号等)
数据量 | 未用连接池时间 | 使用连接池时间 |
---|---|---|
1000 | 单线程:70674 四线程: | 单线程:56825 四线程:29991 |
5000 | 单线程:338798 | |
10000 | 单线程: |