双数据库连接池的动态控制方法、装置及相关设备与流程

文档序号:17762811发布日期:2019-05-24 21:51阅读:189来源:国知局
双数据库连接池的动态控制方法、装置及相关设备与流程

本发明涉及计算机技术领域,具体涉及一种双数据库连接池的动态控制方法、装置、计算机设备及存储介质。



背景技术:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。当并发用户较大时,许多相同的连接将反复地被打开和关闭,浪费了数据库大量的系统资源,降低了访问效率。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。

数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

然而,现有的数据库连接池技术中,通常都是设置一个固定的最大数据库连接数,控制请求数据库连接的数量在最大数据库连接数之内。若设置的最大数据库连接数较小,请求连接数较多,会严重影响用户的使用体验,造成用户长时间等待。若设置的最大数据库连接数较大,又会严重占用系统数据库资源,导致系统运行不稳定。



技术实现要素:

鉴于以上内容,有必要提出一种双数据库连接池的动态控制方法、装置及相关设备,能够使用双数据库连接池动态调整数据库连接,在用户请求发生变化时,根据用户的请求数动态调整临时的数据库连接,使得用户的请求及时得到响应,避免用户等待时间过长而出现异常,还可最大限度的使用数据库资源。

本发明的第一方面提供一种双数据库连接池的动态控制方法,所述方法包括:

创建第一数据库连接池和第二数据库连接池,并初始化所述第一数据库连接池的最大数据库连接数;

接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率;

判断所述第一数据库连接池的当前使用率是否大于预设数据库连接池使用率阈值;

当判断所述第一数据库连接池的当前使用率小于或者等于所述预设数据库连接池使用率阈值时,通过所述第一数据库连接池将可用的数据库连接分配给所述应用程序;

当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,通过所述第二数据库连接池创建临时数据库连接并分配给所述应用程序。

根据本发明的一个优选实施例,所述通过所述第二数据库连接池创建临时数据库连接并分配给所述应用程序包括:

获取所述应用程序的请求连接数;

通过第二数据库连接池创建对应所述请求连接数的临时数据库连接;

将所述临时数据库连接分配给所述应用程序。

根据本发明的一个优选实施例,在所述通过所述第二数据库连接池创建临时数据库连接并分配给所述应用程序之后,所述方法还包括:

当所述应用程序使用完所述临时数据库连接时,将所述第二数据库连接池中的所述临时数据库连接进行释放;或者

当所述应用程序使用完所述临时数据库连接时,经过预设时间段后将所述第二数据库连接池中的所述临时数据库连接进行释放。

根据本发明的一个优选实施例,所述接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率包括:

接收到所述应用程序的数据库连接请求时,获取所述第一数据库连接池中当前使用的数据库连接数;

根据所述当前使用的数据库连接数及所述初始化的第一数据库连接池的最大数据库连接数,计算所述第一数据库连接池的当前使用率。

根据本发明的一个优选实施例,当所述判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,所述方法还包括:

判断所述第一数据库连接池的当前使用率是否满足预设报警条件;

若确定所述第一数据库连接池的当前使用率满足所述预设报警条件,则进行报警。

根据本发明的一个优选实施例,所述预设报警条件包括:

所述第一数据库连接池的当前使用率超过同期使用率的预设比值。

根据本发明的一个优选实施例,所述初始化第一数据库连接池的最大数据库连接数包括:

获取系统配置文件中的初始配置;

将所述初始配置文件中的初始数据库连接数确定为所述第一数据库连接池中的最大数据库连接数。

本发明的第二方面提供一种双数据库连接池的动态控制装置,所述装置包括:

创建模块,用于创建第一数据库连接池和第二数据库连接池,并初始化所述第一数据库连接池的最大数据库连接数;

计算模块,用于接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率;

判断模块,用于判断所述第一数据库连接池的当前使用率是否大于预设数据库连接池使用率阈值;

第一分配模块,用于当所述判断模块判断所述第一数据库连接池的当前使用率小于或者等于所述预设数据库连接池使用率阈值时,通过所述第一数据库连接池将可用的数据库连接分配给所述应用程序;

第二分配模块,用于当所述判断模块判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,通过所述第二数据库连接池创建临时数据库连接并分配给所述应用程序。

本发明的第三方面提供一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述的双数据库连接池的动态控制方法。

本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的双数据库连接池的动态控制方法。

