什么是连接池,其工作原理是什么?

连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。 连接池的主要优点有以下三个方面。

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

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

第三、控制资源的使用。如果不使用连接池,每次访问数据库都需要创建一个连接,这样系统的稳定性受系统连接需求影响很大,很容易产生资源浪费和高负载异常。连接池能够使性能最大化,将资源利用控制在一定的水平之下。连接池能控制池中的连接数量,增强了系统在大量用户应用时的稳定性。

下面,简单的阐述下连接池的工作原理。

连接池技术的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用、分配和管理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。

连接池的工作原理主要由三部分组成,分别为连接池的建立、连接池中连接的使用管理、连接池的关闭。

第一、连接池的建立。一般在系统初始化时,连接池会根据系统配置建立,并在池中创建了几个连接对象,以便使用时能从连接池中获取。连接池中的连接不能随意创建和关闭,这样避免了连接随意建立和关闭造成的系统开销。Java中提供了很多容器类可以方便的构建连接池,例如Vector、Stack等。

第二、连接池的管理。连接池管理策略是连接池机制的核心,连接池内连接的分配和释放对系统的性能有很大的影响。其管理策略是:

当客户请求数据库连接时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用;如果没有空闲连接,则查看当前所开的连接数是否已经达到最大连接数,如果没达到就重新创建一个连接给请求的客户;如果达到就按设定的最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户。 当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就从连接池中删除该连接,否则保留为其他客户服务。

该策略保证了数据库连接的有效复用,避免频繁的建立、释放连接所带来的系统资源开销。

第三、连接池的关闭。当应用程序退出时,关闭连接池中所有的连接,释放连接池相关的资源,该过程正好与创建相反。

参考:[http://blog.csdn.net/abcd0000/article/details/6803694](http://blog.csdn.net/abcd0000/article/details/6803694)

时间: 2024-10-26 16:31:59

什么是连接池,其工作原理是什么?的相关文章

多线程之:模拟实现线程池的工作原理

[一]线程池存在的价值: ==>多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.    ==>假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间. ==>如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能.   [二]合理利用线程池能够带来三个好处.  * 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. * 第二:提高响应

HttpClient连接池原理及一次连接时序图

1.       httpClient介绍 HttpClient是一个实现了http协议的开源Java客户端工具库,可以通过程序发送http请求.   1.1.  HttpClient发送请求和接收响应 1.1.1.      代码示例 以Get请求为例,以下代码获得google主页内容并将返回结果打印出来. public final static void main(String[] args) throws Exception {           HttpClient httpclien

详细解析路由器工作原理

路由器工作原理概述在控制平面上, 路由协议可以有不同的类型.路由器工作原理通过路由协议交换网络的 拓扑结构信息,依照拓扑结构动态生成路由表.在数据通道上,转发引擎从输入线路接收IP包 后,分析与修改包头,使用转发表查找输出端口,把数据交换到输出线路上.转发表是根据路由表生成的,其表项和路由表项有直接对应关系,但转发表的格式和路 由表的格式不同,它更适合实现快速查找.转发的主要流程包括线路输入.包头分析.数据存储.包头修改和线路输出.路由协议根据网 络拓扑结构动态生成路由表.IP协议把整个网络划分

数据库连接池和Tomcat连接池的配置问题

          在做系统优化的时候师哥给我们提了一个连接池的概念,问我们有没有配置,我对这个概念一无所知,于是进行了一些研究,连接池有很多,比如WCF.EF还有数据库.CAS也可以配连接池,这些连接池用通俗的语言来说就是一个池子,池子里的资源可以收放自如,不用的时候可以立即收回,和我们通常用到USing的作用有些相似,就是可以自动的释放connection资源.         数据库中连接池的配置如下:         <span style="font-size:14px;&quo

【最近面试遇到的一些问题】数据库连接池的优点和原理,常用的java开源连接池组件

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的.数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 影响因素 数据库连接池在初始化时将创建一定数量的数据

Dynamic ARP Inspection(DAI)工作原理及测试

一.工作原理: A.根据DHCP Snooping或手工方式形成的MAC地址与IP地址绑定表,来确定网络中的非法接入的MAC地址 B.同时为了防止恶意ARP欺骗,还可以对接口的arp请求包进行限速 ---测试发现,对于非信任口的arp请求和回复(包括无理arp)都会被丢弃,因此觉得在非信任端口做限速没有多大必要(没有手工修改DHCP绑定表,或用arp access-list做排除的情况) 参考链接:http://wenku.baidu.com/view/cda2e815c5da50e2534d7

一种简单JDBC连接池的实现(二)

3.简单JDBC连接池的实现 根据第二章中原理机制,Snap-ConnectionPool(一种简单快速的连接池工具)按照部分的JDBC规范,实现了连接池所具备的对数据库资源有效管理功能. 3.1体系描述 在JDBC规范中,应用通过驱动接口(Driver Interface)直接方法数据库的资源.为了有效.合理地管理资源,在应用与JDBC Driver之间,增加了连接池: Snap-ConnectionPool.并且通过面向对象的机制,使连接池的大部分操作是透明的.参见下图,Snap-Conne

Nginx工作原理和优化、漏洞(转)

查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/opt/xcache/nginx --with-ipv6 --with-http_ssl_module --w

jetty的工作原理以及与tomcat 的比较

Jetty 的基本架构 Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler. Jetty 的基本架构 下图是 Jetty 的基本架构图,整个 Jetty 的核心组件由 Server 和 Connector 两个组件构成,整个 Server 组件是基于 H