一种数据库连接的控制管理方法及装置的制作方法

文档序号:6426379阅读:133来源:国知局
专利名称:一种数据库连接的控制管理方法及装置的制作方法
技术领域
本发明属于数据库访问技术,尤其涉及一种数据库连接的控制管理方法及装置。
背景技术
如今,大量应用需要访问数据库以获得所需要的数据。一般在数据库的应用中使用连接来进行与数据库之间的交互。在实际情况中,每一次应用请求都要建立一次数据库连接。具体做法如下首先,建立数据库连接;其次,打开数据库连接;再次,运用该连接执行SQL语句;最后,关闭数据库连接,释放数据库连接资源。然而,上述做法存在如下缺陷(1)当有大量数据库操作时,建立的大量数据库连接得不到及时释放,导致内存上升,严重时会使程序崩溃;(2)建立数据库连接后,需要打开连接,打开连接耗时较长,当有大量数据库并发操作时,会导致数据库执行效率大幅下降;C3)打开数据库连接后,执行完SQL语句仅将连接释放,数据库连接资源没有得到循环利用,导致效率降低。此外,一般的分布式数据库服务器存在以下缺点(1)每个数据库提供的服务是一样的,没有根据数据库压力和业务逻辑需要提供多样性服务;( 数据库调度模块仅仅根据数据库服务的压力状况分配服务,没有考虑到数据库操作的优先级。

发明内容
本发明提供一种数据库连接的控制管理方法及装置以解决上述问题。本发明提供一种数据库连接的控制管理方法,包括以下步骤。数据库调度进程从业务逻辑进程接收数据库操作请求,并根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程。对应的数据库执行进程从数据库调度进程接收数据库操作请求,并判断数据库操作请求的类型。 控制进程根据数据库操作请求的类型及调用策略调用相应数目的连接,以执行数据库操作请求。于连接执行数据库操作请求后,数据库执行进程将处于打开状态的连接放回至数据库连接堆栈,供下一次调用。控制进程根据关闭策略关闭数据库连接堆栈内相应数目的处于打开状态的连接。本发明还提供一种数据库连接的控制管理装置,包括调度模块、接收模块、判断模块、连接管理模块以及控制模块。调度模块用于从业务逻辑进程接收数据库操作请求。接收模块与调度模块相连。调度模块根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的接收模块。判断模块与接收模块相连,用于判断数据库操作请求的类型。连接管理模块与判断模块相连。控制模块与连接管理模块相连,用于根据数据库操作请求的类型及调用策略调用相应数目的连接,以执行数据库操作请求。于连接执行数据库操作请求后,连接管理模块用于将处于打开状态的连接放回至数据库连接堆栈,供下一次调用,控制模块根据关闭策略关闭数据库连接堆栈内相应数目的处于打开状态的连接。
相较于先前技术,根据本发明提供的数据库连接的控制管理方法及装置,数据库调度进程根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程,如此,有利于负荷平衡,从而提高数据库整体执行效率。另外,通过控制进程根据调用策略及关闭策略控制数据库连接堆栈内连接的打开调用与关闭,从而提高连接的利用率。此外,通过数据库连接堆栈实现数据库连接的循环使用,同时防止建立过多数据库连接占用系统内存。而且,于连接执行数据库操作请求后,处于打开状态的连接将被放回至数据库连接堆栈。如此,可循环使用已经打开的连接,从而提高连接的使用效率。另外,根据数据库操作请求的类型调用与其相对应的数据库连接堆栈内的连接,如此,对数据库操作进行分离,提高数据库执行效率。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1所示为根据本发明的较佳实施例提供的数据库连接的控制管理方法的流程图;图2所示为根据本发明的较佳实施例提供的数据库连接的控制管理方法的流程图;图3所示为根据本发明的较佳实施例提供的数据库连接的控制管理装置的示意图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。图1所示为根据本发明的较佳实施例提供的数据库连接的控制管理方法的流程图。如图1所示,本发明较佳实施例提供的数据库连接的控制管理方法包括步骤101 105。 于步骤101中,数据库调度进程从业务逻辑进程接收数据库数据请求,并根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程。于步骤102中,对应的数据库执行进程从数据库调度进程接收数据库操作请求,并判断数据库操作请求的类型。于步骤103中,控制进程根据数据库操作请求的类型及调用策略调用相应数目的连接,以执行数据库操作请求。于步骤104中,于连接执行数据库操作请求后,数据库执行进程将处于打开状态的连接放回至数据库连接堆栈,供下一次调用。于步骤105中,控制进程根据关闭策略关闭数据库连接堆栈内相应数目的处于打开状态的连接。其中,关闭策略为于数据库连接堆栈内正在执行数据库操作请求的连接数目与处于打开状态的连接数目的比值小于或等于预设值时,按照预设的百分比关闭数据库连接堆栈内多余的处于打开状态的连接。调用策略包括于当前数据库操作请求的数目小于或等于数据库连接堆栈内处于打开状态但未执行操作的连接的数目时,调用数据库连接堆栈内相应数目的处于打开状态但未执行操作的连接;于当前数据库操作请求的数目大于数据库连接堆栈内处于打开状态但未执行操作的连接的数目且小于或等于数据库连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用数据库连接堆栈内处于打开状态但未执行操作的连接,且打开并调用所述数据库连接堆栈内相应数目的处于关闭状态的连接;于当前数据库操作请求的数目大于数据库连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用数据库连接堆栈内处于打开状态但未执行操作的连接,打开并调用所述数据库连接堆栈内全部处于关闭状态的连接,并调用其他数据库连接堆栈内的空余可用连接,若所述空余可用连接处于关闭状态,则打开并调用所述空余可用连接。如下对上述过程进行详细说明。请参考图2。图2所示为根据本发明的较佳实施例提供的数据库连接的控制管理方法的流程图。如图2所示,本实施例提供的数据库连接的控制管理方法包括步骤201 206。于步骤201中,数据库调度进程从业务逻辑进程接收数据库操作请求。于步骤202中,数据库调度进程根据数据库操作请求的业务类型的优先级以及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程。于此,数据库操作请求的业务类型包括用户信息管理、离线信息管理以及聊天信息管理。然而,本发明对此不作限定。于实际应用中,可根据需要设置其他的业务类型。具体而言,当数据库调度进程接收数据库操作请求后,根据数据库操作请求的业务类型的优先级,采用任务队列管理数据库操作请求的执行顺序。于此,优先执行业务类型优先级较高的数据库操作请求。举例而言,用户信息管理的优先级高于离线信息管理及聊天信息管理,离线信息管理的优先级高于聊天信息管理,此时,对用户信息管理的操作(例如,查询或修改)优先处理,接着,对离线信息管理及聊天信息管理的操作依次执行。此外,数据库调度进程根据业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程。举例而言,若关于用户信息管理的业务类型对应于数据库执行进程1,关于离线信息管理的业务类型对应于数据库执行进程2,关于聊天信息管理的业务类型对应于数据库执行进程3,结合上述业务类型的优先级,则数据库调度进程优先将有关用户信息管理的数据库操作请求发送至数据库执行进程1,然后依次将有关离线信息管理的数据库操作请求发送至数据库执行进程2,将有关聊天信息管理的数据库操作请求发送至数据库执行进程3。于步骤203中,数据库执行进程接收数据库操作请求后判断数据库操作请求的类型。于此,数据库操作请求的类型包括查询、增加、删除以及修改。然而,本发明并不限定于此。具体而言,当数据库执行进程接收数据库操作请求后,首先将接收到的数据库操作请求放入任务队列中。然后,数据库执行进程按照任务队列调度的数据库操作请求,判断数据库操作请求的类型。然而,本发明并不限定于此。于其他实施例中,数据库执行进程接收数据库操作请求后可先判断数据库操作请求的类型,然后,按照数据库操作请求的类型将数据库操作请求放入不同的任务队列中,供后续执行。接下来,以查询操作为例进行详细说明,其他操作的执行与查询操作的执行相同, 故于此不再赘述。于本实施例中,根据数据库操作请求的类型,对不同的数据库操作请求首先调用其对应的数据库连接堆栈内的连接,以执行所述数据库操作请求,从而提高数据库执行效率。
于步骤204中,控制进程根据调用策略调用相应数目的连接,以执行数据库查询请求。其中,调用策略包括如下三个方面。于当前数据库查询请求的数目小于或等于数据库查询连接堆栈内处于打开状态但未执行操作的连接的数目时,调用数据库查询连接堆栈内相应数目的所述处于打开状态但未执行操作的连接,以执行当前数据库查询请求。举例而言,若当前数据库查询请求有5 个,数据库查询连接堆栈内正在执行操作的连接数目为4个,数据库查询连接堆栈内已经打开的连接数目为10个,则调用数据库查询连接堆栈内5个已经打开的连接执行当前5个数据库查询请求。于当前数据库查询请求的数目大于数据库查询连接堆栈内处于打开状态但未执行操作的连接的数目且小于或等于数据库查询连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用数据库查询连接堆栈内处于打开状态但未执行操作的连接,且打开并调用数据库查询连接堆栈内相应数目的处于关闭状态的连接。举例而言,若当前数据库查询请求有10个,数据库查询连接堆栈内设置的连接总数为20个,已经打开的连接数目为10个,正在执行操作的连接数目为4个,则调用数据库查询连接堆栈内6个处于打开状态但未执行操作的连接,且打开并调用4个处于关闭状态的连接。于当前数据库查询请求的数目大于数据库查询连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态连接的数目之和时,调用数据库查询连接堆栈内处于打开状态但未执行操作的连接,打开并调用数据库查询连接堆栈内全部处于关闭状态的连接,并调用其他数据库连接堆栈(例如,数据库删除连接堆栈、数据库修改连接堆栈、数据库增加连接堆栈)内的空余可用连接,若所述空余可用连接处于关闭状态,则打开并调用所述空余可用连接。举例而言,若当前数据库查询请求有10个,数据库查询连接堆栈内设置的连接总数为20个,已经打开的连接数目为18个,正在执行操作的连接数目为15个,则调用数据库查询连接堆栈内3个处于打开状态但未执行操作的连接,打开并调用2个处于关闭状态的连接,并调用数据库修改连接堆栈内5个空余可用连接。关于控制进程调用其他数据库连接堆栈内的空余可用连接的过程以数据库修改连接堆栈为例说明如下。控制进程锁定数据库修改连接堆栈,并调用数据库修改连接堆栈内相应数目的空余可用连接。于控制进程解除数据库修改连接堆栈的锁定后,上述空余可用连接执行相应数目的数据库查询请求。其中,若上述空余可用连接处于打开状态,则直接调用上述空余可用连接执行数据库查询请求;若上述空余可用连接处于关闭状态,则需先打开上述连接再执行数据库查询请求。于步骤205中,于连接执行数据库查询请求后,数据库执行进程将处于打开状态的连接放回至数据库连接堆栈,供下一次调用。于此,当数据库查询请求均由数据库查询连接堆栈内的连接执行时,数据库执行进程将执行完毕处于打开状态的连接均放回至数据库查询连接堆栈。当数据库查询请求由数据库查询连接堆栈及数据库修改连接堆栈内的连接共同执行时,数据库执行进程可将执行完毕处于打开状态的连接放回至数据库查询连接堆栈或者数据库查询连接堆栈与数据库修改连接堆栈内。然而,本发明对此并不限定。其中需要注意的是,当数据库执行进程将执行完毕处于打开状态的连接放回至数据库修改连接堆栈时,需先锁定数据库修改连接堆栈,并于放回连接后,解除对数据库修改连接堆栈的锁定。如此,数据库连接堆栈内的连接可循环使用,从而提高利用率。而且,连接一旦被打开后一直处于打开状态,从而极大程度地节省了连接打开所耗费的时间,提高了数据库的执行效率。于步骤206中,控制进程根据关闭策略关闭数据库查询连接堆栈内相应数目的处于打开状态的连接。其中,关闭策略具体描述如下。于数据库查询连接堆栈内正在执行数据库操作请求的连接数目与处于打开状态的连接数目的比值小于或等于预设值(例如, 70%)时,按照预设的百分比(例如,80%)关闭数据库查询连接堆栈内多余的处于打开状态的连接。其中,需要关闭的处于打开状态的连接的数目等于处于打开状态的连接的数目与正在执行操作的连接的数目的差值与预设的百分比的乘积。举例而言,若数据库查询连接堆栈内正在执行数据库操作请求的连接数目为60个,数据库查询连接堆栈内处于打开状态的连接数目为100个,两者的比值小于预设值(70%),则按照预设的百分比(80%)关闭数据库查询连接堆栈内32个处于打开状态的连接。于实际应用中,若经过计算得到的需要关闭的处于打开状态的连接的数目并非为整数,则将计算得到的上述数目以四舍五入的方式取整,以确定需要关闭的处于打开状态的连接的数目。举例而言,若数据库查询连接堆栈内正在执行数据库操作请求的连接数目为65个,数据库查询连接堆栈内处于打开状态的连接数目为100个,两者的比值小于预设值(70%),则按照预设的百分比(75%)关闭数据库查询连接堆栈内沈个(实际计算数值为26. 25,四舍五入取整为26)处于打开状态的连接。此外,于本实施例中,控制进程对连接的打开调用可为实时控制,对连接的关闭控制可为实时控制亦可为定时控制。例如,控制进程每隔30分钟根据关闭策略关闭数据库连接堆栈内相应数目的处于打开状态的连接。然而,本发明对此不作任何限定。图3所示为根据本发明较佳实施例提供的数据库连接的控制管理装置的示意图。 如图3所示,本实施例提供的数据库连接的控制管理装置包括调度模块300、接收模块301、 判断模块302、连接管理模块303以及控制模块304。其中,调度模块300与接收模块301 相连,判断模块302与接收模块301相连,连接管理模块303与判断模块302相连,控制模块304与连接管理模块303相连。然而,本发明并不限定于此。于本实施例中,调度模块300用于从业务逻辑进程接收数据库操作请求,并根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的接收模块301。接收模块301用于从调度模块300接收数据库操作请求。判断模块302用于判断接收到的数据库操作请求的类型。控制模块304用于根据数据库操作请求的类型及调用策略调用相应数目的连接,以执行数据库操作请求。于连接执行数据库操作请求后,连接管理模块303将处于打开状态的连接放回至数据库连接堆栈, 供下一次调用。控制模块304根据关闭策略关闭数据库连接堆栈内相应数目的处于打开状态的连接。具体过程同前所述,故于此不再赘述。综上所述,根据本发明较佳实施例提供的数据库连接的控制管理方法及装置,数据库调度进程根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程,如此,有利于负荷平衡,从而提高数据库整体执行效率。另外,通过控制进程根据调用策略及关闭策略控制数据库连接堆栈内连接的打开调用与关闭,从而提高连接的利用率。此外,通过数据库连接堆栈实现数据库连接的循环使用,同时防止建立过多数据库连接占用系统内存。而且,于连接执行数据库操作请求后,处于打开状态的连接被放回至数据库连接堆栈。如此,可循环使用已经打开的连接,从而提高连接的使用效率。另外,根据数据库操作请求的类型调用与其相对应的数据库连接堆栈内的连接,如此,对数据库操作进行分离,提高数据库执行效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据库连接的控制管理方法,其特征在于,包括以下步骤数据库调度进程从业务逻辑进程接收数据库操作请求,并根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将所述数据库操作请求发送至对应的数据库执行进程;所述对应的数据库执行进程从所述数据库调度进程接收数据库操作请求,并判断所述数据库操作请求的类型;控制进程根据所述数据库操作请求的类型及调用策略调用相应数目的连接,以执行所述数据库操作请求;于所述连接执行所述数据库操作请求后,所述数据库执行进程将所述处于打开状态的连接放回至数据库连接堆栈,供下一次调用;所述控制进程根据关闭策略关闭所述数据库连接堆栈内相应数目的处于打开状态的连接。
2.根据权利要求1所述的数据库连接的控制管理方法,其特征在于,所述关闭策略为 于数据库连接堆栈内正在执行数据库操作请求的连接数目与处于打开状态的连接数目的比值小于或等于预设值时,按照预设的百分比关闭数据库连接堆栈内多余的处于打开状态的连接。
3.根据权利要求1所述的数据库连接的控制管理方法,其特征在于,所述调用策略包括于当前数据库操作请求的数目小于或等于数据库连接堆栈内处于打开状态但未执行操作的连接的数目时,调用数据库连接堆栈内相应数目的所述处于打开状态但未执行操作的连接;于当前数据库操作请求的数目大于数据库连接堆栈内处于打开状态但未执行操作的连接的数目且小于或等于数据库连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用所述数据库连接堆栈内处于打开状态但未执行操作的连接,且打开并调用所述数据库连接堆栈内相应数目的处于关闭状态的连接;于当前数据库操作请求的数目大于数据库连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用所述数据库连接堆栈内处于打开状态但未执行操作的连接,打开并调用所述数据库连接堆栈内全部处于关闭状态的连接,并调用其他数据库连接堆栈内的空余可用连接,若所述空余可用连接处于关闭状态,则打开并调用所述空余可用连接。
4.根据权利要求1所述的数据库连接的控制管理方法,其特征在于,所述业务类型包括用户信息管理、离线信息管理以及聊天信息管理。
5.根据权利要求1所述的数据库连接的控制管理方法,其特征在于,所述数据库操作请求的类型包括查询、增加、删除及修改,所述数据库连接堆栈包括数据库查询连接堆栈、 数据库增加连接堆栈、数据库删除连接堆栈及数据库修改连接堆栈。
6.一种数据库连接的控制管理装置,其特征在于,包括调度模块,用于从业务逻辑进程接收数据库操作请求;接收模块,与所述调度模块相连,所述调度模块根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将所述数据库操作请求发送至对应的接收模块;判断模块,与所述接收模块相连,用于判断所述数据库操作请求的类型;连接管理模块,与所述判断模块相连;控制模块,与所述连接管理模块相连,用于根据所述数据库操作请求的类型及调用策略调用相应数目的连接,以执行所述数据库操作请求,于所述连接执行所述数据库操作请求后,所述连接管理模块将所述处于打开状态的连接放回至数据库连接堆栈,供下一次调用,所述控制模块根据关闭策略关闭所述数据库连接堆栈内相应数目的处于打开状态的连接。
7.根据权利要求6所述的数据库连接的控制管理装置,其特征在于,所述关闭策略为 于数据库连接堆栈内正在执行数据库操作请求的连接数目与处于打开状态的连接数目的比值小于或等于预设值时,按照预设的百分比关闭数据库连接堆栈内多余的处于打开状态的连接。
8.根据权利要求6所述的数据库连接的控制管理装置,其特征在于,所述调用策略包括于当前数据库操作请求的数目小于或等于数据库连接堆栈内处于打开状态但未执行操作的连接的数目时,调用数据库连接堆栈内相应数目的所述处于打开状态但未执行操作的连接;于当前数据库操作请求的数目大于数据库连接堆栈内处于打开状态但未执行操作的连接的数目且小于或等于数据库连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用所述数据库连接堆栈内处于打开状态但未执行操作的连接,且打开并调用所述数据库连接堆栈内相应数目的处于关闭状态的连接;于当前数据库操作请求的数目大于数据库连接堆栈内处于打开状态但未执行操作的连接的数目与处于关闭状态的连接的数目之和时,调用所述数据库连接堆栈内处于打开状态但未执行操作的连接,打开并调用所述数据库连接堆栈内全部处于关闭状态的连接,并调用其他数据库连接堆栈内的空余可用连接,若所述空余可用连接处于关闭状态,则打开并调用所述空余可用连接。
9.根据权利要求6所述的数据库连接的控制管理装置,其特征在于,所述业务类型包括用户信息管理、离线信息管理及聊天信息管理。
10.根据权利要求6所述的数据库连接的控制管理装置,其特征在于,所述数据库操作请求的类型包括查询、增加、删除及修改,所述数据库连接堆栈包括数据库查询连接堆栈、 数据库增加连接堆栈、数据库删除连接堆栈及数据库修改连接堆栈。
全文摘要
本发明提供一种数据库连接的控制管理方法及装置。上述方法包括以下步骤。数据库调度进程从业务逻辑进程接收数据库操作请求,并根据数据库操作请求的业务类型的优先级及业务类型与数据库执行进程的映射关系将数据库操作请求发送至对应的数据库执行进程。对应的数据库执行进程从数据库调度进程接收数据库操作请求,并判断数据库操作请求的类型。控制进程根据数据库操作请求的类型及调用策略调用相应数目的连接,以执行数据库操作请求。于连接执行数据库操作请求后,数据库执行进程将处于打开状态的连接放回至数据库连接堆栈,供下一次调用。控制进程根据关闭策略关闭数据库连接堆栈内相应数目的处于打开状态的连接。
文档编号G06F9/46GK102243597SQ201110161290
公开日2011年11月16日 申请日期2011年6月16日 优先权日2011年6月16日
发明者胡加明 申请人:苏州阔地网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1