本发明实施例提供的双数据库连接池的动态控制方法、装置、计算机设备及存储介质,预先创建第一数据库连接池和第二数据库连接池,并初始化第一数据库连接池的最大数据库连接数;当接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率;在所计算的第一数据库连接池的当前使用率小于或者等于预设数据库连接池使用率阈值时,直接通过第一数据库连接池将可用的数据库连接分配给所述应用程序即可;而当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,通过第二数据库连接池创建临时的数据库连接分配给所述应用程序。能够根据系统的配置初始化最大数据库连接数,既能保证系统正常运行,又可最大限度的使用系统资源。在用户请求发生变化时,还可根据用户的请求数动态调整临时的数据库连接,使得用户的请求及时得到响应,避免用户等待时间过长而出现异常。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例一提供的双数据库连接池的动态控制方法的流程图。

图2是本发明实施例二提供的双数据库连接池的动态控制装置的功能模块图。

图3是本发明实施例三提供的计算机设备的示意图。

如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本发明实施例的双数据库连接池的动态控制方法应用在计算机设备中,也可以应用在计算机设备和通过网络与所述计算机设备进行连接的服务器所构成的硬件环境中,由服务器和计算机设备共同执行。网络包括但不限于:广域网、城域网或局域网。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算计算机设备。

所述对于需要进行双数据库连接池的动态控制方法的计算机设备,可以直接在计算机设备上集成本发明的方法所提供的双数据库连接池的动态控制功能,或者安装用于实现本发明的方法的客户端。再如,本发明所提供的方法还可以以软件开发工具包(softwaredevelopmentkit,sdk)的形式运行在服务器等计算机设备上,以sdk的形式提供双数据库连接池的动态控制功能的接口,服务器或其他计算机设备通过提供的接口即可实现双数据库连接池的动态控制功能。

在阐述本发明实施例之前,先对本发明实施例中引用的以下名词进行解释:

数据库:用来永久或临时存放业务数据、系统数据的软件系统及其数据,包括但不仅限于oracle、mysql、sqlserver、tair、oceanbase等软件系统。

数据库连接:应用程序和数据库交互时,需要根据一定的通信协议建立一个通道,所述通道称之为数据库连接。

数据库连接池:是在系统初始化的时候,将数据库连接作为对象存储在内存中,当有应用程序请求访问数据库时,并非建立一个新的数据库连接,而是从数据库连接池中取出一个已建立的空闲连接对象。当应用程序使用完毕后,也并非将数据库连接关闭,而是将数据库连接放回连接池中,以供下一个请求访问使用。

实施例一

图1是本发明实施例一提供的一种双数据库连接池的动态控制方法,所述双数据库连接池的动态控制方法对计算机设备当前的数据库连接池指标进行监控,并根据监控到的数据库连接池使用率对双数据库连接池进行动态控制。根据不同的需求,该流程图中的执行顺序可以改变,某些步骤可以省略。

s11:创建第一数据库连接池和第二数据库连接池,并初始化第一数据库连接池的最大数据库连接数。

本实施例中,在应用服务器开启后,可以创建两个数据库连接池,第一数据库连接池可以作为常用的数据库连接池,第二数据库连接池可以作为临时的数据库连接池。常用的数据库连接池中创建的数据库连接数是固定的,即一旦数据库连接被创建之后,无论数据库连接是否被应用程序占用,都将一直存在于所述第一数据库连接池中,直到所述应用程序服务器关闭。对于临时数据库连接池而言,起始池内数据库连接数为零,即没有创建数据库连接。当常用数据库连接池内的数据库连接不能满足需求时,再创建第二数据库连接池中的数据库连接数。因而,第二数据库连接池中的数据库连接数是动态变化的。

具体的,所述初始化第一数据库连接池的最大数据库连接数可以包括:获取系统配置文件中的初始配置,将所述初始配置文件中的初始数据库连接数确定为所述第一数据库连接池中的最大数据库连接数。

本实施例中的系统为计算机系统,所述该计算机系统由计算机硬件和软件两部分组成。硬件部分可以包括中央处理机、存储器和外部设备等,软件部分可以是计算机运行的各类应用程序和相应的文档。计算机系统可以接收和存储信息、按程序快速计算和判断并输出处理结果。其中,配置文件一般储存在系统的本地硬盘驱动器上,通常可以包括用户使用系统时的设置和文件的集合等。

