刚刚毕业的本科生,在研究了公司的框架之后,自己花了三天的时间用C++实现了简单的数据库连接池,包括了Mysql。正在加入Redis的支持。请访问我的github:https://github.com/adairjun/DBPool
概述
所谓池的概念,就是一次性向系统申请多个资源并保存下来,等到程序需要向系统申请资源的时候,就直接向池当中去申请。相当于在执行程序和系统资源之间加了一层。
有高人云:“计算机科学领域的任何问题, 都可以通过添加一个中间层来解决”
那么这个池作为中间层解决了什么问题呢?
1,性能的提升:数据库连接是一种极耗系统资源的操作,尤其是在多层结构的应用环境中,这种资源的耗费对系统性能影响尤为明显。我实习的时候,部门经理告诉我,框架性能的压力大部分集中在数据库的IO上,这是在他review我的代码的时候说的,当时我写的数据库接口访问Mysql,本来可以一条SELECT语句查询出结果,再使用循环将结果写入到vector当中,但是我却是在循环当中使用了SELECT语句,导致了多次查询。经理告诉我相同功能的查询语句,由于打开关闭数据库连接的次数不同导致两个查询语句耗费的时间差别很大。
2,内存碎片(memory fragmentation)的问题,这个是对于内存池来说的。
3,线程池,减少线程创建的开销,而且在请求到达时候线程已经存在了,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。