【MYSQL】数据库连接池技术

为什么需要连接池

   在数据库客户端经过网络与数据库服务端连接时候,需要经历TCP协议的三只握手这个耗时的过程,每次查询一次连接上,返回数据即断开连接,下次再次查询又得重复刚刚的操作,基本步骤是:客户端发起连接请求 → 数据传输 → 关闭连接。每一次这样的连接叫做短连接,而且连接的成本很高,在网络拥塞的情况下会更加耗时。

       当并发量很低的时候,连接可以临时建立,但当服务吞吐达到几百、几千的时候,频繁 建立连接 Connect销毁连接 Close 就有可能会成为MYsql服务器的一个瓶颈,那么当MYsql服务器启动的时候,先建立好若干个连接并存放于一个队列中,当需要使用时从队列中取出一个并使用,使用完后再反还到队列去,而对这个队列数据结构进行维护的,就是连接池。

 

成熟的开源连接池项目

  1. Apache commons-dbcp 连接池

    下载:DBCP - Overview

      2. HikariCP

     项目地址:https://github.com/brettwooldridge/HikariCP

    HikariCP是日本开源的一个数据库连接池组件,代码非常轻量,并且速度非常的快。根据官方提供的数据,在i7,开启32个线程32个连接的情况下,进行随机数据库读写操作,HikariCP的速度是现在常用的C3P0数据库连接池的数百倍。

   

 

    HikariCP的高性能   

    1. 字节码更加精简,所以可以加载更多代码到缓存。

    2. 实现了一个无锁的集合类型,来减少并发造成的资源竞争。

    3. 使用了自定义的数组类型,相对与ArrayList极大地提升了性能。

    4. 针对CPU的时间片算法进行优化,尽可能在一个时间片里面完成各种操作。

      3. Druid

   项目地址:https://github.com/alibaba/druid

posted @ 2019-07-19 09:23  songguojun  阅读(272)  评论(0编辑  收藏  举报