本实施例中的配置文件可以包括初始配置文件及中间配置文件,其中,初始配置文件可以是系统在开发阶段预先设置的文件,中间配置文件可以是系统运行一段时间后产生的历史文件。该初始配置文件中存储有预先设置的初始数据库连接数,该初始数据库连接数可以是开发人员根据系统的硬件配置,确定的一个确保系统能够承载的合理值,即同一时刻可同时处理的并发请求数。因而,可以将初始配置文件中的初始数据库连接数提取出来,作为系统当前最大数据库连接数。

s12:接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率。

本实施例中,所述接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率可以包括:

接收到所述应用程序的数据库连接请求时,获取第一数据库连接池中当前使用的数据库连接数;

根据所述当前使用的数据库连接数及所述初始化的第一数据库连接池的最大数据库连接数,计算所述第一数据库连接池的当前使用率。

当应用程序需要进行数据库操作时,可向系统申请数据库连接。系统接收到所述应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率。

具体计算公式为:

第一数据库连接池的当前使用率=(当前第一数据库连接池中使用的数据库连接数/第一数据库连接池的最大数据库连接数)*100%。

s13:判断所述第一数据库连接池的当前使用率是否大于预设数据库连接池使用率阈值。

本实施例中,所述预设数据库连接池使用率阈值为预先设置的数据库连接池使用的最大的数据库连接数的临界值,是能够保证系统正常且稳定运行的最佳值,既能最大限度的使用数据库资源,又不会造成系统卡死。示例性的,所述预设数据库连接池使用率阈值为80%。

当判断所述第一数据库连接池的当前使用率小于或者等于所述预设数据库连接池使用率阈值时,执行s14。当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,执行s15。

s14:通过第一数据库连接池将可用的数据库连接分配给所述应用程序。

本实施例中,当判断所述第一数据库连接池的当前使用率小于或者等于所述预设数据库连接池使用率阈值时,表明第一数据库连接池还存在有可用的数据库连接,可将可用的数据库连接分配给请求数据库连接的应用程序。

可以通过判断第一数据库连接池中的数据库连接是否被应用程序占用判断第一数据库连接池中的应用程序是否可用,当数据库连接被应用程序占用时,认为被占用的数据库连接处于繁忙状态,不可再被其他应用程序使用;当数据库连接没有被应用程序占用时,认为未被占用的数据库连接处于空闲状态,可分配给其他应用程序使用。

s15:通过第二数据库连接池创建临时数据库连接并分配给所述应用程序。

当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,表明第一数据库连接池已接近或达到了满负荷状态,不可再分配数据库连接给请求数据库连接的应用程序。此时,可以通过第二数据库连接池创建临时数据库连接,并将创建的临时数据库连接分配给请求数据库连接的应用程序。

进一步的,所述通过第二数据库连接池创建临时数据库连接并分配给所述应用程序还可以包括:

获取所述应用程序的请求连接数;

通过第二数据库连接池创建对应所述请求连接数的临时数据库连接;

将所述临时数据库连接分配给所述应用程序。

本实施例中,所述应用程序的数据库连接请求中携带有请求连接数,根据所述请求连接数创建对应的临时数据库连接。示例性的,应用程序的请求连接数为3,则通过第二数据库创建3个临时的数据库连接分配给所述应用程序。

更进一步的,在所述通过第二数据库连接池创建临时数据库连接并分配给所述应用程序之后,所述双数据库连接池的动态控制方法还可以包括:

当所述应用程序使用完所述临时数据库连接时,将第二数据库连接池中的所述临时数据库连接进行释放;或者

当所述应用程序使用完所述临时数据库连接时,经过预设时间段后将第二数据库连接池中的所述临时数据库连接进行释放。

当有连接请求时,通过第二数据库连接池创建临时数据库连接,当这些临时数据库连接使用完后,释放临时数据库连接。既能保证请求快速的得到响应,又能在临时数据库连接使用完及时的释放,保证最大限度的节约系统数据库资源,防止无限制的资源分配而导致系统崩溃。

在预设时间段后释放第二数据库连接池中的数据库连接,即新建的临时连接并非被使用结束后立即释放,若在所述预设时间段内有新的数据库连接请求到来时,将临时数据库连接分配给新的数据库连接请求的应用程序,避免第二数据库频繁的创建释放临时数据库连接,浪费系统资源。

