Skip to content

KJJD77/MyConnectionPool

Repository files navigation

MyConnectionPool

项目简介

MyConnectionPool 是一个基于 C++ 实现的高效数据库连接池,旨在优化多线程环境下的数据库连接性能。通过复用数据库连接,减少了频繁创建和销毁连接的开销,从而显著提升了系统的吞吐量和响应速度。


功能实现设计

  • ConnectionPool.cpp 和 ConnectionPool.h:实现了连接池的核心逻辑,包括连接的创建、复用和回收。
  • Connection.cpp 和 Connection.h:封装了数据库操作的接口,支持增删改查操作。

性能对比

数据量 未使用连接池花费时间 使用连接池花费时间
1000 单线程:1037 ms 四线程:615 ms 单线程:722 ms 四线程:344 ms
5000 单线程:4697 ms 四线程:2450 ms 单线程:3226 ms 四线程:1567 ms
10000 单线程:8865 ms 四线程:5560 ms 单线程:6292 ms 四线程:3105 ms

环境要求

  • 操作系统:Ubuntu 20.4
  • 编译器:支持 C++11 或更高版本的编译器(如 g++
  • 数据库:MySQL
  • 必要库:
    • mysqlclient(MySQL C API)
    • pthread(POSIX 线程库)

构建与运行

git clone https://github.com/your-repo/MyConnectionPool.git
cd MyConnectionPool
mkdir build
cd build
cmake ..
make
./MyConnectionPool

项目特点

  • 高效的连接复用:通过连接池管理数据库连接,避免频繁创建和销毁连接。
  • 线程安全:使用 std::mutex 和条件变量确保多线程环境下的安全性。
  • 可扩展性:支持动态调整连接池大小,适应不同的负载需求。
  • 性能优化:通过多线程测试验证了连接池的性能优势。

About

C++在linux操作系统下实现的MySql连接池

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published