- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库连接池技术分析与研究
数据库连接池技术分析与研究
[摘 要]提出使用数据库连接池的办法,并介绍数据库连接池的原理,构建一个简便易用的连接池,并结合当前热门技术JSP说明其如何在开发中使用的问题。
[关键词]JDBC JSP 数据库 连接池
中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2008)0710051-01
一、引言
在传统的两层结构(即传统的服务器端与客户端结构)中,客户端程序在启动时打开数据库连接,在退出程序时是关闭数据库连接。每个动态页面和应用程序都要频繁访问数据库,但是连接数据库时需要用户验证,使用结束后又要确保它们被正确关闭,以防内存泄露。因此传统的数据连接库是一种耗资源耗时间的操作。一个WEB应用程序,有可能在某一时间段内,有大量的数据库操作请求,这时系统性能会变得很坏。采用连接池连接技术是解决连接数据库瓶颈的一种很好的解决方案,能够高效地实现数据库连接的管理。
二、数据库连接池基本原理及模型
(一)连接池的原理介绍
连接池技术就是事先建立一些连接并且放置于内存中以备使用,当需要建立数据库连接时,并不需要直接向数据库发出请求,而只需要从数据库连接池中取得所需要的连接;当应用程序使用完一个连接,也不需要从物理上关掉连接,而是将连接归还给连接池。就是说当用户进行数据库读写操作时,需要从连接池也就是中间层那里申请一个连接,而当用户结束数据库操作时,只需将已申请的那个连接重新还给连接池,由连接池对连接进行统一的管理,用户不需要进行其他额外的操作,这样做最大的好处就是不用每次都建立连接,降低系统效率,耗费时间。连接池的基本工作原理见图1。
通过上面的例子我们可以简单看出连接池技术的优势,在这里我们对使用连接池技术的优点进行一下简短的总结和归纳。
首先,不用为每个用户请求建立新的连接,可以提高数据库访问的效率和整个应用程序的性能;其次,不用重复为连接用户名、连接密码等数据库访问的细节编码,节省编程工作量;再次,方便地控制连接到数据库的许可用户数,商业应用中在成本、安全性方面优势明显;最后,在数据库系统更换时保证了应用程序不用做大的调整。
(二)数据库连接池模型设计
根据数据库连接池的工作机制,在设计数据库连接池模型时主要用了三个类:连接池类、连接池管理类和封装的连接对象。
(1)连接池类。该类主要是维护连接池中的连接对象,包括连接对象的创建、关闭,连接对象的数量,连接对象状态的监控、日志信息的记录。
(2)连接池管理类。主要负责加载和注册所有JDBC驱动程序;根据对象的特点创建多个连接池对象;将客户请求映射到特定的连接池对象上,并提供客户从连接池获取和释放连接的接口,指定日志文件属性,将加载和注销JDBC驱动程序的信息记录到日志中。
(3)封装的连接池对象Conn。之所以引入封装过的连接对象,是为了给数据库连接对象捆绑属性,以便于连接池对其进行管理。它主要是记录连接池的状态,包括最近使用时间,被使用的次数等属性。最近使用时间属性是为了制约连接池中的连接其空闲时间不能超过一定的限度,使得连接池中的连接与系统客户请求的频率相适应,系统访问频繁的时候连接池中维持的连接数目较多,系统空闲的时候维持最少数目的连接。在这个类中设置使用次数这个属性来跟踪一个连接被使用的次数,避免同一连接被过多使用导致系统不稳定。
三、数据库的访问过程
(一)添加任务
用户由Servlet.Beans执行数据库访问,调用连接池类ConnectionPool
的addTask()方法。addTask()执行过程是:
(1)调用ThreadPool线程getRequesterID()得到任务申请号。
(2)实例化查询任务QueryTask对象。
(3)调用ThreadPool线程池类的addTask()将查询任务对象添加到线程池中。
(4)调用ThreadPool线程池类addTaskListener() 添加任务完成事件监听者,过程结束返回用户。
(二)任务运行、结束
线程池调用ConnectionManager对象的run()运行SQL任务对象。SQL任务对象在运行任务时首先调用连接池类对象的getConnection()得到连接对象,然后进行数据库访问,访问结束,调用连接池类对象的releaseConnec
Tion()将得到的连接进行释放和管理。查询任务类对象完成任务后返回线程池。线程池调用查询任务类SQLTask的方法getTaskInformation()得到查询SQLInformati
您可能关注的文档
最近下载
- 2025年护理人员N1进阶N2考试试题及答案 .pdf VIP
- DB21T1342-2021 建筑工程文件编制归档规程.pdf
- Unit-1-Discovering-Useful-Structures-超好用的公开课获奖课件-(.pptx VIP
- 专业技术职务任职资格评审表.doc VIP
- 医疗操作规程.docx VIP
- 湖北省专业技术职务任职资格评审表.docx
- 钒酸铋光催化剂的制备及改性.pdf VIP
- 城市轨道交通列车牵引与制动系统(配实训工单) 实训手册(带答案).docx VIP
- 吊装施工专业技术方案(含计算).doc VIP
- 城市轨道交通车辆维护与检修中职全套完整教学课件.pptx
文档评论(0)