进一步地,所述双数据库连接池的动态控制方法还可以包括:每隔预设时间段获取所述第一数据库连接池的当前使用率。

可以是周期性的获取第一数据库连接池的当前使用率,示例的,可以每间隔5分钟获取当前第一数据库连接池的当前使用率,在获取第一数据库连接池的当前使用率之前,可以先检测第一数据库连接池当前是否存在被占用的数据库连接,如果存在,则获取第一数据库连接池的当前使用率;如果不存在,则等待下一周期。

本发明实施例中,对于周期的具体时间不作限定,具体实现的时候,可以根据实际需求来设定。设定合理的周期时长,可以避免频繁创建或销毁数据库连接影响系统工作的问题。

进一步地,当判断第一数据库连接池的当前使用率大于预设数据库连接池使用率阈值时,所述双数据库连接池的动态控制方法还可以包括:判断第一数据库连接池的当前使用率是否满足预设报警条件;若确定第一数据库连接池的当前使用率满足预设报警条件,则进行报警。

在一些实施例中,所述预设报警条件可以是数据库连接使用率大于预设数据库连接池使用率阈值。当确定第一数据库连接池的当前使用率大于预设数据库连接池使用率阈值时,认为满足了报警条件,进行报警;当确定第一数据库连接池的当前使用率小于或者等于预设数据库连接池使用率阈值时,认为没有满足报警条件,不进行报警。

数据库连接池的当前使用率=(当前数据库连接数/最大数据库连接数)*100%。

由于应用可连接数据库的数量是有限的,是可以通过配置文件参数进行控制。通过预先设置最高的数据库连接池使用率临界值,实时监控数据库连接池使用率,在数据库连接池使用率高于最高的数据库连接池使用率临界值,尤其是数据库连接池使用率趋于100%的情况下,需进行报警。数据库连接池使用率过高,表明数据库连接数过多,需要应用运维及时干预处理,避免数据库连接数过高、业务增长过快有可能导致系统出现异常。

在一些实施例中,所述预设报警条件可以是将第一数据库连接池的当前使用率与同期数据进行比较,根据比较结果确定是否报警。例如,将周一上午10:00得到的第一数据库连接池的当前使用率与上周一上午10:00得到的第一数据库连接池的使用率进行比较,若周一上午10:00得到的第一数据库连接池的当前使用率超过上周一上午10:00得到的第一数据库连接池的使用率的20%,则进行报警。

通过同比第一数据库连接池的使用率,可以确定系统当前的运行状态,一般而言,若无重大事故发生,系统的数据库连接池的使用率应当保持较平稳的状态,若第一数据库连接池的当前使用率超过同期的使用率,认为系统当前有异常发生,需要提醒开发人员进行检测。

所述报警可以通过发出警报声、显示报警画面、发送报警消息、发送报警邮件等方式进行报警。

综上所述,本发明实施例一提供的双数据库连接池的动态控制方法,可以预先创建第一数据库连接池和第二数据库连接池,并初始化第一数据库连接池的最大数据库连接数;当接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率;在所计算的第一数据库连接池的当前使用率小于或者等于预设数据库连接池使用率阈值时,直接通过第一数据库连接池将可用的数据库连接分配给所述应用程序即可;而当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,通过第二数据库连接池创建临时的数据库连接分配给所述应用程序。能够根据系统的配置初始化最大数据库连接数,既能保证系统正常运行,又可最大限度的使用系统资源。在用户请求发生变化时,还可根据用户的请求数动态调整临时的数据库连接,使得用户的请求及时得到响应,避免用户等待时间过长而出现异常。

其次,在数据库连接通过连接池管理的模式中,当用户需要进行数据库操作时,从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。第二数据库连接池中的数据库连接使用完后,在预设时间段后对数据库连接进行释放,可有效的减少释放数据库连接的开销,避免刚释放连接又重新建立新连接,从而不必频繁的建立释放数据库连接而浪费系统资源。

以上所述,仅是本发明的具体实施方式,但本发明的保护范围并不局限于此,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。

下面结合第2至3图,分别对实现上述双数据库连接池的动态控制方法的计算机设备的功能模块及硬件结构进行介绍。

实施例二

图2为本发明双数据库连接池的动态控制装置较佳实施例中的功能模块图。

