用于数据库连接池的资源分配方法和装置的制造方法

文档序号:9708319阅读:475来源:国知局
用于数据库连接池的资源分配方法和装置的制造方法
【技术领域】
[0001] 本申请涉及数据库领域,具体而言,涉及一种用于数据库连接池的资源分配方法 和装置。
【背景技术】
[0002] 在分布式环境下,应用系统需要对外提供多种服务,这些服务大多需要访问数据 库。在相关技术中,为了使应用系统能够快速访问数据库中的数据,通常采用数据库连接池 机制来实现应用系统和数据库之间的连接:当应用系统需要与数据库通信时,需要先检查 数据库连接池中是否有可用的数据库连接(即,空闲数据库连接);如果该数据库连接池中 有可用的数据库连接,则直接使用可用的数据库连接来实现上述通信;如果该数据库连接 池中没有可用的数据库连接,则需要实时创建新的数据库连接,并使用新创建的数据库连 接来实现上述通信。
[0003] 虽然上述数据库连接池机制避免了建立大量数据库连接所花费的时间代价,提升 了应用系统的性能,但是该机制缺乏对sql (Structured Query Language,结构化查询语 言)运行状况的监控管理。这样,每当应用系统需要访问数据库时,数据库都会直接给予 连接,导致某些由于运维故障或者数据不断积累等原因而运行越来越慢的sql在获得连接 后,难以释放连接,从进而导致数据库连接池中的资源耗尽,使得其他需要访问数据库的应 用系统无法正常对外提供服务。
[0004] 针对相关技术中数据库连接池机制在执行数据库连接分配时,容易导致数据库连 接池中的资源耗尽的问题,目前尚未提出有效的解决方案。
[0005] 申请内容
[0006] 本申请的主要目的在于提供一种用于数据库连接池的资源分配方法和装置,以解 决相关技术中数据库连接池机制在执行数据库连接分配时,容易导致数据库连接池中的资 源耗尽的问题。
[0007] 为了实现上述目的,根据本申请的一个方面,提供了一种用于数据库连接池的资 源分配方法,该方法包括:接收客户端发送的数据库访问请求;以及根据所述数据库访问 请求的历史执行结果判断是否允许将数据库连接池中空闲的数据库连接分配给所述客户 端。
[0008] 进一步地,根据所述数据库访问请求的历史执行结果判断是否允许将数据库连接 池中空闲的数据库连接分配给所述客户端包括:从所述历史执行结果中获取已执行的所述 数据库访问请求的执行结果属性;以及根据所述执行结果属性判断是否允许将数据库连接 池中空闲的数据库连接分配给所述客户端。
[0009] 进一步地,所述执行结果属性包括:执行时间,根据所述执行结果属性判断是否允 许将数据库连接池中空闲的数据库连接分配给所述客户端包括:从已执行的所述数据库访 问请求中获取执行时间超过第一预定时间阈值的数据库访问请求的第一个数;以及若所述 第一个数小于第一数量阈值,则判断出允许将所述数据库连接池中空闲的数据库连接分配 给所述客户端。
[0010] 进一步地,所述执行结果属性包括:出错率,根据所述执行结果属性判断是否允许 将数据库连接池中空闲的数据库连接分配给所述客户端包括:从已执行的所述数据库访问 请求中获取出现执行错误的数据库访问请求的第一比例;以及若所述第一比例小于第一比 例阈值,则判断出允许将所述数据库连接池中空闲的数据库连接分配给所述客户端。
[0011] 进一步地,所述执行结果属性包括:执行时间和出错率,根据所述执行结果属性判 断是否允许将数据库连接池中空闲的数据库连接分配给所述客户端包括:从已执行的所述 数据库访问请求中获取执行时间超过第一预定时间阈值的数据库访问请求的第一个数、且 从已执行的所述数据库访问请求中获取出现执行错误的数据库访问请求的第一比例;以及 若所述第一个数小于第一数量阈值、且所述第一比例小于第一比例阈值,则判断出允许将 所述数据库连接池中空闲的数据库连接分配给所述客户端。
[0012] 进一步地,在判断出允许将所述数据库连接池中空闲的数据库连接分配给所述客 户端之后,所述资源分配方法还包括:创建数据库访问请求白名单;以及将允许将所述数 据库连接池中空闲的数据库连接分配给所述客户端的数据库访问请求存储至所述数据库 访问请求白名单中。
[0013] 进一步地,所述执行结果属性包括:执行时间,根据所述执行结果属性判断是否允 许将数据库连接池中空闲的数据库连接分配给所述客户端包括:从已执行的所述数据库访 问请求中获取执行时间超过第二预定时间阈值的数据库访问请求的第二个数;判断已执行 的所述数据库访问请求中由所述客户端发送的所述数据库访问请求的执行结果是否满足 预定条件;以及若所述第二个数小于第二数量阈值、且所述执行结果满足所述预定条件,则 判断出允许将所述数据库连接池中空闲的数据库连接分配给所述客户端。
[0014] 进一步地,判断已执行的所述数据库访问请求中由所述客户端发送的所述数据库 访问请求的执行结果是否满足预定条件包括:从已执行的所述数据库访问请求中由所述客 户端发送的所述数据库访问请求中获取执行时间超过第三预定时间阈值的数据库访问请 求的第三个数;若所述第三个数小于第三数量阈值,则判断出所述已执行的所述数据库访 问请求中由所述客户端发送的所述数据库访问请求的执行结果满足所述预定条件。
[0015] 进一步地,所述执行结果属性包括:出错率,根据所述执行结果属性判断是否允许 将数据库连接池中空闲的数据库连接分配给所述客户端包括:从已执行的所述数据库访问 请求中获取出现执行错误的数据库访问请求的第二比例;判断已执行的所述数据库访问请 求中由所述客户端发送的所述数据库访问请求的执行结果是否满足预定条件;以及若所述 第二比例小于第二比例阈值、且所述执行结果满足所述预定条件,则判断出允许将所述数 据库连接池中空闲的数据库连接分配给所述客户端。
[0016] 进一步地,判断已执行的所述数据库访问请求中由所述客户端发送的所述数据库 访问请求的执行结果是否满足预定条件包括:从已执行的所述数据库访问请求中由所述客 户端发送的所述数据库访问请求中获取出现执行错误的数据库访问请求的第三比例;以及 若所述第三比例小于第三比例阈值,则判断出所述已执行的所述数据库访问请求中由所述 客户端发送的所述数据库访问请求的执行结果满足所述预定条件。
[0017] 进一步地,所述执行结果属性包括:执行时间和出错率,根据所述执行结果属性判 断是否允许将数据库连接池中空闲的数据库连接分配给所述客户端包括:从已执行的所述 数据库访问请求中获取执行时间超过第二预定时间阈值的数据库访问请求的第二个数;从 已执行的所述数据库访问请求中获取出现执行错误的数据库访问请求的第二比例;判断已 执行的所述数据库访问请求中由所述客户端发送的所述数据库访问请求的执行结果是否 满足预定条件;以及若所述第二个数小于第二数量阈值、且所述比例小于第二比例阈值以 及所述执行结果满足所述预定条件,则判断出允许将数据库连接池中空闲的数据库连接分 配给所述客户端。
[0018] 进一步地,判断已执行的所述数据库访问请求中由所述客户端发送的所述数据库 访问请求的执行结果是否满足预定条件包括:从已执行的所述数据库访问请求中由所述客 户端发送的所述数据库访问请求中获取执行时间超过第三预定时间阈值的数据库访问请 求的第三个数;从已执行的所述数据库访问请求中由所述客户端发送的所述数据库访问请 求中获取出现执行错误的数据库访问请求的第三比例;以及若所述第三个数小于第三数量 阈值、且所述第三比例小于第三比例阈值,则判断出所述已执行的所述数据库访问请求中 由所述客户端发送的所述数据库访问请求的执行结果满足所述预定条件。
[0019] 进一步地,在判断出允许将所述数据库连接池中空闲的数据库连接分配给所述客 户端之后,所述资源分配方法还包括:创建客户端白名单;以及将被允许分配所述数据库 连接池中空闲的数据库连接的客户端存储至客户端白名单中。
[0020] 为了实现上述目的,根据本申请的另一方面,提供了一种用于数据库连接池的资 源分配装置,该装置包括:接收单元,用于接收客户端发送的数据库访问请求;以及判断单 元,用于根据所述数据库访问请求的历史执行结果判断是否允许将数据库连接池中空闲的 数据库连接分配给所述客户端。
[0021] 进一步地,所述判断单元包括:获取模块,用于从所述历史执行结果中获取已执行 的所述数据库访问请求的执行结果属性;以及判断模块,用于根据所述执行结果属性判断 是否允许将数据库连接池中空闲的数据库连接分配给所述客户端。
[0022] 通过本申请,采用接收客户端发送的数据库访问请求;根据数据库访问请求的历 史执行结果判断是否允许将数据库连接池中空闲的数据库连接分配给客户端,由于可以通 过历史执行结果对数据库访问请求进行筛选,仅仅将空闲的数据库连接分配给历史表现良 好的数据库访问请求,而不对历史表现差的数据库访问请求分配数据库连接,因此可以防 止历史表现差的数据库访问请求占用数据库连接,节约数据库连接资源,达到了防止数据 库连接池中的资源耗尽的效果。
【附图说明】
[0023] 构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实 施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0024] 图1是根据本申请实施例的用于数据库连接池的资源分配方法的流程图;
[0025] 图2是根据本申请实施例的动态分配数据库连接池中的资源的系统架构图;以及
[0026] 图3是根据本申请实施例的用于数据库连接池的资源分配装置的示意图。
【具体实施方式】
[0027] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本申请。
[0028] 为了使本领域的技术人员更好的理解本申请方案,下面将结合本申请实施例中的 附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是 本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,在本领域普通技 术人员没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请的保护范 围。
[0029] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语"第一"、"第 二"等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用 的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或 描述的那些以外的顺序实施。此外,术语"包括"和"具有"以及他们的任何变形,意图在于 覆盖不排他的包含。
[0030] 根据本申请的实施例,提供了一种用于数据库连接池的资源分配方法,该用于数 据库连接池的资源分配方法可以运行在计算机处理设备上。需要说明的是,在本申请实施 例中,附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行, 并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行 所示出或描述的步骤。
[0031] 在详细阐述本申请之前,先对本申请中引用的以下名词进行解释:
[0032] 数据库:用来永久或监时存放业务数据、系统数据的软件系统及其数据,包括但不 仅限于 Oracle、MySQL、SQL Server、Tair、Ocea
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1