[发明专利]一种针对数据库连接意外中断的自动重连方法及其装置有效
申请号: | 201210138481.3 | 申请日: | 2012-05-07 |
公开(公告)号: | CN102708175A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | 李睿;吕江花;马世龙 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 周长琪 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 数据库连接 意外 中断 自动 方法 及其 装置 | ||
技术领域
本发明属于计算机数据处理技术领域,涉及数据库连接技术,具体是一种针对数据库连接意外中断的自动重连方法及其装置。
背景技术
数据库连接是一种关键的有限的资源。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,其最基本的思想就是预先建立一些连接放置于内存对象中备用。当应用程序需要建立数据库连接时,可以重复使用一个现有的数据库连接,而不是重新建立一个;使用完毕后释放,同时释放空闲时间超过最大空闲时间的数据库连接,来避免因为没有释放数据库连接而引起的数据库连接泄漏。数据库连接池技术明显提高了数据库操作的性能。
理想状况下数据库连接池中的连接都是有效的,但是实际环境中,由于网络连接的短暂中断、数据库服务器重启、数据库升级以及数据库参数修改等原因,均会导致数据库连接池中的连接失效。当应用程序从数据库连接池中取得一个失效的连接并且用来进行数据库操作时,系统会抛出连接异常。而在异常抛出之前,应用程序是无法对所获取数据库连接的有效性进行判断的。
通常来讲,针对数据库连接无效的情况,处理的方式有两种,一种是事前预防,另一种是事后补救。事前预防指的是在将连接交给应用程序之前,对连接通过预连接测试判断其有效性。事后补救指的是在系统抛出连接异常后,应用程序自动重新从数据连接池中获取一个新的连接,再次进行连接尝试。
不论是事前预防还是事后补救,都不适合对性能有很高要求的用户环境。事前预防需要经常的连接实际数据库以测试连接池中连接的有效性,这种不断的连接与释放,会增大系统的开销。事后补救在捕获异常后,再从连接池中获取新的连接,再次进行连接,重试或许成功或许失败,不能得到保证。重试所导致时间的延迟,资源的消耗,会大大降低系统性能。
发明内容
本发明的目的是为了解决现有技术中针对数据库连接无效的情况,存在系统开销大且重试连接不能保证连接成功的问题,提出一种针对数据库连接意外中断的自动重连方法及其装置。
一种针对数据库连接意外中断的自动重连装置,包括数据库连接池、连接有效性检测器、数据库连接请求监视器、连接请求优先级分析器以及异常捕获器。
数据库连接池运行在数据库服务器上,包括数据库常规数据库连接池和备用数据库连接池。数据库常规数据库连接池中保存着固定数目的数据库连接,当数据连接池初始化时,将初始化常规数据库连接池中的数据库连接。
数据库连接请求监视器检测应用程序发起的数据库连接请求,并记录前后两次数据库连接请求之间的时间间隔;当数据库连接请求监视器检测到数据库连接请求时,首先检测当前常规数据库连接池中是否有空闲连接,若没有空闲连接,则进行等待,直到有空闲连接,当有空闲连接时,给该数据库连接请求分配一个数据库连接,并并根据前后两次数据库连接请求之间的时间间隔将所分配的数据库连接发送给连接有效性检测器进行有效性检测。连接有效性检测器对常规数据库连接池所分配的数据库连接进行预连接,以检测当前所分配的数据库连接的有效性,若连接有效,则将所分配的数据库连接返回给应用程序所发起的数据库连接请求,若连接无效,则发送通知给连接请求优先级分析器。连接请求优先级分析器在接收到连接有效性检测器的通知后,通过预先设定的优先级策略对应用程序所发起的数据库连接请求进行判断,当该数据库连接请求属于优先级较高的数据库连接请求时,发送启用命令给备用数据库连接池。备用数据库连接池在接收到启用命令后,进行初始化,初始化用户设定数目的数据库连接。
异常捕获器为自定义的异常捕获机制,用于监控数据库常规数据库连接池、备用数据库连接池、连接有效性检测器、数据库连接请求监视器、连接请求优先级分析器和数据库服务器,当捕获到异常时,产生异常处理信息给用户。
一种针对数据库连接意外中断的自动重连方法,包括如下步骤:
步骤1:判断应用程序当前发起的数据库连接请求是否为首次请求,若是,常规数据库连接池初始化,循环创建指定数目的数据库连接,并将所创建的数据库连接保存到一个数据向量中,然后执行步骤2;若否,执行步骤3。
步骤2:从常规数据库连接池中获取数据库连接分配给当前的数据库连接请求,若当前常规数据库连接池中没有空闲连接,则等待,直到常规数据库连接池中有空闲连接为止;同时数据库连接请求监视器记录首次数据库连接请求发起的时间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210138481.3/2.html,转载请声明来源钻瓜专利网。