在一些实施例中,所述双数据库连接池的动态控制装置20运行于计算机设备中。所述双数据库连接池的动态控制装置20对计算机设备当前的数据库连接池指标进行监控,并根据监控到的数据库连接池使用率对双数据库连接池进行动态控制。所述双数据库连接池的动态控制装置20可以包括多个由程序代码段所组成的功能模块。所述双数据库连接池的动态控制装置20中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行。

本实施例中,所述双数据库连接池的动态控制装置20根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:创建模块201、计算模块202、判断模块203、第一分配模块204、第二分配模块205、释放模块206、获取模块207及报警模块208。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。

创建模块201,用于创建第一数据库连接池和第二数据库连接池,并初始化第一数据库连接池的最大数据库连接数。

本实施例中,在应用服务器开启后,可以创建两个数据库连接池,第一数据库连接池可以作为常用的数据库连接池,第二数据库连接池可以作为临时的数据库连接池。常用的数据库连接池中创建的数据库连接数是固定的,即一旦数据库连接被创建之后,无论数据库连接是否被应用程序占用,都将一直存在于所述第一数据库连接池中,直到所述应用程序服务器关闭。对于临时数据库连接池而言,起始池内数据库连接数为零,即没有创建数据库连接。当常用数据库连接池内的数据库连接不能满足需求时,再创建第二数据库连接池中的数据库连接数。因而,第二数据库连接池中的数据库连接数是动态变化的。

具体的,所述初始化第一数据库连接池的最大数据库连接数可以包括:获取系统配置文件中的初始配置,将所述初始配置文件中的初始数据库连接数确定为所述第一数据库连接池中的最大数据库连接数。

本实施例中的系统为计算机系统,所述计算机系统由计算机硬件和软件两部分组成。硬件部分可以包括中央处理机、存储器和外部设备等,软件部分可以是计算机运行的各类应用程序和相应的文档。计算机系统可以接收和存储信息、按程序快速计算和判断并输出处理结果。其中,配置文件一般储存在系统的本地硬盘驱动器上,通常可以包括用户使用系统时的设置和文件的集合等。

本实施例中的配置文件可以包括初始配置文件及中间配置文件,其中,初始配置文件可以是系统在开发阶段预先设置的文件,中间配置文件可以是系统运行一段时间后产生的历史文件。该初始配置文件中存储有预先设置的初始数据库连接数,该初始数据库连接数可以是开发人员根据系统的硬件配置,确定的一个确保系统能够承载的合理值,即同一时刻可同时处理的并发请求数。因而,可以将初始配置文件中的初始数据库连接数提取出来,作为系统当前最大数据库连接数。

计算模块202,用于接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率。

本实施例中,所述计算模块202接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率可以包括:

接收到所述应用程序的数据库连接请求时,获取第一数据库连接池中当前使用的数据库连接数;

根据所述当前使用的数据库连接数及所述初始化的第一数据库连接池的最大数据库连接数,计算所述第一数据库连接池的当前使用率。

当应用程序需要进行数据库操作时,可向系统申请数据库连接。系统接收到所述应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率。

具体计算公式为:

第一数据库连接池的当前使用率=(当前第一数据库连接池中使用的数据库连接数/第一数据库连接池的最大数据库连接数)*100%。

判断模块203,用于判断所述第一数据库连接池的当前使用率是否大于预设数据库连接池使用率阈值。

本实施例中,所述预设数据库连接池使用率阈值为预先设置的数据库连接池使用的最大的数据库连接数的临界值,是能够保证系统正常且稳定运行的最佳值,既能最大限度的使用数据库资源,又不会造成系统卡死。示例性的,所述预设数据库连接池使用率阈值为80%。

第一分配模块204,用于当所述判断模块203判断所述第一数据库连接池的当前使用率小于或者等于预设数据库连接池使用率阈值时,通过第一数据库连接池将可用的数据库连接分配给所述应用程序。

本实施例中,当判断所述第一数据库连接池的当前使用率小于或者等于所述预设数据库连接池使用率阈值时,表明第一数据库连接池还存在有可用的数据库连接,可将可用的数据库连接分配给请求数据库连接的应用程序。

可以通过判断第一数据库连接池中的数据库连接是否被应用程序占用判断第一数据库连接池中的应用程序是否可用,当数据库连接被应用程序占用时,认为被占用的数据库连接处于繁忙状态,不可再被其他应用程序使用;当数据库连接没有被应用程序占用时,认为未被占用的数据库连接处于空闲状态,可分配给其他应用程序使用。

