连接池的作用及原理详解(附3大常见连接池)

连接池的作用及原理详解(附3大常见连接池)-mikechen

什么是连接池

连接池,英文名(Connection Pool),是创建和管理一个连接的缓冲池的技术。

 

连接池的作用

这里我就以数据库的连接池的来举例说明:

一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接。

创建和释放数据库连接是一个很耗时的操作,频繁地进行这样的操作将占用大量的性能开销,进而导致网站的响应速度下降,严重的时候可能导致服务器崩溃。

数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池。

简单说:在一个“池”里放了好多半成品的数据库联接对象,避免频繁的创建连接。

连接池的主要优点与作用体现如下三个方面:

连接池的作用及原理详解(附3大常见连接池)-mikechen

第一、减少连接创建时间

连接池中的连接是已准备好的、可重复使用的,获取后可以直接访问数据库,因此减少了连接创建的次数和时间。

第二、简化的编程模式

当使用连接池时,每一个单独的线程能够像创建一个自己的JDBC连接一样操作,允许用户直接使用JDBC编程技术。

第三、控制资源的使用

如果不使用连接池,每次访问数据库都需要创建一个连接,这样系统的稳定性受系统连接需求影响很大,很容易产生资源浪费和高负载异常。

连接池能够使性能最大化,将资源利用控制在一定的水平之下。连接池能控制池中的连接数量,增强了系统在大量用户应用时的稳定性。

 

有哪些连接池?

常见的有数据库连接池、缓存连接池、服务连接池,如下图所示:

1.数据库连接池

连接池的作用及原理详解(附3大常见连接池)-mikechen

2.缓存连接池

连接池的作用及原理详解(附3大常见连接池)-mikechen

3.服务连接池

连接池的作用及原理详解(附3大常见连接池)-mikechen

 

连接池的原理

连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中。

当用户需要访问数 据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象,使用完毕后是将连接放回连接池中,以供下一个请求访问使用。

而连接的建立、断开都由连 接池自身来管理,同时还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数 以及每个连接的最大使用次数、最大空闲时间等等,也可以通过其自身的管理机制来监视数据库连接的 数量、使用情况等。

连接池的作用及原理详解(附3大常见连接池)-mikechen

数据库连接池的主要操作如下六个步骤:

(1)建立数据库连接池对象(服务器启动)。

(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。

(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果 数据库连接 池 对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。

(4)存取数据库。

(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。

(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法