c mysql连接池_C++线程池与mysql连接池的设计与实现

为什么需要数据库连接池:

不使用连接池的情况下执行一条sql语句需要进行以下操作:

1.TCP三次握手;

2.MYSQL认证的三次握手;

3.真正执行SQL;

4.MYSQL的关闭;

5.TCP的四次挥手;

可以看到,为了执行一条SQL,多了非常多我们不关心的网络交互。

使用连接池,多次执行SQL,只需要一次连接的建立和释放,省去了多次连接的建立和释放的开销。

连接池运行机制:

1.从连接池创建或者获取可使用连接;2.使用完毕之后将连接返回给连接池;3.系统关闭前,断开所有连接并释放连接占用的系统资源。

创建连接池 为什么需要连接池名字:

可以创建多个连接池,分别处理不同的数据库。

代码架构分析:分为以下几个部分:

1,操作mysql数据库的API封装类(DBConn);

2,insert前数据的封装操作类(Preparement);

3,select后数据处理封装类(ResultSet);

4,表结构封装类(TableOperator);

5 ,连接池的封装类(DBPool);

6,线程池的封装类(ThreadPool);

7,多线程下锁与信号量的封装类(ThreadNotify);

8,一些配置信息(config);

功能:对比多线程下使用连接池与不使用连接池对数据库相同的操作所花费的时间;

创建线程池,等待队列不为空;队列不为空:从队列中取出数据,从连接池中获取连接(无连接可用,进行等待),处理操作(回调函数处理插入操作),完毕后将连接放回连接池;队列数据处理完毕,发送队列为空信号

添加任务(N次对数据库的插入操作)到队列中,发送队列不为空信号;

销毁线程池,连接池:等待队列为空信号,释放线程池资源,连接池资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值