第二分配模块205,用于当所述判断模块203判断所述第一数据库连接池的当前使用率大于预设数据库连接池使用率阈值时,通过第二数据库连接池创建临时数据库连接并分配给所述应用程序。

当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,表明第一数据库连接池已接近或达到了满负荷状态,不可再分配数据库连接给请求数据库连接的应用程序。此时,可以通过第二数据库连接池创建临时数据库连接,并将创建的临时数据库连接分配给请求数据库连接的应用程序。

进一步的,第二分配模块205通过第二数据库连接池创建临时数据库连接并分配给所述应用程序还可以包括:

获取所述应用程序的请求连接数;

通过第二数据库连接池创建对应所述请求连接数的临时数据库连接;

将所述临时数据库连接分配给所述应用程序。

本实施例中,所述应用程序的数据库连接请求中携带有请求连接数,根据所述请求连接数创建对应的临时数据库连接。示例性的,应用程序的请求连接数为3,则通过第二数据库创建3个临时的数据库连接分配给所述应用程序。

更进一步的,在第二分配模块205通过第二数据库连接池创建临时数据库连接并分配给所述应用程序之后,所述双数据库连接池的动态控制装置20还可以包括:释放模块206,用于

当所述应用程序使用完所述临时数据库连接时,将第二数据库连接池中的所述临时数据库连接进行释放;或者

当所述应用程序使用完所述临时数据库连接时,经过预设时间段后将第二数据库连接池中的所述临时数据库连接进行释放。

当有连接请求时,通过第二数据库连接池创建临时数据库连接,当这些临时数据库连接使用完后,释放临时数据库连接。既能保证请求快速的得到响应,又能在临时数据库连接使用完及时的释放,保证最大限度的节约系统数据库资源,防止无限制的资源分配而导致系统崩溃。

在预设时间段后释放第二数据库连接池中的数据库连接,即新建的临时连接并非被使用结束后立即释放,若在所述预设时间段内有新的数据库连接请求到来时,将临时数据库连接分配给新的数据库连接请求的应用程序,避免第二数据库频繁的创建释放临时数据库连接,浪费系统资源。

进一步地,所述双数据库连接池的动态控制装置20还可以包括:获取模块207,用于每隔预设时间段获取所述第一数据库连接池的当前使用率。

可以是周期性的获取第一数据库连接池的当前使用率,示例的,可以每间隔5分钟获取当前第一数据库连接池的当前使用率,在获取第一数据库连接池的当前使用率之前,可以先检测第一数据库连接池当前是否存在被占用的数据库连接,如果存在,则获取第一数据库连接池的当前使用率;如果不存在,则等待下一周期。

本发明实施例中,对于周期的具体时间不作限定,具体实现的时候,可以根据实际需求来设定。设定合理的周期时长,可以避免频繁创建或销毁数据库连接影响系统工作的问题。

进一步地,当判断第一数据库连接池的当前使用率大于预设数据库连接池使用率阈值时,所述双数据库连接池的动态控制装置20还可以包括:报警模块208,用于判断第一数据库连接池的当前使用率是否满足预设报警条件;若确定第一数据库连接池的当前使用率满足预设报警条件,则进行报警。

在一些实施例中,所述预设报警条件可以是数据库连接使用率大于预设数据库连接池使用率阈值。当确定第一数据库连接池的当前使用率大于预设数据库连接池使用率阈值时,认为满足了报警条件,进行报警;当确定第一数据库连接池的当前使用率小于或者等于预设数据库连接池使用率阈值时,认为没有满足报警条件,不进行报警。

数据库连接池的当前使用率=(当前数据库连接数/最大数据库连接数)*100%。

由于应用可连接数据库的数量是有限的,是可以通过配置文件参数进行控制。通过预先设置最高的数据库连接池使用率临界值,实时监控数据库连接池使用率,在数据库连接池使用率高于最高的数据库连接池使用率临界值,尤其是数据库连接池使用率趋于100%的情况下,需进行报警。数据库连接池使用率过高,表明数据库连接数过多,需要应用运维及时干预处理,避免数据库连接数过高、业务增长过快有可能导致系统出现异常。

