基于JDBC的数据库衔接池高效管理战略[Java编程]
本文“基于JDBC的数据库衔接池高效管理战略[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在基于JDBC的数据库利用开辟中,数据库衔接的管理是一个难点,因为它是决意该利用性能的一个重要因素.本文在对数据库衔接举行透彻解析的底子上,提出并实现了一个高效的衔接纳理战略,使得开辟高性能的数据库利用变得相对简单.分外是,关于衔接纳理中的两个难点:事件和多线程问题举行了深化的解析,并给出了一个基于计划情势的办理筹划.
介绍
在利用Java语言举行和数据库有关的的利用开辟中,普通都利用JDBC来举行和数据库的交互,此中有一个关键的概念就是Connection(衔接),它在Java中是一个类,代表了一个通道.通过它,利用数据的利用便可以从数据库拜候数据了.
关于一个简单的数据库利用,由于关于数据库的拜候不是很频繁.这时可以简单地在需求拜候数据库时,就新成立一个衔接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销.但是关于一个复杂的数据库利用,情形就完好差别了.频繁的成立、关闭衔接,会极大的减低系统的性能,因为关于衔接的利用成了系统性能的瓶颈.
本文给出的办法可以有效的办理这个问题.在本办法中提出了一个公道、有效的衔接纳理战略,避免了关于衔接的随便、无法则的利用.该战略的核心机惟是:衔接复用.通过成立一个数据库衔接池以及一套衔接利用管理战略,使得一个数据库衔接可以得到高效、安全的复用,避免了数据库衔接频繁成立、关闭的开销.别的,由于对JDBC中的原始衔接举行了封装,从而便利了数据库利用关于衔接的利用(分外是关于事件处理),提高了开辟效率,也恰是因为这个封装层的存在,断绝了利用的本身的处理逻辑和具体数据库拜候逻辑,使利用本身的复用成为大概.
问题产生
我参与的项目是开辟一个网管系统,不可避免的要和数据库打交道.刚开始时,由于关于数据库的拜候不是很频繁,关于数据库衔接的利用就是简单的需求时就成立,用完就关闭的战略,这很符合XP(eXtreme Programming)的口号:"Do the Simplest Thing that Could Possibly Work".确切,开始时工作的很好.随着项目的进展,关于数据库的拜候开始变的频繁,问题就表暴露来了,原先的通过简单地获得和关闭数据库衔接的办法将很大的影响系统的性能,这种影响是由于数据库资源管理器进程频繁的成立和摧毁那些衔接对象而惹起的.
此时,就有必要对数据库拜候办法举行重构(refactoring),因为我们确切需求举行改良,来提高系统的性能.
办理筹划
可以看出,问题的本源就是由于关于衔接资源的低效管理造成的.关于同享资源,有一个很闻名的计划情势:资源池.该情势恰是为了办理资源频繁分配、释放所造成的问题的.把该情势利用到数据库衔接纳理范畴,就是成立一个数据库衔接池,供应一套高效的衔接分配、利用战略,终究目标是实现衔接的高效、安全的复用.
3.1、成立衔接池
第一步,就是要成立一个静态的衔接池,所谓静态是指,池中的衔接是在系统初始化时就分配好的,并且不可以随便关闭的.Java中给我们供应很多容器类可以便利的用来构建衔接池,如:Vector、Stack等.在系统初始化时,按照配置成立衔接并安排在衔接池中,今后所利用的衔接都是从该衔接池中获得的,这样便可以避免衔接随便成立、关闭造成的开销(当然,我们没有办法避免Java的Garbage Collection带来的开销).
3.2、分配、释放战略
有了这个衔接池,下面我们便可以供应一套自定义的分配、释放战略.
当客户恳求数据库衔接时,首先看衔接池中能否有闲暇衔接,这里的闲暇是指,目前没有分配出去的衔接.假如存在闲暇衔接则把衔接分配给客户,并作呼应处理,具体处理战略,在关键议题中会详述,主要的处理战略就是标志该衔接为已分配.若衔接池中没有闲暇衔接,就在已经分配出去的衔接中,探求一个符合的衔接给客户(挑选战略会在关键议题中详述),此时该衔接在多个客户间复用.
当客户释放数据库衔接时,可以按照该衔接能否被复用,举行差别的处理.假如衔接没有利用者,就放入到衔接池中,而不是被关闭.
可以看出恰是这套战略保证了数据库衔接的有效复用.
3.3、配置战略
数据库衔接池中到底要安排多少个衔接,衔接耗尽后该若何处理呢?这时一个配置战略.普通的配置战略是,开始时,按照具体的利用需求,给出一个初始的衔接池中衔接的数目以及一个衔接池可以扩大到的最大衔接数目.本筹划就是按照这种战略实现的.
以上是“基于JDBC的数据库衔接池高效管理战略[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |