王鹏宇
(鹤壁职业技术学院 河南鹤壁 458030)
应用数据库连接池技术优化JSP数据库连接效率
王鹏宇
(鹤壁职业技术学院 河南鹤壁 458030)
在基于JSP的Web应用系统中,数据库连接管理是直接关系到数据库应用性能的一个关键因素。在深入分析了数据库连接方式的基础上,详细讨论了连接池技术的工作机制,并给出了一个数据库连接池的实例。
JSP;数据库;连接池
自Internet出现以来,目前在互联网上主要采用B/S模式的系统体系结构。这种体系结构具有维护和升级方式简单的优点,但是服务器的运行负荷较重,尤其是数据库服务器运行负荷更是如此。在这种情况下,如何才能有效的提高系统的稳定性和数据库访问的高效性一直以来都是软件开发人员所关注的问题。一般来说不外乎有两种方法,一种就是提高和优化Web服务器的整体性能,另一种就是优化数据库的连接性能。下面我们将介绍一种采用数据库连接池技术优化数据库访问性能的方法。
传统的数据库访问操作主要由三个步骤构成:建立数据库连接;进行具体的SQL操作;关闭数据库连接。对于一般性的简单数据库操作而言,由于数据库访问量不是太大,所以给用户创建一个连接,用完以后及时关闭,这样对数据库访问性能的影响不是太大。但是对于大量而又频繁的数据库访问操作就完全不同了,因为在所有的数据库操作中,频繁的建立和关闭数据库连接是最为耗时的操作之一,而且数据库都有最大连接数目的限制,如果很多用户访问的是同一数据库,所进行的都是同样的操作,比如查询记录,那么为每一个用户都建立一个连接是不合理的。
连接池的思想是:Web服务器可以事先预备好若干个连接对象,将这些连接对象存放在一个称为连接池的容器中,当某用户需要操作数据库时,只要从连接池取出一个连接对象即可,当用户使用完该连接对象后,将该连接对象后,将该连接对象放回到连接池中而不是把这个连接对象直接释放掉。如果某用户需要操作数据库时,连接池中已没有连接对象可用,那么该用户就必须等待,直到连接池中有了连接对象。连接池中的连接对象可以被重复使用,并且用户不必关心每个连接对象的创建过程和关闭过程。
在传统的数据库连接方式中,对于每个用户的访问请求都需要创建一个到数据库的物理连接,但是现在我们只要从连接池中获取一个预先已经建立好的连接对象即可访问数据库了,在完成数据库操作后放回连接对象但并不关闭由连接池维护的物理数据库连接。下次有新的连接请求时,可以再次获取一个新的连接对象。这样就避免了创建多个类似的物理连接,避免了频繁建立、关闭连接造成的开销,提高了系统效率。
实际上连接池就是许多数据库连接对象在内存中的“存储池”,在连接池内部提供了一种连接机制,能够控制连接池内部连接对象的个数以及对这些连接对象进行管理。在管理数据库连接池的过程中有几个关键因素关系到了连接池工作效率的好坏。
3.1 连接池的管理策略。我们把连接池的工作原理归纳为3个方面:连接池的建立、管理和关闭。其中连接池对连接对象的管理是连接池技术的核心内容。主要有静态管理和动态管理两种管理策略来管理连接池。静态管理策略就是只在使用连接池的时候发现空闲连接不够才去检查连接池状态。动态管理策略就是通过一个线程定时检查连接池状态。当用户需要访问数据库时,必须向连接池申请获取一个连接对象,如果连接池有空闲的连接对象,就会得到一个连接对象;如果没有空闲的连接对象,那么有两种方法可以使用户获得连接对象。一种是等待一个连接对象被释放。另一种就是在已经分配的连接对象中找一个合适的连接给用户,此时该连接在多个用户之间被复用,我们通过Referenсe Cоunting(引用记数)来管理复用连接。我们对每一个数据库连接对象记录一个引用记数,以此来记录该连接对象的使用者的个数。在实际应用中,可以把连接池分为空闲池和使用池两部分。在空闲池中存放当前还没有被分配出去的连接对象,如果一个连接对象被分配出去,那么它就会被放入到使用池中,同时增加引用记数值。
3.2 多用户并发访问问题。在实际使用环境中,Web数据库访问多为多用户访问,所以为了使数据库连接池具有更大的通用性和适应性,再设计过程中必须考虑多用户并发访问的问题。在JSP中对连接池的管理,是通过JSP引擎在服务器端实现连接池的创建及管理,当用户通过客户端第一次访问服务器时,通过与 JSP内置аррliсаtiоn对象的配合,创建连接池对象,并通过相应的管理策略管理连接对象。连接对象与Web服务具有相同的生存周期,因此能保证连接池的最大通用性。
3.3 数据库连接池的配置。每一个数据库连接池都有若干基本属性,这些属性用来定义连接池及每一个连接对象的当前状态。其中最大连接数和最小连接数就是用来限定连接池中连接对象的数量,那么在连接池中放置多少个连接对象才是合适的呢?怎样才能使系统的性能呈现出最佳状态?如果创建的连接对象过多,那么系统启动就会很慢,但创建完成后系统的响应速度会很快;如果创建的连接过少,那么系统启动的将会很快,但是响应起来却很慢。具体的这些属性的值应该设置多少要看系统的访问量,可以通过反复测试的方法尽可能的找到一个最佳值。
下面我们给出一个数据库连接池实例:
随着国际互联网逐渐的深入到人们日常生活的方方面面,Web应用程序的应用也越来越广泛,尤其是网络数据库技术的应用越来越重要。在多用户并发访问的Web应用环境中,影响到数据库工作效率的若干关键因素也成为开发人员的重要研究对象。本文在详细讨论了数据库连接池技术的基础上,给出了一个连接池的实例。
通过这个连接池实例和对连接池技术的深入分析,可以看出对于多用户并发访问数据库的情况,采用数据库连接池的应用系统在工作效率和系统稳定性上都比采用传统的数据库连接方式要好,因此可以说数据库连接池是一种对整个系统中比较复杂的问题的一种可行的解决办法。但在实际应用中,连接池技术也有很多缺点需要我们继续深入的进行研究,比如数据库连接池管理程序与Web服务器、JSP引擎的管理策略有可能会发生冲突等,因此我们更应该从整体出发全面考虑系统中的每一部分。
[1]耿祥叉,张跃平.JSP实用教程[M].清华大学出版社,2003,P5.
[2]宋善德,郭飞.基于Jаvа的Web数据库连接池技术的研究[J].计算机工程与应用,2002(8).
[3]Subrаhmаnyаm Allаmаrаju等著.马树奇译.J2EE编程指南(1.3版)[M].电子工业出版社,2002,P231-P355.
王鹏宇(1978-),男,河南省淇县人,硕士,鹤壁职业技术学院讲师,研究方向:网络数据库。
2010-07-27