CN117827874A - 数据查询方法及电子设备 - Google Patents
数据查询方法及电子设备 Download PDFInfo
- Publication number
- CN117827874A CN117827874A CN202311850528.3A CN202311850528A CN117827874A CN 117827874 A CN117827874 A CN 117827874A CN 202311850528 A CN202311850528 A CN 202311850528A CN 117827874 A CN117827874 A CN 117827874A
- Authority
- CN
- China
- Prior art keywords
- resource
- data query
- query
- request
- query request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000013468 resource allocation Methods 0.000 claims abstract description 82
- 230000002159 abnormal effect Effects 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 12
- 230000015654 memory Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 15
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000009395 breeding Methods 0.000 description 1
- 230000001488 breeding effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请属于计算机技术领域,具体涉及一种数据查询方法以及电子设备。该数据查询方法包括:对数据查询请求进行特征提取得到查询特征,所述查询特征用于表示所述数据查询请求的复杂程度;获取与所述数据查询请求的查询特征相对应的资源需求数量,所述资源需求数量用于表示执行所述数据查询请求所消耗的虚拟资源的数量;根据所述资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据所述虚拟资源池的资源使用记录确定所述数据查询请求的资源分配结果,所述资源使用记录用于保存所述虚拟资源池的实时使用状态;根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录。本申请可以提高数据库系统的数据查询效率。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种数据查询方法以及电子设备。
背景技术
在分布式应用系统中,一般所依赖的数据库系统自身都无法进行流量控制,因此需要应用系统进行限流保护以避免数据库系统出现过载而造成系统崩溃、服务不可用的问题。
当前一般通过全局的并发控制以及结合一些通用的流量控制算法实现。即预先设定资源的总量,即设定服务最大处理能力,然后通过限流算法限制系统处理超过预期的流量,达到保护目的。
然而,全局并发控制的开销占处理耗时的比重较大,造成性能损耗较为严重,导致数据库查询性能下降。
发明内容
本申请提供一种数据查询方法以及电子设备,目的在于提高数据库系统的数据查询效率。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种数据查询方法,该方法包括:
对数据查询请求进行特征提取得到查询特征,所述查询特征用于表示所述数据查询请求的复杂程度;
获取与所述数据查询请求的查询特征相对应的资源需求数量,所述资源需求数量用于表示执行所述数据查询请求所消耗的虚拟资源的数量;
根据所述资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据所述虚拟资源池的资源使用记录确定所述数据查询请求的资源分配结果,所述资源使用记录用于保存所述虚拟资源池的实时使用状态;
根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录。
根据本申请实施例的一个方面,提供一种数据查询装置,该装置包括:
提取模块,被配置为对数据查询请求进行特征提取得到查询特征,所述查询特征用于表示所述数据查询请求的复杂程度;
获取模块,被配置为获取与所述数据查询请求的查询特征相对应的资源需求数量,所述资源需求数量用于表示执行所述数据查询请求所消耗的虚拟资源的数量;
请求模块,被配置为根据所述资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据所述虚拟资源池的资源使用记录确定所述数据查询请求的资源分配结果,所述资源使用记录用于保存所述虚拟资源池的实时使用状态;
更新模块,被配置为根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录。
在本申请的一些实施例中,基于以上技术方案,所述获取模块包括:
集合获取模块,被配置为获取与所述数据库相对应的查询特征集合,所述查询特征集合用于保存不同的查询特征与资源需求数量之间的映射关系;
第一数量确定模块,被配置为当所述查询特征集合中存在与所述数据查询请求的查询特征像匹配的目标查询特征时,获取与所述目标查询特征具有映射关系的目标资源需求数量,并将所述目标需求数量确定为与所述数据查询请求的查询特征相对应的资源需求数量;
第二数量确定模块,被配置为当所述查询特征集合中不存在与所述数据查询请求的查询特征像匹配的目标特征时,获取所述查询特征集合中所有资源需求数量的平均值,并将所述平均值确定为与所述数据查询请求的查询特征相对应的资源需求数量。
在本申请的一些实施例中,基于以上技术方案,所述获取模块还包括:
记录获取模块,被配置为获取与所述数据库相对应的历史资源分配记录,所述历史资源分配记录用于保存在所述数据库上执行的历史查询请求以及各个所述历史查询请求的执行信息,所述执行信息包括所述历史查询请求的执行状态、执行开始时刻以及执行结束时刻;
耗时统计模块,被配置为根据所述历史查询请求的执行信息统计具有相同查询特征的多个历史查询请求的平均耗时;
耗时获取模块,被配置为在满足所述查询特征集合的数据更新条件时,从所述历史资源分配记录中选取时间临近当前时刻的多个近期查询请求,并分别获取各个所述近期查询请求的平均耗时;
数量更新模块,被配置为根据所述平均耗时确定各个所述近期查询请求在所有近期查询请求中的时间占比,并根据所述时间占比更新与所述近期查询请求相对应的查询特征的资源需求数量。
在本申请的一些实施例中,基于以上技术方案,所述提取模块包括:
语句获取模块,被配置为获取用于执行所述数据查询请求的数据库查询语句;
语句映射模块,被配置为根据预设的摘要提取算法对所述数据库查询语句进行映射处理,得到所述数据查询请求的查询特征。
在本申请的一些实施例中,基于以上技术方案,所述资源使用记录包括所述虚拟资源池的资源使用量和资源总量,所述资源使用量是所述虚拟资源池中已被占用的虚拟资源的数量,所述资源总量是所述虚拟资源池能够容纳的虚拟资源的总数量;所述请求模块包括:
第一分配模块,被配置为当所述资源需求数量与所述资源使用量的加和小于或等于所述资源总量时,从所述虚拟池向所述数据查询请求分配与所述资源需求数量相对应的虚拟资源,并将所述数据查询请求的资源分配结果确定为分配成功;
第二分配模块,被配置为当所述资源需求数量与所述资源使用量的加和大于所述资源总量时,拒绝从所述虚拟池向所述数据查询请求分配与所述资源需求数量相对应的虚拟资源,并将所述数据查询请求的资源分配结果确定为分配失败。
在本申请的一些实施例中,基于以上技术方案,所述资源使用记录还包括排队数量和队列容量,所述排队数量是等待所述虚拟资源分配虚拟资源的查询请求的数量,所述队列容量是所述虚拟资源池能够容纳的等待分配虚拟资源的查询请求的总数量;所述更新模块包括:
使用量更新模块,被配置为当所述资源分配结果为分配成功时,在所述数据库中执行所述数据查询请求,并根据所述资源需求数量更新所述资源使用记录中的资源使用量;
排队数量更新模块,被配置为当所述资源分配结果为分配失败时,将所述数据查询请求配置为延迟请求状态,并更新所述资源使用记录中的排队数量,所述延迟请求状态用于指示所述数据查询请求在延迟指定时长后请求执行。
在本申请的一些实施例中,基于以上技术方案,所述更新模块还包括:
占用率获取模块,被配置为当所述资源使用记录中的排队数量大于预设的数量阈值时,获取所述虚拟资源池的资源占用率,所述资源占用率是所述资源使用量在所述资源总量中的数量比例;
资源释放模块,被配置为若所述资源占用率大于预设的占用率阈值,则强制释放被占用的部分虚拟资源,并根据被释放的虚拟资源的数量更新所述资源使用记录中的资源使用量。
在本申请的一些实施例中,基于以上技术方案,所述资源释放模块包括:
记录获取模块,被配置为获取与所述数据库相对应的历史资源分配记录,所述历史资源分配记录用于保存在所述数据库上执行的历史查询请求以及各个所述历史查询请求的执行信息,所述执行信息包括所述历史查询请求的执行状态、执行开始时刻以及执行结束时刻;
请求选取模块,被配置为从所述历史资源分配记录中选取执行状态为使用状态的历史查询请求作为候选异常请求;
时长确定模块,被配置为根据所述执行开始时刻和所述执行结束时刻确定所述候选异常请求的执行时长;
状态更新模块,被配置为若所述执行时长大于预设的时长阈值,则将所述候选异常请求的使用状态更新为强制释放状态,并根据所述候选异常请求的资源需求数量更新所述资源使用记录中的资源使用量,所述强制释放状态用于表示所述候选异常请求处于强制释放所占用的虚拟资源的状态。
在本申请的一些实施例中,基于以上技术方案,所述使用量更新模块包括:
资源移除模块,被配置为当开始执行所述数据查询请求时,从所述资源使用记录中的资源使用量中移除所述资源需求数量,向与所述数据库相对应的历史资源分配记录中写入所述数据查询请求的执行开始时刻,并将所述数据查询请求的执行状态配置为使用状态,所述使用状态用于表示所述数据查询请求处于占用虚拟资源的状态;
资源释放模块,被配置为当所述数据查询请求执行完毕时,向所述资源使用记录中的资源使用量中释放所述资源需求数量,向所述历史资源分配记录中写入所述数据查询请求的执行结束时刻,并将所述数据查询请求的执行状态配置为自动释放状态,所述自动释放状态用于表示所述数据查询请求处于自动释放所占用的虚拟资源的状态。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的数据查询方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为执行所述可执行指令来实现如以上技术方案中的数据查询方法。
根据本申请实施例的一个方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如以上技术方案中的数据查询方法。
在本申请实施例提供的技术方案中,通过对数据查询请求进行特征提取得到查询特征,可以获取与所述数据查询请求的查询特征相对应的资源需求数量,从而根据资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并且根据数据查询请求的资源分配结果更新虚拟资源池的资源使用记录。本申请实施例利用与数据库相对应的虚拟资源池管理数据库能够处理的数据查询请求,能够有效地对数据库进行流量控制,提高数据查询请求的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
图2示出了本申请一个实施例中实现虚拟资源管理模型的模型结构示意图。
图3示出了本申请一个实施例中的数据查询方法的流程图。
图4示出了本申请一个实施例中更新资源需求数量的流程图。
图5示出了本申请一个实施例中强制释放虚拟资源的流程图。
图6示意性地示出了本申请实施例提供的数据查询装置的结构框图。
图7示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
如图1所示,系统架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑智能音箱、智能穿戴设备、智能车载设备、智能支付终端等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。
根据实现需要,本申请实施例中的系统架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本申请实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本申请对此不做特殊限定。
在本申请的相关技术中,当大量的终端设备110同时向服务器130发起数据查询请求时,一般需要通过全局并发控制的限流算法对请求数量进行限制,对于超过系统处理能力的请求可以拒绝处理。
但是,全局并发控制存在开销占处理耗时的比重大的问题,造成性能损耗比较大。全局并发控制需要先加锁然后再更新计数器(用于记录当前有多少正在处理的请求),在分布式系统中全局加锁需要进行多方通信交互,比较消耗资源,对性能损耗较大。而且,不能根据每个请求复杂度差异化流控。每个请求的复杂度是不一样的且难以事先估计,若不能动态差异化地流控,实际效果将大打折扣。另外,现有的流控方法未形成闭环,不能进行自适应的流控调节。随着业务功能的不断增加,系统不断滋生各式各样的新型形式请求,如果不能自动识别这些变化,那么系统的流控参数将是过时的,需要人工干预调整。
针对以上相关技术中存在的问题,本申请实施例提供一种虚拟资源模型,用以虚拟化系统资源,进而可通过虚拟资源的分配来实现差异化的流控机制。数据库中的一个基本查询占用一个单位虚拟资源,于是数据库系统的容量可定义为同时支撑基本查询的个数,即虚拟资源池的虚拟资源数量。然后,每个查询可以参照基本查询评估出若干单位的虚拟资源,查询发起前需要先申请到虚拟资源后,才能发起查询,否则触发流控拒绝请求。查询处理完成后需要释放先前申请的虚拟资源。
图2示出了本申请一个实施例中实现虚拟资源管理模型的模型结构示意图。如图2所示,该虚拟资源管理模型包括如下的多个功能单元。
客户端:查询数据库前须先申请到相应的虚拟资源后方可发起,请求完成后需释放对应的虚拟资源。
虚拟资源评估器:提供了评估一个请求所需的虚拟资源方法。
虚拟资源分配器:提供了虚拟资源如何分配和释放的方法。
虚拟资源监视器:提供了扫描监测未正常释放的虚拟资源的方法
下面结合具体实施方式对本申请提供的技术方案做出详细说明。
图3示出了本申请一个实施例中的数据查询方法的流程图。如图3所示,该数据查询方法包括如下的步骤S310至S340。
S310:对数据查询请求进行特征提取得到查询特征,查询特征用于表示数据查询请求的复杂程度。
S320:获取与数据查询请求的查询特征相对应的资源需求数量,资源需求数量用于表示执行数据查询请求所消耗的虚拟资源的数量。
S330:根据资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据虚拟资源池的资源使用记录确定数据查询请求的资源分配结果,资源使用记录用于保存虚拟资源池的实时使用状态。
S340:根据数据查询请求的资源分配结果更新虚拟资源池的资源使用记录。
在本申请实施例提供的技术方案中,通过对数据查询请求进行特征提取得到查询特征,可以获取与所述数据查询请求的查询特征相对应的资源需求数量,从而根据资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并且根据数据查询请求的资源分配结果更新虚拟资源池的资源使用记录。本申请实施例利用与数据库相对应的虚拟资源池管理数据库能够处理的数据查询请求,能够有效地对数据库进行流量控制,提高数据查询请求的处理效率。
以下结合具体应用场景分别对数据查询方法中的各个方法步骤的实现方式做出详细说明。
在步骤S310中,对数据查询请求进行特征提取得到查询特征,查询特征用于表示数据查询请求的复杂程度。
在本申请的一个实施例中,对数据查询请求进行特征提取得到查询特征,可以进一步包括:获取用于执行数据查询请求的数据库查询语句;根据预设的摘要提取算法对数据库查询语句进行映射处理,得到数据查询请求的查询特征。
数据库查询语句例如可以是基于数据库访问标准编程语言SQL(StructuredQuery Language)编写的查询语句,基于数据库访问标准编程语言SQL可以用于实现存取数据以及查询、更新和管理关系数据库系统。
预设的摘要提取算法例如可以是MD5信息摘要算法(MD5 Message-DigestAlgorithm),该算法是一种密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue)。使用MD5信息摘要算法对数据库查询语句进行特征提取后,可以得到相应的哈希值作为数据查询请求的查询特征。
举例而言,一项数据查询请求是请求查询姓名为张三的学生信息,对应的数据查询语句,即SQL语句,可以表示为:select*from table name='张三'。对该数据查询语句使用MD5信息摘要算法进行特征提取后,可以获得查询特征为:8e2cf1d86a004557e2bb122e7faf2ef。
当一些数据查询请求具有相同或者相似的查询特征时,表示这些数据查询请求具有相似的数据查询语句,对应的查询条件和复杂程度也基本相似,因此需要消耗的资源也基本相同。
在本申请的一个实施例中,也可以根据数据查询语句中的算子来表示查询特征,例如可以统计数据查询语句中使用的不同类型的算子的数量,然后根据预设的权重对各种算子的数量进行加权运算,得到的数值即作为数据查询语句的查询特征。其中,算子的类型例如可以包括连接、分组、聚合、去重等。
在步骤S320中,获取与数据查询请求的查询特征相对应的资源需求数量,资源需求数量用于表示执行数据查询请求所消耗的虚拟资源的数量。
将一个基本请求所消耗系统的物理资源定义为一个单位虚拟资源,那么系统处理基本请求的数量即虚拟资源数称之为系统容量。任意一个请求相对基本请求的复杂程度可反映为虚拟资源的消耗量,即资源需数量。
在本申请的一个实施例中,获取与数据查询请求的查询特征相对应的资源需求数量,可以进一步包括:获取与数据库相对应的查询特征集合,查询特征集合用于保存不同的查询特征与资源需求数量之间的映射关系;当查询特征集合中存在与数据查询请求的查询特征像匹配的目标查询特征时,获取与目标查询特征具有映射关系的目标资源需求数量,并将目标需求数量确定为与数据查询请求的查询特征相对应的资源需求数量;当查询特征集合中不存在与数据查询请求的查询特征像匹配的目标特征时,获取查询特征集合中所有资源需求数量的平均值,并将平均值确定为与数据查询请求的查询特征相对应的资源需求数量。
本申请实施例中的查询特征集合可以表示为M={s1->q1,s2->q2,…,sn->qn}。该查询特征集合用于保存每个查询特征与资源需求数量之间的映射关系,例如“s1->q1”表示查询特征s1对应的资源需求数量为q1。在初始阶段,可以将各种查询特征对应的资源需求数量的初始值设置为1,后续可以根据历史查询请求的执行结果不断进行迭代更新使其逼近实际值。
图4示出了本申请一个实施例中更新资源需求数量的流程图。如图4所示,在获取与数据库相对应的查询特征集合之后,可以基于如下的步骤S410至S440更新查询特征集合中的各个查询特征对应的资源需求数量。
S410:获取与数据库相对应的历史资源分配记录,历史资源分配记录用于保存在数据库上执行的历史查询请求以及各个历史查询请求的执行信息,执行信息包括历史查询请求的执行状态、执行开始时刻以及执行结束时刻。
历史资源分配记录例如可以使用如表1所示的虚拟资源使用流水表TM_RESOURCE_USED_FLOW。
表1
S420:根据历史查询请求的执行信息统计具有相同查询特征的多个历史查询请求的平均耗时。
根据每项历史查询请求的执行开始时刻和执行结束时刻可以确定该历史查询请求的执行耗时。针对具有相同查询特征的多个历史查询请求,将执行耗时取平均值,可以得到该查询特征对应的平均耗时。
S430:在满足查询特征集合的数据更新条件时,从历史资源分配记录中选取时间临近当前时刻的多个近期查询请求,并分别获取各个近期查询请求的平均耗时。
查询特征集合的数据更新条件可以包括请求数量条件或者请求时间条件中的至少一种。
请求数量条件指的是历史资源分配记录中的新增请求的数量达到预设的数量阈值,例如每当历史资源分配记录中新增加N项历史查询请求,便可以将这N项历史查询请求作为临近当前时刻的近期查询请求,然后分别获取每项近期查询请求的平均耗时。
请求时间条件指的是距离上一次更新查询特征集合的时间差达到预设的时间差阈值,例如每隔固定的时间区间T(例如5分钟),便可以将该时间区间T中新增的历史查询请求作为临近当前时刻的近期查询请求,然后分别获取每项近期查询请求的平均耗时。
在本申请的一个实施例中,查询特征集合的数据更新条件可以同时包括请求数量条件和请求时间条件。即,只要满足请求数量条件或者请求时间条件中的任意一个条件,便可以开始更新查询特征集合,利用两种条件的组合,可以提高查询特征集合的更新频率,进而提高数据查询请求的资源需求数量的预测准确性。
S440:根据平均耗时确定各个近期查询请求在所有近期查询请求中的时间占比,并根据时间占比更新与近期查询请求相对应的查询特征的资源需求数量。
举例而言,近期查询请求包括三项具有不同查询特征的历史查询请求sql-1、sql-2和sql-3。其中,sql-1对应的平均耗时为1.0,sql-2对应的平均耗时为2.0,sql-3对应的平均耗时为3.0。由此可以确定sql-1、sql-2和sql-3的时间占比分别为1/6、1/3和1/2。
将时间占比作为权重对总的资源需求数量进行再分配,可以获得更新后的查询特征的资源需求数量。例如,每项近期查询请求当前的资源需求数量均为1,总的资源需求数量为3,由此可以根据时间占比进行再分配,将sql-1对应的查询特征的资源需求数量更新为1/2,将sql-2对应的查询特征的资源需求数量更新为1,将sql-3对应的查询特征的资源需求数量更新为3/2。
本申请实施例根据历史查询请求的执行情况迭代更新查询特征集合中的各项查询特征对应的资源需求数量,可以不断提高对于不同数据查询请求进行资源分配的准确性。
在步骤S330中,根据资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据虚拟资源池的资源使用记录确定数据查询请求的资源分配结果,资源使用记录用于保存虚拟资源池的实时使用状态。
在本申请的一个实施例中,资源使用记录包括虚拟资源池的资源使用量和资源总量,资源使用量是虚拟资源池中已被占用的虚拟资源的数量,资源总量是虚拟资源池能够容纳的虚拟资源的总数量。
在本申请的一个实施例中,资源使用记录例如可以采用如表2所示的虚拟资源使用情况表TM_RESOURCE_USED。
表2
虚拟资源ID | 资源总量 | 资源使用量 | 队列容量 | 排队数量 |
db001 | 50 | 30 | 30 | 10 |
在申请实施例中,根据虚拟资源池的资源使用记录确定数据查询请求的资源分配结果,可以进一步包括:当资源需求数量与资源使用量的加和小于或等于资源总量时,从虚拟池向数据查询请求分配与资源需求数量相对应的虚拟资源,并将数据查询请求的资源分配结果确定为分配成功;当资源需求数量与资源使用量的加和大于资源总量时,拒绝从虚拟池向数据查询请求分配与资源需求数量相对应的虚拟资源,并将数据查询请求的资源分配结果确定为分配失败。
举例而言,数据库对应的虚拟资源池为表2所示的db001,该虚拟资源池的资源总量为50,当前已经被查询请求占用的虚拟资源的资源使用量为30。当接收到一项新的数据查询请求时,如果该数据查询请求的资源需求量为10,则资源使用量与资源需求量的加和为40,小于资源总量50,由此可以从虚拟池向数据查询请求分配与资源需求数量相对应的虚拟资源,并将数据查询请求的资源分配结果确定为分配成功。而如果该数据查询请求的资源需求数量为30,则资源使用量与资源需求量的加和为60,大于资源总量50,由此可以拒绝从虚拟池向数据查询请求分配与资源需求数量相对应的虚拟资源,并将数据查询请求的资源分配结果确定为分配失败。
在步骤S340中,根据数据查询请求的资源分配结果更新虚拟资源池的资源使用记录。
继续参考表2所示,在本申请的一个实施例中,资源使用记录还包括排队数量和队列容量,排队数量是等待虚拟资源分配虚拟资源的查询请求的数量,队列容量是虚拟资源池能够容纳的等待分配虚拟资源的查询请求的总数量。
在本申请的一个实施例中,根据数据查询请求的资源分配结果更新虚拟资源池的资源使用记录,可以进一步包括:当资源分配结果为分配成功时,在数据库中执行数据查询请求,并根据资源需求数量更新资源使用记录中的资源使用量;当资源分配结果为分配失败时,将数据查询请求配置为延迟请求状态,并更新资源使用记录中的排队数量,延迟请求状态用于指示数据查询请求在延迟指定时长后请求执行。
例如,资源使用记录中的资源使用量为30,当一项数据查询请求的资源分配结果为分配成功时,可以开始在数据库中执行该数据查询请求,该数据查询请求的资源需求数量为10,则可以将资源使用记录的资源使用量更新为30+10=40。当该数据查询请求执行完毕时,可以释放相应的虚拟资源,即从资源使用记录的资源使用量中移除该数据查询请求对应的资源需求数量。
又例如,资源使用记录中的排队数量为10,当一项数据查询请求的资源分配结果为分配失败时,可以将该数据查询请求配置为延迟请求状态,并可以将资源使用记录中的排队数量更新为10+1=11。处于延迟请求状态的数据查询请求可以定时地向虚拟资源池发起资源分配请求,当虚拟资源池中释放出足够数量的虚拟资源,能够满足当前处于排队中的数据查询请求的资源需求时,可以继续向处于延迟请求状态的数据查询请求(即排队中的数据查询请求)分配虚拟资源。每当有数据查询请求结束排队状态,便可以从资源使用记录的排队数量中减去相应的请求数量。
分布式系统自身环境较为复杂,经常面临各种内、外部异常,可能导致数据查询请求已经处理完毕,但该数据查询请求占用的虚拟资源未被正确释放。在客户端发起请求,按约定需要先发起分配虚拟资源,体现为虚拟资源池中的资源使用量增加。在请求完成后,需要发起释放资源,体现为虚拟资源池中的资源使用量减少。如果客户发生异常(如宕机),未发起释放,则被该客户端占用的虚拟资源就无法得到释放,即出现资源泄露的问题。为了保证系统的高可用性,需要系统具备一定的自愈能力。因此,本申请实施例可以设计虚拟资源监视器,自动检测和解决虚拟资源被泄露问题,避免造成系统服务能力下降甚至不可用。
首先需要监听虚拟资源分配器的分配和释放成功事件,收到虚拟资源分配成功后,记录到虚拟资源使用流水表TM_RESOURCE_USED_FLOW,并将其状态配置为使用状态USING。当收到虚拟资源释放成功的消息后,将使用流水状态STATUS调整为自动释放状态FREE_NORM。其次,可以通过定时任务发起检测资源是否出现泄露,以便及时释放泄露资源。
在本申请的一个实施例中,当资源使用记录中的排队数量大于预设的数量阈值时,获取虚拟资源池的资源占用率,资源占用率是资源使用量在资源总量中的数量比例;若资源占用率大于预设的占用率阈值,则强制释放被占用的部分虚拟资源,并根据被释放的虚拟资源的数量更新资源使用记录中的资源使用量。
在本申请的一个实施例中,预设的数量阈值例如可以设置为队列容量的80%,预设的占用率阈值例如可以设置为10%。
当资源使用记录中的排队数量大于队列容量的80%时,可以获取虚拟资源池的资源占用率,并根据资源占用率判断是否进行资源泄露检测。
若资源占用率超过10%,则可以进行资源泄露检测,并根据资源泄露检测结果强制释放被占用的部分虚拟资源。
若资源占用率未超过10%,则说明大部分虚拟资源处于空闲状态,无需进行资源泄露检测。
在本申请的一个实施例中,若资源使用记录中的排队数量大于预设的数量阈值,并且虚拟资源池的资源占用率小于预设的占用率阈值,则说明排队数量存在不准确的问题,此时可以将资源使用记录中的排队数量校准为指定数值,例如将排队数量更新为当前数值的一半。
图5示出了本申请一个实施例中强制释放虚拟资源的流程图。如图5所示,在检测到出现资源泄露问题时,可以执行如下的步骤S510至S540,实现对部分虚拟资源的强制释放。
S510:获取与数据库相对应的历史资源分配记录,历史资源分配记录用于保存在数据库上执行的历史查询请求以及各个历史查询请求的执行信息,执行信息包括历史查询请求的执行状态、执行开始时刻以及执行结束时刻。
S520:从历史资源分配记录中选取执行状态为使用状态的历史查询请求作为候选异常请求。
S530:根据执行开始时刻和执行结束时刻确定候选异常请求的执行时长。
S540:若执行时长大于预设的时长阈值,则将候选异常请求的使用状态更新为强制释放状态,并根据候选异常请求的资源需求数量更新资源使用记录中的资源使用量,强制释放状态用于表示候选异常请求处于强制释放所占用的虚拟资源的状态。
在本申请的一个实施例中,根据资源需求数量更新资源使用记录中的资源使用量,可以进一步包括:当开始执行数据查询请求时,从资源使用记录中的资源使用量中移除资源需求数量,向与数据库相对应的历史资源分配记录中写入数据查询请求的执行开始时刻,并将数据查询请求的执行状态配置为使用状态,使用状态用于表示数据查询请求处于占用虚拟资源的状态;当数据查询请求执行完毕时,向资源使用记录中的资源使用量中释放资源需求数量,向历史资源分配记录中写入数据查询请求的执行结束时刻,并将数据查询请求的执行状态配置为自动释放状态,自动释放状态用于表示数据查询请求处于自动释放所占用的虚拟资源的状态。
在本申请实施例的一个应用场景中,通过对数据库系统的处理能力进行评估,可以确定该数据库系统对应的虚拟资源池的资源总量为50,该虚拟资源池可以容纳查询请求排队的队列容量为30。此时可以将该虚拟资源池的资源使用量和排队数量均初始化为0。
在t1时刻,客户端发起查询请求s1,先评估s1需要的虚拟资源数量为40,则向该查询请求s1分配相应的虚拟资源,并将虚拟资源池的资源使用量更新为40。与此同时,可以在历史资源分配记录中登记查询请求s1的资源分配记录,写入开始时间,并将查询请求s1的执行状态配置为占用虚拟资源的使用状态。
在t2时刻,客户端发起新的查询请求s2,先评估s2需要的虚拟资源数量为20,由于虚拟资源池中的剩余资源数量不足,此时可以将查询请求s2配置为延迟请求状态,即需要排队,于是可以将虚拟资源池的排队数量增加1。
在t3时刻,查询请求s1处理完成,释放该请求占用的虚拟资源,即将虚拟资源池的资源使用量减少40。与此同时,可以在历史资源分配记录中写入查询请求s1的结束时间,并且将查询请求s1的执行状态更新为自动释放状态。
此时,查询请求s2再次向虚拟资源池请求分配资源,于是可以更新虚拟资源池的资源使用量为20,并将排队数量减1。
在t4时刻(t3-t4>5min),虚拟资源监视器检测到查询请求s2的执行状态始终处于使用状态USING,此时可以判定出现资源泄露,则发起强制释放资源,将查询请求s2的执行状态更新为强制释放状态,并释放相应的虚拟资源。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的数据查询方法。图6示意性地示出了本申请实施例提供的数据查询装置的结构框图。如图6所示,数据查询装置600包括:
提取模块610,被配置为对数据查询请求进行特征提取得到查询特征,所述查询特征用于表示所述数据查询请求的复杂程度;
获取模块620,被配置为获取与所述数据查询请求的查询特征相对应的资源需求数量,所述资源需求数量用于表示执行所述数据查询请求所消耗的虚拟资源的数量;
请求模块630,被配置为根据所述资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据所述虚拟资源池的资源使用记录确定所述数据查询请求的资源分配结果,所述资源使用记录用于保存所述虚拟资源池的实时使用状态;
更新模块640,被配置为根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录。
在本申请的一些实施例中,基于以上技术方案,所述获取模块620包括:
集合获取模块,被配置为获取与所述数据库相对应的查询特征集合,所述查询特征集合用于保存不同的查询特征与资源需求数量之间的映射关系;
第一数量确定模块,被配置为当所述查询特征集合中存在与所述数据查询请求的查询特征像匹配的目标查询特征时,获取与所述目标查询特征具有映射关系的目标资源需求数量,并将所述目标需求数量确定为与所述数据查询请求的查询特征相对应的资源需求数量;
第二数量确定模块,被配置为当所述查询特征集合中不存在与所述数据查询请求的查询特征像匹配的目标特征时,获取所述查询特征集合中所有资源需求数量的平均值,并将所述平均值确定为与所述数据查询请求的查询特征相对应的资源需求数量。
在本申请的一些实施例中,基于以上技术方案,所述获取模块620还包括:
记录获取模块,被配置为获取与所述数据库相对应的历史资源分配记录,所述历史资源分配记录用于保存在所述数据库上执行的历史查询请求以及各个所述历史查询请求的执行信息,所述执行信息包括所述历史查询请求的执行状态、执行开始时刻以及执行结束时刻;
耗时统计模块,被配置为根据所述历史查询请求的执行信息统计具有相同查询特征的多个历史查询请求的平均耗时;
耗时获取模块,被配置为在满足所述查询特征集合的数据更新条件时,从所述历史资源分配记录中选取时间临近当前时刻的多个近期查询请求,并分别获取各个所述近期查询请求的平均耗时;
数量更新模块,被配置为根据所述平均耗时确定各个所述近期查询请求在所有近期查询请求中的时间占比,并根据所述时间占比更新与所述近期查询请求相对应的查询特征的资源需求数量。
在本申请的一些实施例中,基于以上技术方案,所述提取模块610包括:
语句获取模块,被配置为获取用于执行所述数据查询请求的数据库查询语句;
语句映射模块,被配置为根据预设的摘要提取算法对所述数据库查询语句进行映射处理,得到所述数据查询请求的查询特征。
在本申请的一些实施例中,基于以上技术方案,所述资源使用记录包括所述虚拟资源池的资源使用量和资源总量,所述资源使用量是所述虚拟资源池中已被占用的虚拟资源的数量,所述资源总量是所述虚拟资源池能够容纳的虚拟资源的总数量;所述请求模块630包括:
第一分配模块,被配置为当所述资源需求数量与所述资源使用量的加和小于或等于所述资源总量时,从所述虚拟池向所述数据查询请求分配与所述资源需求数量相对应的虚拟资源,并将所述数据查询请求的资源分配结果确定为分配成功;
第二分配模块,被配置为当所述资源需求数量与所述资源使用量的加和大于所述资源总量时,拒绝从所述虚拟池向所述数据查询请求分配与所述资源需求数量相对应的虚拟资源,并将所述数据查询请求的资源分配结果确定为分配失败。
在本申请的一些实施例中,基于以上技术方案,所述资源使用记录还包括排队数量和队列容量,所述排队数量是等待所述虚拟资源分配虚拟资源的查询请求的数量,所述队列容量是所述虚拟资源池能够容纳的等待分配虚拟资源的查询请求的总数量;所述更新模块640包括:
使用量更新模块,被配置为当所述资源分配结果为分配成功时,在所述数据库中执行所述数据查询请求,并根据所述资源需求数量更新所述资源使用记录中的资源使用量;
排队数量更新模块,被配置为当所述资源分配结果为分配失败时,将所述数据查询请求配置为延迟请求状态,并更新所述资源使用记录中的排队数量,所述延迟请求状态用于指示所述数据查询请求在延迟指定时长后请求执行。
在本申请的一些实施例中,基于以上技术方案,所述更新模块640还包括:
占用率获取模块,被配置为当所述资源使用记录中的排队数量大于预设的数量阈值时,获取所述虚拟资源池的资源占用率,所述资源占用率是所述资源使用量在所述资源总量中的数量比例;
资源释放模块,被配置为若所述资源占用率大于预设的占用率阈值,则强制释放被占用的部分虚拟资源,并根据被释放的虚拟资源的数量更新所述资源使用记录中的资源使用量。
在本申请的一些实施例中,基于以上技术方案,所述资源释放模块包括:
记录获取模块,被配置为获取与所述数据库相对应的历史资源分配记录,所述历史资源分配记录用于保存在所述数据库上执行的历史查询请求以及各个所述历史查询请求的执行信息,所述执行信息包括所述历史查询请求的执行状态、执行开始时刻以及执行结束时刻;
请求选取模块,被配置为从所述历史资源分配记录中选取执行状态为使用状态的历史查询请求作为候选异常请求;
时长确定模块,被配置为根据所述执行开始时刻和所述执行结束时刻确定所述候选异常请求的执行时长;
状态更新模块,被配置为若所述执行时长大于预设的时长阈值,则将所述候选异常请求的使用状态更新为强制释放状态,并根据所述候选异常请求的资源需求数量更新所述资源使用记录中的资源使用量,所述强制释放状态用于表示所述候选异常请求处于强制释放所占用的虚拟资源的状态。
在本申请的一些实施例中,基于以上技术方案,所述使用量更新模块包括:
资源移除模块,被配置为当开始执行所述数据查询请求时,从所述资源使用记录中的资源使用量中移除所述资源需求数量,向与所述数据库相对应的历史资源分配记录中写入所述数据查询请求的执行开始时刻,并将所述数据查询请求的执行状态配置为使用状态,所述使用状态用于表示所述数据查询请求处于占用虚拟资源的状态;
资源释放模块,被配置为当所述数据查询请求执行完毕时,向所述资源使用记录中的资源使用量中释放所述资源需求数量,向所述历史资源分配记录中写入所述数据查询请求的执行结束时刻,并将所述数据查询请求的执行状态配置为自动释放状态,所述自动释放状态用于表示所述数据查询请求处于自动释放所占用的虚拟资源的状态。
本申请各实施例中提供的数据查询装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图7示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图7示出的电子设备的计算机系统700仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理器701(Central Processing Unit,CPU),其可以根据存储在只读存储器702(Read-Only Memory,ROM)中的程序或者从存储部分708加载到随机访问存储器703(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器703中,还存储有系统操作所需的各种程序和数据。中央处理器701、在只读存储器702以及随机访问存储器703通过总线704彼此相连。输入/输出接口705(Input/Output接口,即I/O接口)也连接至总线704。
以下部件连接至输入/输出接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至输入/输出接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理器701执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
对数据查询请求进行特征提取得到查询特征,所述查询特征用于表示所述数据查询请求的复杂程度;
获取与所述数据查询请求的查询特征相对应的资源需求数量,所述资源需求数量用于表示执行所述数据查询请求所消耗的虚拟资源的数量;
根据所述资源需求数量向数据库的虚拟资源池请求分配虚拟资源,并根据所述虚拟资源池的资源使用记录确定所述数据查询请求的资源分配结果,所述资源使用记录用于保存所述虚拟资源池的实时使用状态;
根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录。
2.根据权利要求1所述的数据查询方法,其特征在于,获取与所述数据查询请求的查询特征相对应的资源需求数量,包括:
获取与所述数据库相对应的查询特征集合,所述查询特征集合用于保存不同的查询特征与资源需求数量之间的映射关系;
当所述查询特征集合中存在与所述数据查询请求的查询特征像匹配的目标查询特征时,获取与所述目标查询特征具有映射关系的目标资源需求数量,并将所述目标需求数量确定为与所述数据查询请求的查询特征相对应的资源需求数量;
当所述查询特征集合中不存在与所述数据查询请求的查询特征像匹配的目标特征时,获取所述查询特征集合中所有资源需求数量的平均值,并将所述平均值确定为与所述数据查询请求的查询特征相对应的资源需求数量。
3.根据权利要求2所述的数据查询方法,其特征在于,在获取与所述数据库相对应的查询特征集合之后,所述方法还包括:
获取与所述数据库相对应的历史资源分配记录,所述历史资源分配记录用于保存在所述数据库上执行的历史查询请求以及各个所述历史查询请求的执行信息,所述执行信息包括所述历史查询请求的执行状态、执行开始时刻以及执行结束时刻;
根据所述历史查询请求的执行信息统计具有相同查询特征的多个历史查询请求的平均耗时;
在满足所述查询特征集合的数据更新条件时,从所述历史资源分配记录中选取时间临近当前时刻的多个近期查询请求,并分别获取各个所述近期查询请求的平均耗时;
根据所述平均耗时确定各个所述近期查询请求在所有近期查询请求中的时间占比,并根据所述时间占比更新与所述近期查询请求相对应的查询特征的资源需求数量。
4.根据权利要求1所述的数据查询方法,其特征在于,对数据查询请求进行特征提取得到查询特征,包括:
获取用于执行所述数据查询请求的数据库查询语句;
根据预设的摘要提取算法对所述数据库查询语句进行映射处理,得到所述数据查询请求的查询特征。
5.根据权利要求1至4中任意一项所述的数据查询方法,其特征在于,所述资源使用记录包括所述虚拟资源池的资源使用量和资源总量,所述资源使用量是所述虚拟资源池中已被占用的虚拟资源的数量,所述资源总量是所述虚拟资源池能够容纳的虚拟资源的总数量;根据所述虚拟资源池的资源使用记录确定所述数据查询请求的资源分配结果,包括:
当所述资源需求数量与所述资源使用量的加和小于或等于所述资源总量时,从所述虚拟池向所述数据查询请求分配与所述资源需求数量相对应的虚拟资源,并将所述数据查询请求的资源分配结果确定为分配成功;
当所述资源需求数量与所述资源使用量的加和大于所述资源总量时,拒绝从所述虚拟池向所述数据查询请求分配与所述资源需求数量相对应的虚拟资源,并将所述数据查询请求的资源分配结果确定为分配失败。
6.根据权利要求5所述的数据查询方法,其特征在于,所述资源使用记录还包括排队数量和队列容量,所述排队数量是等待所述虚拟资源分配虚拟资源的查询请求的数量,所述队列容量是所述虚拟资源池能够容纳的等待分配虚拟资源的查询请求的总数量;根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录,包括:
当所述资源分配结果为分配成功时,在所述数据库中执行所述数据查询请求,并根据所述资源需求数量更新所述资源使用记录中的资源使用量;
当所述资源分配结果为分配失败时,将所述数据查询请求配置为延迟请求状态,并更新所述资源使用记录中的排队数量,所述延迟请求状态用于指示所述数据查询请求在延迟指定时长后请求执行。
7.根据权利要求6所述的数据查询方法,其特征在于,在根据所述数据查询请求的资源分配结果更新所述虚拟资源池的资源使用记录之后,所述方法还包括:
当所述资源使用记录中的排队数量大于预设的数量阈值时,获取所述虚拟资源池的资源占用率,所述资源占用率是所述资源使用量在所述资源总量中的数量比例;
若所述资源占用率大于预设的占用率阈值,则强制释放被占用的部分虚拟资源,并根据被释放的虚拟资源的数量更新所述资源使用记录中的资源使用量。
8.根据权利要求7所述的数据查询方法,其特征在于,强制释放被占用的部分虚拟资源,包括:
获取与所述数据库相对应的历史资源分配记录,所述历史资源分配记录用于保存在所述数据库上执行的历史查询请求以及各个所述历史查询请求的执行信息,所述执行信息包括所述历史查询请求的执行状态、执行开始时刻以及执行结束时刻;
从所述历史资源分配记录中选取执行状态为使用状态的历史查询请求作为候选异常请求;
根据所述执行开始时刻和所述执行结束时刻确定所述候选异常请求的执行时长;
若所述执行时长大于预设的时长阈值,则将所述候选异常请求的使用状态更新为强制释放状态,并根据所述候选异常请求的资源需求数量更新所述资源使用记录中的资源使用量,所述强制释放状态用于表示所述候选异常请求处于强制释放所占用的虚拟资源的状态。
9.根据权利要求6所述的数据查询方法,其特征在于,根据所述资源需求数量更新所述资源使用记录中的资源使用量,包括:
当开始执行所述数据查询请求时,从所述资源使用记录中的资源使用量中移除所述资源需求数量,向与所述数据库相对应的历史资源分配记录中写入所述数据查询请求的执行开始时刻,并将所述数据查询请求的执行状态配置为使用状态,所述使用状态用于表示所述数据查询请求处于占用虚拟资源的状态;
当所述数据查询请求执行完毕时,向所述资源使用记录中的资源使用量中释放所述资源需求数量,向所述历史资源分配记录中写入所述数据查询请求的执行结束时刻,并将所述数据查询请求的执行状态配置为自动释放状态,所述自动释放状态用于表示所述数据查询请求处于自动释放所占用的虚拟资源的状态。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为执行所述可执行指令以实现如权利要求1至9中任意一项所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311850528.3A CN117827874A (zh) | 2023-12-28 | 2023-12-28 | 数据查询方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311850528.3A CN117827874A (zh) | 2023-12-28 | 2023-12-28 | 数据查询方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827874A true CN117827874A (zh) | 2024-04-05 |
Family
ID=90518566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311850528.3A Pending CN117827874A (zh) | 2023-12-28 | 2023-12-28 | 数据查询方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827874A (zh) |
-
2023
- 2023-12-28 CN CN202311850528.3A patent/CN117827874A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11146502B2 (en) | Method and apparatus for allocating resource | |
CN112650576B (zh) | 资源调度方法、装置、设备、存储介质及计算机程序产品 | |
CN109766349B (zh) | 任务防重方法、装置、计算机设备及存储介质 | |
US20120054280A1 (en) | Sharing Cloud Data Resources With Social Network Associates | |
CN111786895A (zh) | 动态全局限流的方法和装置 | |
US12008402B2 (en) | Determining computer resource usage at multiple levels of a container orchestration system hierarchy | |
CN112100034A (zh) | 一种业务监控方法和装置 | |
CN112346834A (zh) | 数据库的请求处理方法和装置、电子设备和介质 | |
CN112579692A (zh) | 一种数据同步方法、装置、系统、设备及存储介质 | |
CN113094378A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
US11775488B2 (en) | Data access and recommendation system | |
CN113590433B (zh) | 数据管理方法、数据管理系统和计算机可读存储介质 | |
CN108520401B (zh) | 用户名单管理方法、装置、平台及存储介质 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN117828209A (zh) | 交易系统中的数据预加载方法及电子设备 | |
CN113760982A (zh) | 一种数据处理方法和装置 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN116701020A (zh) | 消息延时处理方法、装置、设备、介质和程序产品 | |
CN109286532B (zh) | 云计算系统中告警信息的管理方法和装置 | |
US20230100110A1 (en) | Computing resource management method, electronic equipment and program product | |
CN116319810A (zh) | 分布式系统的流量控制方法、装置、设备、介质及产品 | |
US9652766B1 (en) | Managing data stored in memory locations having size limitations | |
CN117827874A (zh) | 数据查询方法及电子设备 | |
CN114647701A (zh) | 分布式数据库的负载均衡方法、装置、电子设备及介质 | |
CN108984431B (zh) | 用于清空过期缓存的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |