数据库连接池的研究与实现 JDBC
来源:56doc.com 资料编号:5D768 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9A5D768
资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用. 密 保 惠 帮助
资料介绍
摘 要 在基于JDBC的数据库实际应用开发中,对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在数据库连接池方面的使用现状后,总结一了些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了这种设计方案的可行性。(毕业设计网 )
关键词:连接池;数据库;JDBC;并发访问
Research and realization 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 and analyzing the basal working principles of the Database Connection Pool ,comprehending the using actuality 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
连接池的主要作用 一个应用系统,同时有几百人甚至几千人频繁的进行数据库连接操作势必占用很多的系统资源,严重的甚至会造成服务器的崩溃。对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。还有,如果不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,连接过多也可能导致内存泄漏,服务器崩溃。针对这些突出问题,因此提出了一种基于数据库连接池技术的有效解决方法。简而言之,数据库连接池主要作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。(毕业设计网 )
数据库连接池的基本原理 建立“缓冲存储池”,是数据库连接池的基本设计思想。这种技术类似于CPU 中的Cache 技术,将预先设定好的数据库连接放入该缓冲池中,当要建立数据库连接操作时,便从池中取出一个连接,使用完毕后再将其放回。这样就达到了连接复用的目的,应用程序重复使用一个数据库连接,在多层结构的应用程序中通过连接池技术可以使系统的性能明显得到提到。最为关键的是,该方法避免了对数据库连接的频繁建立、关闭,减小了系统开销,提高了响应速度。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。数据库连接池属于应用程序对底层的调用,用户并发访问应用程序时会提交访问请求,然后通过线程来处理这些请求,并向连接池申请一个对数据库操作的连接,操作完毕后将连接释放。
连接池中的关键类设计 一个连接池应用的设计,需要几个关键部分作为支撑,其中最为重要的是DBConnectionPool类和DBConnectionManager类,他们对连接的建立、管理、释放起决定性作用。大体作用列举如下: 1、一个DBConnectionPool类,该类负责从连接池获取(或创建)连接、将连接返回给连接池、空闲连接的超时等待、系统关闭时释放所有资源并关闭所有连接。 2、一个DataSourceProviderServlet类,该类负责通过上下文环境读取配置文件后装载和注册JDBC驱动、数据库名等。 3、一个DBConnectionManager类,该类负责按预先指定的最大连接池数连初始化连接池、创建DBConnectionPool对象provider、当所有的连接客户退出后,关闭全部连接。 4、DBconfig.properties属性文件,该文件中包含了数据库驱动(DriverName)、数据库URL、数据库表空间名(User)、表空间密码(Password)、连接池最大连接数(maxConnections)。 5、即为应用程序对连接池中的连接的调用和释放,应用程序退出后连接池的关闭。 将以上5个部分串连起来,即是本连接池的简单设计流程。首先应用程序向连接池申请连接,就需要通过DBConnectionPool类、DBConnectionManager类对连接池初始化,并且还需要DataSourceProviderServlet类的帮助读取DBconfig.properties文件中的属性,加载和注册JDBC驱动、数据库名等,连接池才能初始化成功。之后通过DBConnectionPool类监视、管理应用程序调用、释放的数据库连接,并通过该类的cp对象将连接使用情况反映在页面上。连接池管理程序得到某个连接,而其他线程就不会得到这个数据库连接了,此线程使用结束后,该线程将连接交还给连接池管理程序,以分配给其他等待连接的请求线程。这里连接池充分利用JAVA的线程同步机理,使当前服务线程处于等待状态,直至有空闲的连接出现。最后当应用程序退出时,通过DBConnectionManager类负责连接池的关闭。
连接池中的管理机制 应用程序开发中“三分技术、七分管理”的思想在连接池的配置中同样得以体现,如何从连接池中取得连接,何时释放连接、如何释放连接等问题还需要为连接池配置更为复杂的管理机制,连接池流程的管理如下图所示,这些属性定义了连接池与其中每个连接的有效状态值。连接池的自我管理,实际上就是通过定时的对每个连接的状态、连接的数量进行判断而进行相应操作。
目 录 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 |