管理数据库连接的方法和系统技术方案

技术编号:2821458 阅读:202 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种数据库连接管理方法,包括步骤:响应于第一应用的连接请求,为所述第一应用分配可用连接;如果没有可用连接,则选择由第二应用所使用的一个已用连接;对所述已用连接的连接上下文进行备份;释放所述已用连接;以及将所述已用连接分配给所述第一应用。如果所述第二应用请求恢复先前的连接状态,则基于所述备份的连接上下文为其分配新的连接并且恢复先前的连接状态。由于已经对应用的连接上下文进行了可恢复的备份,因此可以在需要时断开应用的连接,对连接进行重新调度,因此提高了连接利用率。本发明专利技术还提供了一种可以基于连接池技术实现数据库连接管理的设备和系统。

【技术实现步骤摘要】

本专利技术涉及计算机领域,并且特别地涉及一种管理数据库连接的方 法和系统。
技术介绍
如今,大量应用(application)需要访问数据库以获得所需要的数据。 例如,在使用Java语言开发的与数据库有关的应用中, 一般使用JDBC (Java DataBase Connection)连4妄来进行与数据库之间的交互。在此, 连接代表了一个通道,各种使用数据的应用可以通过这种通道对数据库 进行访问以完成对数据的读写操作。在实际的情况中,每一次应用请求都要建立一次凄t据库连接,由于 对数据库的访问很频繁,频繁地进行数据库连接操作会占用很大的内存 资源。针对这种情况,在连接的管理中引入了"连接池,,的管理模式,即 预先在一个连接池中放入一定数量的连接,需要建立连接时,只需从池 中取出一个连接,使用完毕之后将其放回。然而,现有技术中的连接池 管理只限于对连接的基本分配,至于应用对连接的使用是否合理则不受 控制。实际上,应用对连接的不当使用会导致资源冲突,使得线程停滞 不前,甚至可能造成系统崩溃。对连接的不当使用包括很多种,例如连接泄漏,即有些应用获取连接后没有关闭连接,导致连接被持续地占用; 低效地使用连接资源,即使用完某个连接后没有立即释^:到连接池中, 或者长时间地占用该连接而不使用;死锁(deadlock),即由于以递归的现有技术已经提出了几种连接管理方案用于解决上述对连接使用 不当的问题。 一种技术是在应用服务器(以下筒称AS)中手动检测连 接泄漏。在该方法中,利用专门的诊断程序通过轮询的方式在AS上枱r测连接泄漏。这种检测方法的缺点在于不能自动地检测连接泄漏,因此 可能会造成漏检,并且由于要频繁地进行检测,因此会带来额外的开销。第二种技术是基于超时(timeout)自动检测连接问题。相对于前一 种检测技术来说,这是一种自动的方式,其中由AS管理员规定一个针 对数据库连接的超时值(例如,默认值为75秒),在该超时届满之后仍 然占用连接的应用都将遭到超时异议并且因此其连接将会被系统收回。 这种技术特别适用于死锁的情况,因为一旦出现死锁,死锁线程中的连 接资源将会因为超时被系统剥夺,从而解开死锁。但是这种技术的缺点 在于,很难确定适合于所有事务的超时值。例如,如果线程本身是需要 很长时间才能完成的事务,则适合于一般事务的超时会导致剥夺该长时 间事务的连接,使得长时间事务无法正确进行。而如果将超时规定得过 长,则又使系统无法及时对问题作出反应,往往在问题出现之后很长时 间才发现,从而使得整体的连接利用率降低。另 一种常用方法是预先对程序进行调试。其中利用程序调试工具对 程序进行分析,如果分析的结果是该程序存在当运行时产生死锁或泄漏 的可能,则通知编程人员对程序进行修改。不言而喻,在大型企业环境 中对分布式应用进行调试是一项非常繁重的任务。因此,这种方法的成 本效率伞支差。针对上述的问题,本专利技术的目的是提供一种管理数据库连接的改进 的技术,其能够克服上述解决方案的缺点,显著地提高连接的利用率, 从而在整体上提高系统性能。
技术实现思路
本专利技术的目的可以通过一种数据库连接管理方法和系统来实现。该 方法和系统通过对数据库连接的连接上下文(connection context)进行 保存和恢复以及对连接进行重新分配,实现对连接的重复利用。在此所 用的术语"连接上下文"是指一个连接的状态信息。应用利用连接访问数 据库时,将在连接上传送这种状态信息。图1中示出了这种状态信息的 例子,在下文中将对其进4亍详细地描述。在本专利技术的第一个方面中,提供了一种数据库连接管理方法,包括步骤响应于第一应用的连接请求,为所述第一应用分配可用连接;如 果没有可用连接,则选择由第二应用所使用的一个已用连接;对所述已 用连接的连接上下文进行备份;释放所述已用连接;以及将所述已用连 接分配给所述第一应用。根据本专利技术的一个优选实施例,如果所述第二应用请求恢复先前的 连接状态,则基于所述备份的连接上下文为其分配新的连接并且恢复先 前的连接状态。根据本专利技术的另一个优选实施例,应用可以是Java应用,并且连接 可以是JDBC连接。其中需要进行备份的连接上下文包括连接的连接 (Connection)对象、会话(Statement)对象、结果集(Resultset)对 象。根据本专利技术的再一优选实施例,在选择已用连接时,可以选择一个 占用连接超过预定时间的应用。作为替代,也可以基于最近最少使用算 法(LRU)来进行选择。根据本专利技术的又一优选实施例,并且将所述已用连接的连接上下文 与所述关键字之间建立对应关系。例如,当进行连接上下文备份时,将 该应用的连接上下文与该关键字一起放入一个索引表中,并且当需要 时,根据该关键字从索引表中取出连接上下文,然后基于所述连接上下 文为所述应用分配新的连接并且恢复先前的连接状态。其中该关键字可 以是任意字符,也可以是任何其他能够唯一标识该应用的会话的标识 符,诸如该连接上下文中的特定信息。在本专利技术的第二个方面中,提供了一种数据库连接管理器,包括 连接上下文备份装置,用于对连接的上下文进行备份;以及连接调度装 置,用于对连接进行调度。该连接调度装置还包括如下装置响应于第 一应用的连接请求,为所述第一应用分配可用连接的装置;如果没有可 用连接,则选择由第二应用所使用的一个已用连接的装置;控制所述连 接上下文备份装置对所述已用连接的连接上下文进行备份的装置;释放 所述已用连接的装置;以及将所述已用连接分配给所述第一应用的装置。在本专利技术的第三个方面中,提供了 一种用于管理数据库连接的管理 系统,包括应用、连接管理器和连接池,其特征在于该连接管理器可以 利用上述方法对应用的连接上下文进行备份和恢复,并且可以对连接进 行重新调度。在现有技术的连接池管理方案中,应用直接从连接池中获取连接, 并且在完成数据库访问操作时释放该连接,被释放的连接可以供其他请 求连接的新应用所使用。但是如果占用连接的应用占用了连接池中的所 有连接而在完成数据库访问操作后没有及时释放连接,就会导致其他请 求连接的新应用无法获得连接来访问数据库。根据本专利技术的方法,应用 向连接管理器请求连接,由连接管理器根据目前的连接使用状态对连接 进行分配。具体地说,当连接池中的连接全部分配出去时,如果有新的 应用请求连接,连接管理器可以在对至少一个已占用连接的应用的连接 上下文进行可恢复性备份之后回收至少 一个连接,将已回收的连接分配 给提出请求的新应用,从而完成对连接的重新调度。如果被释放连接的 应用正好是不需要继续使用该连接的应用,则上述处理自然地结束了这 种不适当的连接分配状态。如果被释放连接的应用本身尚未完成操作, 则其可以在需要时重新请求连接,而管理器将根据先前对其回收连接时 备份的连接上下文为其恢复一个连接,从而使得该应用的事务能够接着 中断连接之前的处理继续执行,而不需要重新该事务处理。因此,本发 明的方法可是实现对数据库连接的动态的、弹性的管理,从而提高连接 资源的利用率,改善系统性能。参考以下结合附图所描述的优选实施例,本专利技术的这些和其他优点 将变得明显。这些实施例仅用于说明的目的,而不应理解为对本专利技术的 范围的限制。附图说明图1示意性示出了以JDBC连本文档来自技高网
...

【技术保护点】
一种数据库连接管理方法,包括步骤: 响应于第一应用的连接请求,为所述第一应用分配可用连接; 如果没有可用连接,则选择由第二应用所使用的一个已用连接; 对所述已用连接的连接上下文进行备份; 释放所述已用连接;以及 将所述已用连接分配给所述第一应用。

【技术特征摘要】

【专利技术属性】
技术研发人员:许丞李影陈滢邱杰
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1