
项目报告
数据库连接池的研究与实现
在基于 JDBC 的数据库实际应用开发中,对数据库连接的管理是一个重点也
是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一
定程度上决定了 WEB 系统的响应以及应用性能。使用数据库连接池方式能对数据
库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提
升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本
原理,了解目前流行的 WEB 服务器在数据库连接池方面的使用现状后,总结了一
些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键
技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开
发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相
对高效和容易,从实际上论证了这种设计方案的可行性。
连接池;数据库;JDBC;并发访问

Research and implementation of the
Database Connection Pool
Abstract
In the practically application development of database based on JDBC, the
management of database connection is a key point and also a difficulty. The response
and performance of the WEB system are depended on frequently connecting, closing
and multi-user accessing in a certain extent. Using the Database Connection Pool can
provide management and maintenance for connections of the database. The upper
applications may access the database recourse via the Database Connection Pool, in
order to upgrade system performance and fully utilize the system recourse. This
article summarizes some issues which are easily ignored in the application
development of the Database Connection Pool by the way of introducing, analyzing
the basal theory of the Database Connection Pool and comprehending the using
situation of the Database Connection Pool on the popular WEB servers. Besides, I
established a comparatively highly effective policy of the Connection Pool
management after having learned and comprehended key technique of implementing
the Connectivity Pool, and actually had developed a Database Connection Pool
module under the guidance of that policy, causing the access of system resource by
the upper applications via current Connectivity Pool becoming relatively highly
effective and easy, demonstrated the feasibility of this design project in practice.
Key words: Database Connection Pool; Database; JDBC; Concurrence access

目 录
论文总页数:22 页
1 引言 ...........................................................................................................................................1
1.1 课题背景 ..................................................................................................................................1
1.2 连接池的主要作用 ..................................................................................................................1
1.3 目前流行的 WEB 服务器数据库连接池方面使用现状 .........................................................1
1.3.1 DHCP 介绍.........................................................................................................................2
1.3.2 Poolman 介绍...................................................................................................................2
1.3.3 C3P0 介绍.........................................................................................................................2
1.3.4 其他连接池(自写连接池)..........................................................................................2
2 相关理论基础 ...........................................................................................................................3
2.1 数据库概述 ..............................................................................................................................3
2.2 数据库连接池的基本原理 ......................................................................................................3
2.3 连接池中的关键技术 ..............................................................................................................4
2.3.1 连接池的分配与释放......................................................................................................4
2.3.2 连接池的维护..................................................................................................................5
3 系统总体设计思想及方案 .......................................................................................................5
3.1 连接池中的关键类设计 ..........................................................................................................6
3.2 连接池中的管理机制 ..............................................................................................................7
3.3 实现一个连接池的其他问题 ..................................................................................................8
3.3.1 事务处理..........................................................................................................................8
3.3.2 封装..................................................................................................................................9
3.3.3 并发..................................................................................................................................9
3.3.4 连接池的关闭..................................................................................................................9
4 具体的设计流程和实现 .........................................................................................................10
4.1 连接池的建立 ........................................................................................................................10
4.2 连接池的管理 ........................................................................................................................12
4.3 连接池的关闭 ........................................................................................................................14
4.4 连接池的测试 ........................................................................................................................15
5 系统测试问题总结 .................................................................................................................15
5.1 连接池的泄露问题 ................................................................................................................15
5.1.1 产生现象........................................................................................................................15
5.1.2 解决办法........................................................................................................................16
5.2 多数据库服务器问题 ............................................................................................................17

结 论 .........................................................................................................................................19
参考文献 .........................................................................................................................................20
致 谢 .........................................................................................................................................21
声 明 .........................................................................................................................................22

第 1 页 共 22 页
1 引言
1.1 课题背景
随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置
越来越重要。传统的开发模式是:首先在主程序(如 Servlet、Beans)中建立数
据库连接;然后进行 SQL 操作,对数据库中的对象进行查询、修改和删除等;
最后断开数据库连接。使用这种开发模式,对于一个简单的数据库应用,由于数
据库的访问不是很频繁,只需要在访问数据库时创建一个连接,用完后就关闭它,
这样做不会明显增大系统的开销。但是对于一个复杂的数据库应用,情况就完全
不同了,尤其是大型电子商务网站,同时可能有几百人甚至几千人在线。在这种
情况下,用户操作频繁的建立、关闭数据库,会极大的降低系统的性能,增大系
统的开销,迫使网站的响应速度下降,严重的甚至会造成服务器的崩溃。针对这
些突出问题,采用运行速度更快、数据库访问效率更高的数据库连接池技术,以
提高系统的运行效率将是至关重要的,因此本文提出了一种基于数据库连接池技
术的有效解决方法。以加强对数据库操作的性能,改善资源使用率,提高应用程
序的响应能力。
1.2 连接池的主要作用
一个应用系统,同时有几百人甚至几千人频繁的进行数据库连接操作势必占
用很多的系统资源,严重的甚至会造成服务器的崩溃。对于每一次数据库连接,
使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统
中的内存泄漏,最终将不得不重启数据库。还有,如果不能控制被创建的连接对
象数,系统资源会被毫无顾及的分配出去,连接过多也可能导致内存泄漏,服务
器崩溃。针对这些突出问题,因此提出了一种基于数据库连接池技术的有效解决
方法。简而言之,数据库连接池主要作用是负责分配、管理和释放数据库连接,
它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放
空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引
起的数据库连接遗漏。
1.3 目前流行的 web 服务器数据库连接池方面使用现状
由于 JDBC 的 API 中没有提供连接池的方法。一些大型的 WEB 应用服务器如
WebLogic、WebSphere 等都自带有连接池。不同的是,tomcat 并没有自已开发连
接池,而是集成的 apache 的另外一个开源项目 DBCP 连接池。BEA 的 WebLogic
自身带有一个连接池,这个连接池无法与 WebLogic 分离,但是也必须有其第三
方的专用类方法支持连接池的用法,而不需要用户再去写一个连接池。以下是一
些第三方连接池: