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

文档序号:9708319阅读:来源:国知局
可以通过历史执行结果对数据库访问请求进行筛选, 仅仅将空闲的数据库连接分配给历史表现良好的数据库访问请求,而不对历史表现差的数 据库访问请求分配数据库连接,因此可以防止历史表现差的数据库访问请求占用数据库连 接,节约数据库连接资源,达到了防止数据库连接池中的资源耗尽的效果。
[0101] 优选地,在本申请实施例中,判断单元可以包括:获取模块和判断模块。
[0102] 获取模块用于从历史执行结果中获取已执行的数据库访问请求的执行结果属性, 其中,执行结果属性包括:执行时间和/或出错率,具体地,可以获取一段时间内已执行的 数据库访问请求的执行结果属性,其中,执行结果属性与数据库访问请求一一对应。执行时 间包括执行时间的起始点和执行时间的时长。出错率是指在一段时间内,同一数据库访问 请求在执行时出错的次数和被执行的总次数的比值。
[0103] 判断模块用于根据执行结果属性判断是否允许将数据库连接池中空闲的数据库 连接分配给客户端。具体地,可以将执行结果属性进行分类存储,如果执行结果属性满足分 配条件,则将其存储在第一列表(如,数据库访问请求白名单)中;如果执行结果属性不满 足分配条件,则将其存储在第二列表(如,数据库访问请求黑名单)中。其中,如果判断出 执行结果存储在第一列表中,则允许将数据库连接池中空闲的数据库连接分配给客户端; 如果判断出执行结果存储在第二列表中,则不允许将数据库连接池中空闲的数据库连接分 配给客户端。
[0104] 通过本申请实施例,采用执行结果属性(即,执行时间和/或出错率)来判断是否 允许将数据库连接池中空闲的数据库连接分配给客户端,由于执行时间和/或出错率易于 记录和检测,并且可以进行量化,因此可以精确的判断出是否允许将数据库连接池中空闲 的数据库连接分配给客户端,达到了在防止数据库连接池中的资源耗尽的同时,使得数据 库连接的分配更准确的效果。
[0105] 优选地,在本申请实施例中,执行结果属性可以包括一个或者多个,判断模块可以 包括:第一获取子模块和第一判断子模块。
[0106] 第一获取子模块用于当执行结果属性包括执行时间时,从已执行的数据库访问请 求中获取执行时间超过第一预定时间阈值的数据库访问请求的第一个数,第一判断子模块 用于在第一个数小于第一数量阈值时,判断出允许将数据库连接池中空闲的数据库连接分 配给客户端。若第一个数大于等于第一数量阈值,则判断出不允许将数据库连接池中空闲 的数据库连接分配给客户端。其中,若第一个数大于等于第一数量阈值,则其对应的执行时 间可以存储在时间黑名单中。
[0107] 或者,第一获取子模块用于当执行结果属性包括出错率时,从已执行的数据库访 问请求中获取出现执行错误的数据库访问请求的第一比例,第一判断子模块用于在第一比 例小于第一比例阈值时,判断出允许将数据库连接池中空闲的数据库连接分配给客户端。 若第一比例大于等于第一比例阈值,则判断出不允许将数据库连接池中空闲的数据库连接 分配给客户端。若第一比例大于等于第一比例阈值,则其对应的出错率可以存储在出错率 黑名单中。
[0108] 或者,第一获取子模块用于当执行结果属性包括执行时间和出错率时,从已执行 的数据库访问请求中获取执行时间超过第一预定时间阈值的数据库访问请求的第一个数、 且从已执行的数据库访问请求中获取出现执行错误的数据库访问请求的第一比例,第一判 断子模块用于在第一个数小于第一数量阈值、且第一比例小于第一比例阈值时,判断出允 许将数据库连接池中空闲的数据库连接分配给客户端。若第一个数大于等于第一数量阈 值、和/或第一比例大于等于第一比例阈值,则判断出不允许将数据库连接池中空闲的数 据库连接分配给客户端。
[0109] 通过本申请实施例,采用预定时间阈值和/或比例阈值,由于可以将记录的执行 时间与预定的时间阈值进行比较,和/或将记录的出错率与预定的比例阈值进行比较,从 而可以得到更加准确的比较结果,因此量化跟准确,达到了在防止数据库连接池中的资源 耗尽的同时,准确量化是否进行数据库连接分配的效果。
[0110] 优选地,在本申请实施例中,资源分配装置还包括:第一创建单元和第一存储单 元。第一创建单元用于在判断出允许将数据库连接池中空闲的数据库连接分配给客户端之 后,创建数据库访问请求白名单。第一存储单元用于将允许将数据库连接池中空闲的数据 库连接分配给客户端的数据库访问请求存储至数据库访问请求白名单中。
[0111] 需要说明的是,在创建数据库访问请求白名单的同时,还可以创建数据库访问请 求黑名单,其中,将不允许将数据库连接池中空闲的数据库连接分配给客户端的数据库访 问请求存储至数据库访问请求黑名单中。
[0112] 以数据库访问请求黑名单为例,该数据库访问请求黑名单可以以数据库表的方式 直接存储在数据库中。具体地,在数据库访问请求黑名单中,可以存储数据库访问请求的模 板、发生时间、执行时间、报错时间。例如,当存储数据库访问请求为Sql请求时,在数据库 访问请求黑名单中可以存储形式如select*from ebpp_bill_info t where t.biz_type = #BizType#and card_no = #CardNo#的Sql请求的模板。发生时间是指数据库访问请求被 发起的时间;执行时间是指执行数据库访问请求所消耗的时间;报错时间是指在执行数据 库访问请求过程中如果出现错误,则错误上报的时间。优选地,在数据库访问请求黑名单 中,还可以存储发起该数据库访问请求的用户的标识或者客户端的标识。
[0113] 同理,数据库访问请求白名单中也可以存储上述内容,详细内容同上,再次不再赘 述。不同的是,在数据库访问请求白名单和数据库访问请求黑名单中,针对同一存储内容存 储的参数值不同。
[0114] 需要说明的是,上述的数据库访问请求白名单和数据库访问请求黑名单中的存储 内容可以用于量化各条数据库访问请求的历史执行结果。
[0115] 优选地,在本申请实施例中,由于历史上使用同一数据库访问请求的客户端可以 包括一个或者多个,因此,当使用同一数据库访问请求的客户端包括多个时,判断模块可以 包括:第二获取子模块、第二判断子模块和第三判断子模块。
[0116] 第二获取子模块用于当执行结果属性包括执行时间时,从已执行的数据库访问请 求中获取执行时间超过第二预定时间阈值的数据库访问请求的第二个数,第二判断子模块 用于判断已执行的数据库访问请求中由前述的客户端发送的数据库访问请求的执行结果 是否满足预定条件;第三判断子模块用于在第二个数小于第二数量阈值、且执行结果满足 预定条件时,判断出允许将数据库连接池中空闲的数据库连接分配给客户端。否则,判断出 不允许将数据库连接池中空闲的数据库连接分配给客户端。
[0117] 或者,第二获取子模块用于当执行结果属性包括出错率时,从已执行的数据库访 问请求中获取出现执行错误的数据库访问请求的第二比例,第二判断子模块用于判断已执 行的数据库访问请求中由客户端发送的数据库访问请求的执行结果是否满足预定条件;第 三判断子模块用于在第二比例小于第二比例阈值、且执行结果满足预定条件时,判断出允 许将数据库连接池中空闲的数据库连接分配给客户端。否则,判断出不允许将数据库连接 池中空闲的数据库连接分配给客户端。
[0118] 或者,第二获取子模块,用于当执行结果属性包括执行时间和出错率时,从已执行 的数据库访问请求中获取执行时间超过第二预定时间阈值的数据库访问请求的个数、且从 已执行的数据库访问请求中获取出现执行错误的数据库访问请求的第二比例,第二判断子 模块,用于判断已执行的数据库访问请求中由客户端发送的数据库访问请求的执行结果是 否满足预定条件;第三判断子模块,用于在第二个数小于第二数量阈值、且比例小于第二比 例阈值以及执行结果满足预定条件时,判断出允许将数据库连接池中空闲的数据库连接分 配给客户端。
[0119] 其中,第二预定时间阈值可以与前述的第一预定时间阈值相同。第二数量阈值可 以与前述的第一数量阈值相同。第二比例阈值可以与前述的第一比例阈值形同。
[0120] 通过本申请实施例,采用客户端的历史表现对数据库访问请求进行筛选,由于有 些客户端使用某一数据库访问请求时的执行时间和/或出错率可能满足允许将数据库连 接池中空闲的数据库连接分配给该客户端的条件,而另一些客户端在使用同一数据库访问 请求时的执行时间和/或出错率可能不满足允许将数据库连接池中空闲的数据库连接分 配给该客户端的条件,因此可以通过客户端的标识信息进行过滤,防止个别恶意客户端频 繁执行耗时较长sql请求,导致整个数据库相应缓慢,达到了的通过客户端确定是否允许 将数据库连接池中空闲的数据库连接分配给该客户端的效果。
[0121] 优选地,在本申请实施例中,由于客户端在执行数据库访问请求时,也可以记录执 行时间和/或出错率属性,因此第二判断子模块可以包括:获取孙模块和判断孙模块。
[0122] 获取孙模块用于从已执行的数据库访问请求中由客户端发送的数据库访问请求 中获取执行时间超过第三预定时间阈值的数据库访问请求的第三个数,判断孙模块用于在 第三个数小于第三数量阈值时,判断出已执行的数据库访问请求中由客户端发送的数据库 访问请求的执行结果满足预定条件。否则,判断出已执行的数据库访问请求中由客户端发 送的数据库访问请求的执行结果不满足预定条件。
[0123] 或者,获取孙模块用于从已执行的数据库访问请求中由客户端发送的数据库访问 请求中获取出现执行错误的数据库访问请求的第三比例,判断孙模块用于第三比例小于第 三比例阈值时,判断出已执行的数据库访问请求中由客户端发送的数据库访问请求的执行 结果满足预定条件。否则,判断出已执行的数据库访问请求中由客户端发送的数据库访问 请求的执行结果不满足预定条件。
[0124] 或者,获取孙模块用于从已执行的数据库访问请求中由客户端发送的数据库访问 请求中获取执行时间超过第三预定时间阈值的数据库访问请求的第三个数、且从已执行的 数据库访问请求中由客户端发送的数据库访问请求中获取出现执行错误的数据库访问请 求的第三比例,判断孙模块用于在第三个数小于第三数量阈值、且第三比例小于第三比例 阈值时,判断出已执行的数据库访问请求中由客户端发送的数据库访问请求的执行结果满 足预定条件。否则,判断出已执行的数据库访问请求中由客户端发送的数据库访问请求的 执行结果满足预定条件。
[0125] 通过本申请实施例,采用执行时间和/或出错率属性来判断客户端发送的数据库 访问请求的执行结果满足预定条件,由于与判断数据库访问请求的判断逻辑类似,因此达 到了整个数据库连接资源分配的判断逻辑一致且简单的效果。
[0126] 优选地,在本申请实施例中,资源分配装置还包括:第二创建单元和第二存储单 元。第二创建单元用于在判断出允许将数据库连接池中空闲的数据库连接分配给客户端之 后,创建客户端白名单。第二存储单元用于将被允许分配数据库连接池中空闲的数据库连 接的客户端存储至客户端白名单中。
[0127] 需要说明的是,在创建客户端白名单的同时,可以创建客户端黑名单,其中,将被 允许分配数据库连接池中空闲的数据库连接的客户端之外的客户端存储至客户端黑名单 中。
[0128] 以客户
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1