在一些实施例中,所述预设报警条件可以是将第一数据库连接池的当前使用率与同期数据进行比较,根据比较结果确定是否报警。例如,将周一上午10:00得到的第一数据库连接池的当前使用率与上周一上午10:00得到的第一数据库连接池的使用率进行比较,若周一上午10:00得到的第一数据库连接池的当前使用率超过上周一上午10:00得到的第一数据库连接池的使用率的20%,则进行报警。

通过同比第一数据库连接池的使用率,可以确定系统当前的运行状态,一般而言,若无重大事故发生,系统的数据库连接池的使用率应当保持较平稳的状态,若第一数据库连接池的当前使用率超过同期的使用率,认为系统当前有异常发生,需要提醒开发人员进行检测。

所述报警可以通过发出警报声、显示报警画面、发送报警消息、发送报警邮件等方式进行报警。

综上所述,本发明实施例二提供的双数据库连接池的动态控制装置,可以预先创建第一数据库连接池和第二数据库连接池,并初始化第一数据库连接池的最大数据库连接数;当接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率;在所计算的第一数据库连接池的当前使用率小于或者等于预设数据库连接池使用率阈值时,直接通过第一数据库连接池将可用的数据库连接分配给所述应用程序即可;而当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,通过第二数据库连接池创建临时的数据库连接分配给所述应用程序。能够根据系统的配置初始化最大数据库连接数,既能保证系统正常运行,又可最大限度的使用系统资源。在用户请求发生变化时,还可根据用户的请求数动态调整临时的数据库连接,使得用户的请求及时得到响应,避免用户等待时间过长而出现异常。

其次,在数据库连接通过连接池管理的模式中,当用户需要进行数据库操作时,从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。第二数据库连接池中的数据库连接使用完后,在预设时间段后对数据库连接进行释放,可有效的减少释放数据库连接的开销,避免刚释放连接又重新建立新连接,从而不必频繁的建立释放数据库连接而浪费系统资源。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机计算机设备(可以是个人计算机,双屏计算机设备,或者网络计算机设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。

实施例三

图3为本发明实施例三提供的计算机设备的示意图。

所述计算机设备3包括:存储器31、至少一个处理器32、存储在所述存储器31中并可在所述至少一个处理器32上运行的计算机程序33及至少一条通讯总线34。

所述至少一个处理器32执行所述计算机程序33时实现上述双数据库连接池的动态控制方法实施例中的步骤。

具体的,所述至少一个处理器32执行所述计算机程序33时实现所述双数据库连接池的动态控制方法实施例中的步骤包括:

创建第一数据库连接池和第二数据库连接池,并初始化所述第一数据库连接池的最大数据库连接数;

接收到应用程序的数据库连接请求时,计算所述第一数据库连接池的当前使用率;

判断所述第一数据库连接池的当前使用率是否大于预设数据库连接池使用率阈值;

当判断所述第一数据库连接池的当前使用率小于或者等于所述预设数据库连接池使用率阈值时,通过所述第一数据库连接池将可用的数据库连接分配给所述应用程序;

当判断所述第一数据库连接池的当前使用率大于所述预设数据库连接池使用率阈值时,通过所述第二数据库连接池创建临时数据库连接并分配给所述应用程序。

示例性的,所述计算机程序33可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中(例如,创建模块201、计算模块202、判断模块203、第一分配模块204、第二分配模块205、释放模块206、获取模块207及报警模块208),并由所述至少一个处理器32执行。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序33在所述计算机设备3中的执行过程。

所述计算机设备3可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算计算机设备。本领域技术人员可以理解,所述示意图3仅仅是计算机设备3的示例,并不构成对计算机设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备3还可以包括输入输出计算机设备、网络接入计算机设备、总线等。

所述至少一个处理器32可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。该处理器32可以是微处理器或者该处理器32也可以是任何常规的处理器等,所述处理器32是所述计算机设备3的控制中心,利用各种接口和线路连接整个计算机设备3的各个部分。

所述存储器31可用于存储所述计算机程序33和/或模块/单元,所述处理器32通过运行或执行存储在所述存储器31内的计算机程序和/或模块/单元,以及调用存储在存储器31内的数据,实现所述计算机设备3的各种功能。所述存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备3的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述计算机设备3集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

在本发明所提供的几个实施例中,应该理解到,所揭露的服务器和方法,可以通过其它的方式实现。例如,以上所描述的服务器实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

另外,在本发明各个实施例中的各功能单元可以集成在相同处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在相同单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1