论文部分内容阅读
[摘要]本文针对应用系统中存在的大量并发数据库访问的情况,提出了一个数据库连接池方案,并且采用JDBC实现该方案,用于显示该方案可以显著提高数据库访问的效率,并经过多次试验,效果明显。
[关键词]Java连接池JDBC设计
中图分类号:TP18 文献标识码:A 文章编号:1009-8283(2009)04-
1 绪论
Java语言以其面向对象、安全性、平台无关性,以及多线程和分布式等特点,成为风靡全球的程序设计语言。基于Java的技术也赢得了越来越多的企业级用户。在面向企业的应用系统中。数据库访问技术是其核心技术之一。JDBC是SUN公司发布的Java领域访问数据库的规范。执行查询两个部分。本文以连接池设计模式为理论依据,提出了一个数据库连接池方案,其基于JDBC的实现可以达到:(1)每一个数据库连接得以高效、安全的复用,避免频繁的数据库连接建立、关闭的开销;(2)限制最大连接数量;(3)为恶意的连接建立超时参数等。
2 连接池模式叙述与设计
设计模式是近年来面向对象软件设计领域的研究热点之一。研究设计模式的目的在
于,撇开具体应用环境中的细节,在比较高的抽象层次上应用已被证明是行之有效的一般方法,解决在软件设计中重复出现的同类问题。
模式具有不同的粒度和抽象水平,但是它们之间存在共性,可以采用一个模板来控制对模式的描述。
3 JAVA数据库连接池方案的实现方案中除了有上文连接池模式中成员:
客户对象(Client)、连接池对象(Connection-Pool)、连接实例对象(connectlonObjeot)以外,还根据实现需要增加了数据库管理者对象(DBManager)和计时器对象(Timer)。
4 两种方案试验对比与结论
4.1 理论对比
采用连接池和不采用连接池两种方案的
(1)基于Java的应用程序(包括JavaApplet/Servlet和Application)是直接通过数据库管理器获取和释放数据库连接。这将影响Java应用程序的性能。这种影响是由数器进程创建和关闭那些连接对象而引起的。应用服务器一般需要花数秒的时间来建立数据库连接。而且是分别对每一个来自Java应用程序的请求进行连接建立和关闭。(2)基于Java的应用程序可以透明地共享资源池的多个连接对象。在此情况下,因为连接池预先在启动时创建连接对象,所以,在应用程序请求使用连接对象时,不会引起数据库资源管理器上的系统开销。
4.2 试验设计
使用同一个Java数据库应用程序,该程序的数据库访问模块有两种选择:1)有连接池方案;2)无连接池方案。每一方案中数据库系统又有三种选择1)基于SUN Solaris平台的Oracle数据库;2)Windows NT平台上的Oracle数据库;3)Windows NT平台上的MicrosoR Access数据。上述两种选择一共有六种组合,对每一组合模拟30个客户,客户每隔3秒钟访问数据库一次的情况。记录50次访问的数据,对其取平均值。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/touz/touz200904/touz200904109-1-l.jpg)
4.3 试验结果和总绩
从试验数据可以看出,是否采用连接池方案对于执行查询的时间影响不明显,两种方案所花的时间基本相当。这说明无论是否采用连接池,在数据库访问的两部分时间中,执行查询所需的时间,都是不可能显著降低的。
而两部分时间中的另一部分——建立连接的时间,在采用连接池前后有显著差别。对于象Access这样的小型数据库(仅用在开发期间的测试中),其响应时间的差别特别明显。这说明了在Java数据库程序中。建立连接这部分时间还是值得斟酌的。即使因为Oracle专业级别的处理能力削弱了这种反差,但是3-4倍的时间差距,还是能够成为在大量并发访问的情况下选择连接池方案的理由。
需要指出的是,上述的试验结果并非是在优化连接参数的情况下得到的。如果采用连接池方案的应用系统可以根据系统的硬件、软件资源,访问量等因素动态配置文件中的参数,例如连接池保持的最少连接数。每个连接在关闭前允许的最大使用次数等,则可以预期得到更佳的效果。
[关键词]Java连接池JDBC设计
中图分类号:TP18 文献标识码:A 文章编号:1009-8283(2009)04-
1 绪论
Java语言以其面向对象、安全性、平台无关性,以及多线程和分布式等特点,成为风靡全球的程序设计语言。基于Java的技术也赢得了越来越多的企业级用户。在面向企业的应用系统中。数据库访问技术是其核心技术之一。JDBC是SUN公司发布的Java领域访问数据库的规范。执行查询两个部分。本文以连接池设计模式为理论依据,提出了一个数据库连接池方案,其基于JDBC的实现可以达到:(1)每一个数据库连接得以高效、安全的复用,避免频繁的数据库连接建立、关闭的开销;(2)限制最大连接数量;(3)为恶意的连接建立超时参数等。
2 连接池模式叙述与设计
设计模式是近年来面向对象软件设计领域的研究热点之一。研究设计模式的目的在
于,撇开具体应用环境中的细节,在比较高的抽象层次上应用已被证明是行之有效的一般方法,解决在软件设计中重复出现的同类问题。
模式具有不同的粒度和抽象水平,但是它们之间存在共性,可以采用一个模板来控制对模式的描述。
3 JAVA数据库连接池方案的实现方案中除了有上文连接池模式中成员:
客户对象(Client)、连接池对象(Connection-Pool)、连接实例对象(connectlonObjeot)以外,还根据实现需要增加了数据库管理者对象(DBManager)和计时器对象(Timer)。
4 两种方案试验对比与结论
4.1 理论对比
采用连接池和不采用连接池两种方案的
(1)基于Java的应用程序(包括JavaApplet/Servlet和Application)是直接通过数据库管理器获取和释放数据库连接。这将影响Java应用程序的性能。这种影响是由数器进程创建和关闭那些连接对象而引起的。应用服务器一般需要花数秒的时间来建立数据库连接。而且是分别对每一个来自Java应用程序的请求进行连接建立和关闭。(2)基于Java的应用程序可以透明地共享资源池的多个连接对象。在此情况下,因为连接池预先在启动时创建连接对象,所以,在应用程序请求使用连接对象时,不会引起数据库资源管理器上的系统开销。
4.2 试验设计
使用同一个Java数据库应用程序,该程序的数据库访问模块有两种选择:1)有连接池方案;2)无连接池方案。每一方案中数据库系统又有三种选择1)基于SUN Solaris平台的Oracle数据库;2)Windows NT平台上的Oracle数据库;3)Windows NT平台上的MicrosoR Access数据。上述两种选择一共有六种组合,对每一组合模拟30个客户,客户每隔3秒钟访问数据库一次的情况。记录50次访问的数据,对其取平均值。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/touz/touz200904/touz200904109-1-l.jpg)
4.3 试验结果和总绩
从试验数据可以看出,是否采用连接池方案对于执行查询的时间影响不明显,两种方案所花的时间基本相当。这说明无论是否采用连接池,在数据库访问的两部分时间中,执行查询所需的时间,都是不可能显著降低的。
而两部分时间中的另一部分——建立连接的时间,在采用连接池前后有显著差别。对于象Access这样的小型数据库(仅用在开发期间的测试中),其响应时间的差别特别明显。这说明了在Java数据库程序中。建立连接这部分时间还是值得斟酌的。即使因为Oracle专业级别的处理能力削弱了这种反差,但是3-4倍的时间差距,还是能够成为在大量并发访问的情况下选择连接池方案的理由。
需要指出的是,上述的试验结果并非是在优化连接参数的情况下得到的。如果采用连接池方案的应用系统可以根据系统的硬件、软件资源,访问量等因素动态配置文件中的参数,例如连接池保持的最少连接数。每个连接在关闭前允许的最大使用次数等,则可以预期得到更佳的效果。