高性能数据库连接池的内幕

Posted 中生代技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能数据库连接池的内幕相关的知识,希望对你有一定的参考价值。

中生代技术群分享第三十一期

讲师:何涛

编辑:友强

注:完美修订版


摘要: 如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓。

   

何涛        

唯品会平台架构师        

何涛,现任职于唯品会平台架构部,要负责数据访问层,网关,数据库中间件,平台框架等开发设计工作。在数据库性能优化,架构设计等方面有着大量的经验积累。热衷于高可用,高并发及高性能的架构研究。

大家可能会有这样疑问:连接池类似于线程池或者对象池,就是一个放连接的池子,使用的时候从里面拿一个,用完了再归还,功能非常简单,有什么可讲的。

可能还会有这样的疑问:高性能这么高大上,一个小小的连接池,如何跟高大上靠上边的。

 

本主题将会全面介绍连接池原理,高性能的设计,优化实践,现有连接池的瓶颈及解决方案。同时也会介绍唯品会自研数据库连接池产品(代号:Caelus)

 

为什么要有连接池

先看一下连接池所处的位置:

应用框架的业务实现一般都会访问数据库,缓存或者HTTP服务。为什么要在访问的地方加上一个连接池呢?


下面以访问mysql为例,执行一个SQL命令,如果不使用连接池,需要经过哪些流程。

1:TCP建立连接的三次握手

2:MySQL认证的三次握手

3:真正的SQL执行

4:MySQL的关闭

5:TCP的四次握手关闭

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


优点:实现简单。


缺点:

    1:网络IO较多

    2:数据库的负载较高

&n

以上是关于高性能数据库连接池的内幕的主要内容,如果未能解决你的问题,请参考以下文章

如何查看连接池的使用情况

MySQL自定义数据库连接池和开源数据库连接池的使用

linux下数据库连接池的原理及编程实现

java---连接池的学习

稳稳的掌握“数据库连接池

java数据库连接池的介绍与定义一个简单的连接池