Mysql连接池详解——实现部分

上篇文章Mysql连接池详解——原理部分,我们聊了连接池的原理,这篇文章我们来聊聊连接池的设计与具体实现。

一、连接池接口要点

使用连接池要预先与数据库建立连接。

  1. 连接到数据库,需要目标数据库所在主机的IP、端口、用户名、密码及想要访问的数据库名。
  2. 设置最小和最大连接数
  3. 需要一个容器管理这些连接,比如:List或者Set;
  4. 获取一条数据库连接
  5. 归还连接;
  6. 销毁连接池

二、连接池的设计逻辑

2.1 连接池类:CMysqlDBPool

在这里插入图片描述

2.2 连接池初始化逻辑

在这里插入图片描述

2.3 连接池获取连接逻辑

在这里插入图片描述

2.4 归还连接逻辑

在这里插入图片描述

2.5 连接池析构(销毁)逻辑

在这里插入图片描述

三、参考代码实现

MysqlDBPool.h


//
// Create by Panda 2022-09-17
//

#ifndef MYSQL_DB_POOL_H_
#define MYSQL_DB_POOL_H_

#include <iostream>
#include <string>
#include <list>

#include <mutex>
#include <condition_variable>

#include <mysql.h>

using namespace std;

#define MIN_CONN_COUNTS 2

class CMysqlDBPool;

class CDBConn{
   
public:
    CDBConn(){
   }
    CDBConn(CMysqlDBPool* pool);

    virtual ~CMysqlDBPool();

    void Init();

    // TODO Mysql 接口实现
    
private:
    CMysqlDBPool* m_dbPool; //用于连接建立时获取数据库信息
    MYSQL* m_mysql;  //该条连接的唯一标识
}

class CMysqlDBPool{
    // 只是负责管理连接,真正干活的是CDBConn
public:
    CMysqlDBPool(){
   }
    CMysqlDBPool(const char* pool_name, const char* db_ip, u_int16_t db_port, 
                const char* db_user, const char* db_pwd, const char* db_Name, uint32_t maxConnNum);
    virtual ~CMysqlDBPool();

    void Init_db_pool();

    CDBConn* GetDBConn(const int time_out = 0); //获取数据库连接, ms

    void Returnconn(CDBConn* pConn
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值