一种管理SQL语句的方法、装置及设备与流程

文档序号:26050509发布日期:2021-07-27 15:25阅读:124来源:国知局
一种管理SQL语句的方法、装置及设备与流程

本申请涉及大数据技术领域,特别涉及一种管理sql语句的方法、装置及设备。



背景技术:

随着大数据时代的到来,在分布式数据库系统上运行的sql(structuredquerylanguage)语句的数量及复杂程度越来越高。因此,为了更有效的利用数据库资源,对提交到数据库上的sql语句进行管理变得越来越重要。

现有技术中多数分布式数据库对提交到数据库上的sql语句进行管理是按照用户(user)或模式(schema)等较粗粒度对sql语句分级,然后将不同用户或者模式对应的sql语句分配到指定的资源池中,并为属于该用户或者该模式的所有sql语句分配预先配置好的数据库资源配额。然而,这种方式无法区分同一用户或同一模式下的不同sql语句,使得对提交到数据库上的sql语句的管理效率较低,从而降低对分布式数据库的资源利用率。

因此,业内亟需一种可以解决上述技术问题的技术方案。



技术实现要素:

本说明书实施例提供了一种管理sql语句的方法、装置及设备,可以提高对提交到数据库上的sql语句的管理效率,使分布式数据库的资源被高效利用。

本说明书提供的一种管理sql语句的方法、装置及设备是包括以下方式实现的。

一种管理sql语句的方法,包括:获取待提交到分布式数据库上的sql语句;对所述sql语句进行维度分析,获得所述sql语句的评分信息;根据所述sql语句的评分信息和所述分布式数据库的资源泳道信息,确定执行所述sql语句的目标资源泳道;其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同;将所述sql语句提交到所述目标资源泳道上执行。

一种管理sql语句的装置,包括:获取模块,用于获取待提交到分布式数据库上的sql语句;获得模块,用于对所述sql语句进行维度分析,获得所述sql语句的评分信息;确定模块,用于根据所述sql语句的评分信息和所述分布式数据库的资源泳道信息,确定执行所述sql语句的目标资源泳道;其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同;提交模块,用于将所述sql语句提交到所述目标资源泳道上执行。

一种管理sql语句的设备,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现本说明书实施例中任意一个方法实施例的步骤。

一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现本说明书实施例中任意一个方法实施例的步骤。

本说明书提供的一种管理sql语句的方法、装置及设备。一些实施例中可以获取待提交到分布式数据库上的sql语句,对sql语句进行维度分析,获得sql语句的评分信息。进一步可以根据sql语句的评分信息和分布式数据库的资源泳道信息,确定执行sql语句的目标资源泳道,将sql语句提交到目标资源泳道上执行,其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同。由于本说明书实施例可以对每个提交到分布式数据库上的sql语句,按照实际情况进行多方面分析并给出评分,依据评分进行sql语句分级并合理分配数据库资源,从而可以使分布式数据库的资源利用更加高效,使分布式数据库的资源被高效利用。

附图说明

此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,并不构成对本说明书的限定。在附图中:

图1是本说明书提供的一种管理sql语句的方法的一个实施例的流程示意图;

图2是本说明书提供的一种管理sql语句的方法的一个实施例的流程示意图;

图3是本说明书提供的一种管理sql语句的装置的一个实施例的模块结构示意图;

图4是本说明书提供的一种管理sql语句的服务器的一个实施例的硬件结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书中的一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。

下面以一个具体的应用场景为例对本说明书实施方案进行说明。具体的,图1是本说明书提供的一种管理sql语句的方法的一个实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。

本说明书提供的一种实施方案可以应用到客户端、服务器等中。所述客户端可以包括终端设备,如智能手机、平板电脑等。所述服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式系统的服务器结构等。

需要说明的是,下述实施例描述并不对基于本说明书的其他可扩展到的应用场景中的技术方案构成限制。具体的一种实施例如图1所示,本说明书提供的一种管理sql语句的方法的一种实施例中,所述方法可以包括以下步骤。

s0:获取待提交到分布式数据库上的sql语句。

其中,待提交到分布式数据库上的sql语句可以是用户刚编写完成的sql语句,也可以是历史编写好存储在预设在预设文件中的sql语句等。

s2:对所述sql语句进行维度分析,获得所述sql语句的评分信息。

本说明书实施例中,在获得待提交到分布式数据库上的sql语句后,可以对sql语句进行维度分析,获得sql语句的评分信息。其中,sql语句的评分信息可以是一个分值。

一些实施例中,所述对所述sql语句进行多维度分析,获得所述sql语句的评分信息,可以包括:获取所述分布式数据库的数据分布信息;根据所述数据分布信息,获得所述sql语句包括的数据表信息;基于所述数据表信息,生成所述sql语句在所述分布式数据库上的执行计划;对所述执行计划进行第一维度分析,获得第一分析结果;根据所述第一分析结果,确定所述sql语句的评分信息。

一些实施场景中,分布式数据库的数据分布信息可以包括分布式数据库的集群规模、节点数以及数据分布等有效信息。

一些实施场景中,获取分布式数据库的数据分布信息后,可以基于待提交到分布式数据库上的sql语句,结合获取到的集群规模、节点数以及数据分布等有效信息,获取到sql语句中涉及到的所有数据表的统计信息。其中,所有数据表的统计信息可以理解为数据表信息。

一些实施场景中,在获得数据表信息后,可以根据数据表信息,生成sql语句在分布式数据库上的执行计划。其中,执行计划可以理解为一条sql语句在数据库中的执行过程或访问路径的描述。执行计划可以显示sql语句执行的详细步骤,每一步骤可以为一个数据库运算符。

一些实施场景中,在生成执行计划后,可以对执行计划进行维度分析,获得分析结果。例如一些实施场景中,获得执行结合后,可以将执行计划下发到多个预设模块中进行详细分析。其中,一个预设模块可以表示一个指标维度。

一些实施场景中,预设模块可以包括风险计划排查模块、输出结果估算模块、执行代价分析模块、执行算子分析模块、cpu消耗分析模块、内存消耗分析模块、存储消耗分析模块等。其中,风险计划排查模块可以用于排查sql语句中存在性能风险的sql语法以及执行计划中存在性能风险的运算符等关键字。输出结果估算模块可以用于获取执行计划每一步骤的计算结果,包括结果行数、结果的大小和结果类型等。执行代价分析模块可以用于分析执行计划中每个步骤的执行代价(cost),对执行代价的大小进行分析和评分。执行算子分析模块可以用于分析执行计划中各个步骤使用到的各种算子,例如表扫描、聚合、格式转换、以及分布式数据库中的特有算子等,进一步还可以通过对算子利用是否合理以及各个算子的效率分析给出评分。cpu消耗分析模块、内存消耗分析模块和存储消耗分析模块分别用于预测分析执行计划中各个计算步骤对分布式数据库cpu资源、内存资源和磁盘存储资源的消耗。

一些实施场景中,对执行计划进行维度分析,获得的分析结果至少可以包括下述之一:风险计划排查结果、执行计划每一步对应的计算结果、执行代价分析结果、执行算子分析结果、cpu消耗分析结果、内存消耗分析结果、存储消耗分析结果。其中,风险计划排查结果可以是风险计划排查模块对应的结果,执行计划每一步对应的计算结果可以是输出结果估算模块对应的结果,执行代价分析结果可以是执行代价分析模块对应的结果,执行算子分析结果可以是执行算子分析模块对应的结果,cpu消耗分析结果可以是cpu消耗分析模块对应的结果,内存消耗分析结果可以是内存消耗分析模块对应的结果,存储消耗分析结果可以是存储消耗分析模块对应的结果。当然,上述只是进行示例性说明,预设模块不限于上述举例,相应的分析结果也不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。

一些实施场景中,在获得维度分析结果后,可以根据每个预设模块对应的分析结果,为每个预设模块输出结果分配一个分值,然后根据每个预设模块输出结果对应的分值,确定sql语句的评分信息。其中,风险计划排查模块排查出存在性能风险的运算符越少,分配的分值越高,输出结果估算模块的输出结果越大,分配的分值越高,执行代价分析模块的执行代价越高,分配的分值越高,执行算子分析模块获取到的执行算子越复杂,分配的分值越高,cpu消耗分析模块、内存消耗分析模块、存储消耗分析模块的消耗越大,分配的分值越高。

一些实施场景中,根据每个预设模块输出结果对应的分值确定sql语句的评分信息时,可以根据每个预设模块对sql语句的性能影响,为每个模块分配相应的权重,进而可以通过进行加权平均计算得出sql语句的评分信息。

一些实施场景中,根据每个预设模块输出结果对应的分值确定sql语句的评分信息时,还可以根据输出结果估算模块、执行代价分析模块、执行算子分析模块、cpu消耗分析模块、内存消耗分析模块、存储消耗分析模块对sql语句的性能影响,为输出结果估算模块、执行代价分析模块、执行算子分析模块、cpu消耗分析模块、内存消耗分析模块、存储消耗分析模块分配相应的权重,进而对上述模块对应的分析结果进行加权平均,将加权平均结果与风险计划排查模块对应的分值相加,获得sql语句的评分信息。当然,上述只是进行示例性说明,确定sql语句的评分信息的方式不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。

s4:根据所述sql语句的评分信息和所述分布式数据库的资源泳道信息,确定执行所述sql语句的目标资源泳道;其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同。

本说明书实施例中,在获得sql语句的评分信息后,可以根据sql语句的评分信息和分布式数据库的资源泳道信息,确定执行sql语句的目标资源泳道。其中,资源泳道信息中可以包括预设数量个资源泳道。每个资源泳道对应的评分信息不同,每个资源泳道中可以包括多个资源指标,每个资源指标分配有对应的可用资源。同一资源指标在不同资源泳道对应的可用资源量不同。每个资源泳道可以用于执行对应的sql语句。预设数量可以根据实际场景设定,例如3、5、7等,本说明书对此不作限定。

一些实施例中,所述分布式数据库的资源泳道信息可以通过下述方式确定:获取所述分布式数据库的总评分信息和每个资源指标的评分信息;根据所述总评分信息,确定所述分布式数据库中每个资源泳道对应的评分信息;根据总评分信息与数据库可用资源量的预设关系,确定所述分布式数据库的可用资源量;基于所述分布式数据库的可用资源量,根据所述每个资源指标的评分信息和预设资源配比,为每个资源泳道中对应的资源指标分配相应可用资源量,获得所述分布式数据库的资源泳道信息。

一些实施场景中,所述获取所述分布式数据库的总评分信息,可以包括:获取影响分布式数据库性能的参数信息;其中,所述参数信息包括静态参数信息和动态参数信息;根据所述参数信息,确定所述分布式数据库的总评分信息。

一些实施场景中,静态参数信息可以包括硬件参数、操作系统参数、数据库参数等。其中,硬件参数可以包括分布式数据库各个部署节点的网络、内存、cpu以及磁盘等服务器硬件固定参数。操作系统参数可以包括操作系统版本参数、操作系统各种与数据库运行相关的配置文件的参数等。数据库参数可以包括分布式数据库的内部参数,如分布式数据库的产品版本、规模及拓扑结构、数据节点数、数据库各项内存配置参数、cpu资源配额、磁盘i/o配额、存储空间限制、并发量、最大连接数资源分配相关参数等。

由于分布式数据库上的资源情况会随实际硬件,操作系统以及数据库状态变化而动态改变,所以影响分布式数据库性能的参数信息还可以包括动态参数信息。一些实施场景中,动态参数信息可以包括硬件与系统状态诊断参数、数据库状态诊断参数等。其中,硬件与系统状态诊断参数可以包括正在运行的进程总数、当前磁盘读写速率、当前磁盘容量、当前cpu使用率、各个主机内存使用率、各个主机网络读写速率、实时网络等待及延迟情况、实时网络丢包率等参数。数据库状态诊断参数可以包括分布式数据库各节点状态、数据库内存使用情况、数据库存储空间使用情况、分布式数据库的实时连接数及并发量、数据库内sql语句排队及等待等参数。当然,上述只是进行示例性说明,本说明书实施例不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。

一些实施场景中,获取影响分布式数据库性能的参数信息后,可以根据静态参数信息获得分布式数据库静态参数的评分,根据态参数信息获得分布式数据库动态参数的评分,进一步,根据分布式数据库静态参数的评分和分布式数据库动态参数的评分确定分布式数据库的总评分信息。

一些实施场景中,可以利用硬件参数获取模块收集分布式数据库各个部署节点的网络、内存、cpu以及磁盘等服务器硬件参数,利用操作系统参数获取模块收集操作系统版本参数、操作系统各种与数据库运行相关的配置文件的参数等,利用数据库参数获取模块收集分布式数据库的内部参数,如分布式数据库的产品版本、规模及拓扑结构、数据节点数、数据库各项内存配置参数、cpu资源配额、磁盘i/o配额、存储空间限制、并发量、最大连接数资源分配相关参数,然后将上述三个模块获取的数据输出到固定参数汇总评分模块,以便固定参数汇总评分模块根据各项参数影响因素不同,加权计算获得分布式数据库静态参数的评分。其中,固定参数汇总评分模块根据各项参数影响因素不同,加权计算获得分布式数据库静态参数的评分前,可以为各项参数分配不同的权重,然后计算加权平均值获得分布式数据库静态参数的评分。需要说明的是,由于各项参数对不同数据库产品的性能影响不一致,权重可以根据实际情况动态改变。

一些实施场景中,可以利用硬件与系统状态诊断模块实时获取包括正在运行的进程总数、当前磁盘读写速率、当前磁盘容量、当前cpu使用率、各个主机内存使用率、各个主机网络读写速率、实时网络等待及延迟情况、实时网络丢包率等分布式数据库的硬件运行状态信息,利用数据库状态诊断模块实时收集并监控分布式数据库的运行情况,获取包括分布式数据库各节点状态、数据库内存使用情况、数据库存储空间使用情况、分布式数据库的实时连接数及并发量、数据库内sql语句排队及等待等参数,然后将上述两个模块获取的数据输出到动态参数汇总评分模块,以便动态参数汇总评分模块根据各项参数影响因素不同,加权计算出分布式数据库动态参数的评分。其中,动态参数汇总评分模块根据各项参数影响因素不同,加权计算分布式数据库动态参数的评分前,可以为各项参数分配不同的权重,然后计算加权平均值获得分布式数据库动态参数的评分。需要说明的是,由于各项参数对不同数据库产品的性能影响不一致,权重可以根据实际情况动态改变。

一些实施场景中,在获得分布式数据库静态参数的评分和分布式数据库动态参数的评分后,可以根据分布式数据库静态参数的评分和分布式数据库动态参数的评分确定分布式数据库的总评分信息。例如,可以通过对静态参数的评分和动态参数的评分进行平均获得分布式数据库的总评分信息,还可以为静态参数和动态参数分别分配一个权重,然后通过加权平均获得分布式数据库的总评分信息。当然,上述只是进行示例性说明,确定分布式数据库的总评分信息的方式不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。

一些实施场景中,在确定分布式数据库的总评分信息时,还可以确定每个资源指标的评分信息。其中,资源指标至少可以包括下述之一:内存资源、网络资源、cpu资源、磁盘i/o资源、会话连接数、sql作业并发度、sql执行优先级。一个资源泳道可以理解为分配了不同配额内存资源、网络资源、cpu资源、磁盘i/o资源、会话连接数、sql作业并发度、sql执行优先级等的一个分组,每个分组可以提供不同的资源分配比例。特定sql语句可以分配到对应的资源泳道里执行时,执行时便会占用不同量的数据库资源。

一些实施场景中,在获取分布式数据库的总评分信息后,可以将总评分信息按照预设资源泳道数量划分为多个区间,然后将每个区间作为分布式数据库中每个资源泳道对应的评分信息。一些实施场景中,将总评分信息按照预设资源泳道数量划分为多个区间时,可以是平均划分,也可以根据预设比例进行划分,例如,获取的分布式数据库的总评分信息为100,预设资源泳道数量为4,则可以将总评分信息平均划分为四个区间,每个资源泳道的评分信息分别为[0,25)、[25,50)、[50,75)、[75,100)。再如,获取的分布式数据库的总评分信息为100,预设资源泳道数量为4,则可以将总评分信息按照1:2:3:4的比例划分为四个区间,每个资源泳道的评分信息分别为[0,10)、[10,30)、[30,60)、[60,100)。当然,上述只是进行示例性说明,资源泳道的划分方式不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。

一些实施场景中,可以根据历史信息预先确定数据库总评分信息与数据库可用资源量的预设关系,这样,在获取分布式数据库的总评分信息后,可以根据该预设关系快速确定分布式数据库的可用资源量。

一些实施场景中,在确定分布式数据库的可用资源量后,可以基于分布式数据库的可用资源量,根据每个资源指标的评分信息和预设资源配比,为每个资源泳道中对应的资源指标分配相应可用资源量,获得分布式数据库的资源泳道信息。

一些实施场景中,根据分布式数据库的总评分信息确定该分布式数据库的可用资源总量后,可以将可用资源总量作为基准的“1”,然后按照百分比对各个资源泳道进行资源分配。其中,资源分配结果可以随数据库产品和使用场景不同(如侧重分析型数据库还是侧重事务型数据库,数据库即时查询场景较多还是批量场景较多等)以及资源泳道数量不同而改变。

例如一些实施场景中,在确定分布式数据库的可用资源量后,可以根据每个资源指标的评分信息确定每个资源指标对应的可用资源量,然后按照资源泳道间的预设资源配比为每个资源泳道中同一资源指标分配相应可用资源量。例如,分布式数据库的可用资源量为100,资源泳道为4个,资源泳道间内存资源的预设资源配比为1:1:1:1,资源泳道间网络资源的预设资源配比为1:1:1:2,资源泳道间cpu资源的预设资源配比为1:2:3:4,内存资源、网络资源、cpu资源的评分信息分别为4:3:3,则根据每个资源指标的评分信息确定每个资源指标对应的可用资源量分别为40、30、30,进一步,根据资源泳道间内存资源的预设资源配比1:1:1:1,可以确定4个资源泳道中内存资源的可用资源量分别为10、10、10、10,根据资源泳道间网络资源的预设资源配比1:1:1:2,可以确定4个资源泳道中网络资源的可用资源量分别为6、6、6、12,根据资源泳道间cpu资源的预设资源配比1:2:3:4,可以确定4个资源泳道中cpu资源的可用资源量分别为3、6、9、12。需要说明的是,资源泳道间每个资源指标的预设资源配比可以相同,也可以不同。

本说明书实施例中,通过对分布式数据库进行多个资源泳道的精细划分,为每个资源泳道分配不同的资源和运行负载标准,可以为后续准确确定执行sql语句的资源泳道、提高分布式数据库的资源利用率提供保证。

一些实施例中,获得分布式数据库的资源泳道信息后,还可以监测分布式数据库的可用资源量是否发生变化。

一些实施场景中,在监测到所述分布式数据库的可用资源量发生变化的情况下,可以获取实时日志记录;根据所述实时日志记录确定可用资源量发生变化的因素;基于可用资源量发生变化的因素,调整所述分布式数据库的资源泳道信息。其中,可用资源量发生变化的因素可以包括人为调整相关参数。人为调整相关参数时,会有实时日志记录。

一些实施场景中,可以通过获取实时日志记录,判断可用资源量发生变化是否是人为调整,如日志中无记录,则确定非人为调整。

一些实施场景中,可以从监控情况实时判断分布式数据库的可用资源量是否发生变化,在确定发生变化时,可以判断是否有人为调整相关参数导致。一些实施场景中,若确认是人为调整相关参数导致,则可以重新进行参数获取和分析流程,对资源泳道进行动态修改,并且持续监控。一些实施场景中,若确认不是人为调整相关参数导致,则可以报告故障或问题,并确定导致资源发生变化的因素,进一步可以根据新情况重新获取参数并分析流程,动态修改资源泳道并持续监控。

一些实施场景中,在确定分布式数据库的可用资源量未发生变化时,则可以维持目前的资源泳道划分,并持续监控。

一些实施例中,在获得分布式数据库的资源泳道信息后,可以根据sql语句的评分信息和分布式数据库的资源泳道信息,确定执行sql语句的目标资源泳道。

一些实施场景中,所述根据所述sql语句的评分信息和所述分布式数据库的资源泳道信息,确定执行所述sql语句的目标资源泳道,可以包括:将所述sql语句的评分信息和所述分布式数据库中每个资源泳道的评分信息进行匹配;将匹配成功的资源泳道确定为执行所述sql语句的目标资源泳道。

例如一些实施场景中,sql语句的评分信息为76,每个资源泳道的评分信息分别为[0,25)、[25,50)、[50,75)、[75,100),则将sql语句的评分信息和分布式数据库中每个资源泳道的评分信息进行匹配,可以确定评分信息为[75,100)的资源泳道为执行sql语句的目标资源泳道。

本说明书实施例中,由于每一条资源泳道只会允许固定分数段的sql语句在该资源泳道内运行,这样,可以实现sql语句和数据库资源的精细分配,从而提高分布式数据库的资源利用率。

s6:将所述sql语句提交到所述目标资源泳道上执行。

本说明书实施例中,在确定执行sql语句的目标资源泳道后,可以将sql语句提交到目标资源泳道上执行,从而获得执行结果。

一些实施例中,在将sql语句提交到目标资源泳道上执行后,还可以持续对硬件运行情况(如各项与泳道分级相关的资源指标)、数据库资源使用以及数据库动态负载、正在分布式数据库上运行的sql语句的整体和单节点性能等进行监控。进一步,可以将实时监控结果进行汇总,然后将汇总结果实时反馈给相关人员,以便相关人员对数据库资源泳道的资源分配和sql运行进行实时干预和调整。

一些实施场景中,若监测到sql语句运行无异常,则可以维持目前的资源泳道分配和sql执行情况,并维持动态监控。

一些实施场景中,在监测到所述sql语句运行异常的情况下,可以判断所述分布式数据库的可用资源量是否发生变化;在所述分布式数据库的可用资源量发生变化的情况下,基于变化后的可用资源量,调整所述分布式数据库的资源泳道信息,获得调整后的资源泳道信息;相应的,根据所述sql语句的评分信息和所述调整后的资源泳道信息,确定执行所述sql语句的目标资源泳道;将所述sql语句提交到所述目标资源泳道上执行。其中,sql语句运行异常可以包括运行过慢,资源消耗过大等。

由于资源受限,如i/o性能下降、cpu占用率高、可用内存不足、网络出现故障等问题都会使sql语句运行效率降低,人为降低数据库的并发数、连接数、限制数据库一项或多项资源也会使sql语句运行效率降低,即出现sql语句运行异常,所以一些实施场景中,若监测到sql语句运行异常,则可以先判断是否为分布式数据库的可用资源量变化引起。其中,可用资源量变化可以包括人为调整因素和非人为因素。

一些实施场景中,若确定sql语句运行异常是由分布式数据库的可用资源量改变引起的,则可以基于改变后的可用资源量,根据每个资源指标的评分信息和预设资源配比,重新为每个资源泳道中对应的资源指标分配相应可用资源量,获得分布式数据库的新资源泳道信息,进而根据sql语句的评分信息和分布式数据库的新资源泳道信息,确定执行sql语句的目标资源泳道,将sql语句提交到目标资源泳道上执行,并维持动态监控。需要说明的是,获得分布式数据库的新资源泳道信息的过程可以参照前面实施例,对此不作赘述。

一些实施场景中,在所述分布式数据库的可用资源量未发生变化的情况下,可以包括:对所述sql语句进行第二维度分析,获得所述sql语句的第二评分信息;基于所述sql语句的第二评分信息,为所述sql语句分配第二资源泳道;其中,同一资源指标在第二资源泳道的可用资源量大于在所述目标资源泳道的可用资源量;在所述sql语句在所述第二资源泳道上运行异常的情况下,停止执行所述sql语句。

一些实施场景中,若确定sql语句运行异常不是由分布式数据库的可用资源量改变引起的,则可以在之前获得sql语句评分信息方法的基础上进一步细化,重新分析该异常sql语句,获得sql语句的新评分信息。其中,在之前获得sql语句评分信息方法的基础上进一步细化重新分析异常的sql语句可理解为在风险计划排查模块、输出结果估算模块、执行代价分析模块、执行算子分析模块、cpu消耗分析模块、内存消耗分析模块、存储消耗分析模块的基础上添加对各项资源消耗的历史情况补充分析,以及对之前未分析到的执行算子进行补充分析等。

一些实施场景中,获得sql语句的新评分信息后,可以根据sql语句的新评分信息和分布式数据库的资源泳道信息,确定执行sql语句的新目标资源泳道,并将sql语句提交到新目标资源泳道上执行,进一步判断该sql语句在该新目标资源泳道上是否可以正常运行,若不能正常运行,则可以停止执行该sql语句,并对此问题进行记录并报告,以便进行后续分析改进。若可以正常运行,则可以临时将sql语句的资源泳道更换为新目标资源泳道,使sql在分布式数据库中正常执行,并维持动态监控。

本说明书实施例中,在确定sql语句运行异常是由分布式数据库的可用资源量改变引起的,则可以按照新的可用资源量,重新进行资源泳道划分,重新给各个sql语句分配资源,如果可用资源量未改变,则可以对sql语句进一步细化分析,调整资源泳道使其正常运行,从而可以是分布式数据库中资源得到有效利用。

如图2所示,图2是本说明书提供的一种管理sql语句的方法的一个实施例的流程示意图,在本实施例中,所述方法可以包括以下步骤。

s20:获取影响分布式数据库性能的参数信息。

s21:根据参数信息,确定分布式数据库的总评分信息。

s22:根据分布式数据库的总评分信息和每个资源指标的评分信息,确定分布式数据库的资源泳道信息。

本实施例中,资源泳道信息中可以包括多个资源泳道的信息。每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同。

s23:获取待提交到分布式数据库上的sql语句。

s24:对sql语句进行维度分析,获得sql语句的评分信息。

s25:根据sql语句的评分信息和分布式数据库的资源泳道信息,确定执行sql语句的目标资源泳道,将sql语句提交到目标资源泳道上执行。

本实施例中,在将sql语句提交到目标资源泳道上执行后,可以持续监控分布式数据库各项资源使用情况和sql语句运行情况。

s26:判断sql语句运行是否有异常?

本实施例中,异常可以包括运行过慢、资源消耗过大等。

本实施例中,确定sql语句运行有异常时,执行步骤s27,确定sql语句运行没有异常时,执行步骤s28。

s27:判断是否由分布式数据库的可用资源量改变引起?

其中,可用资源量变化可以包括人为调整因素和非人为因素。

本实施例中,确定由分布式数据库的可用资源量改变引起时,执行步骤s29,确定不是由分布式数据库的可用资源量改变引起时,执行步骤s30。

s28:维持目前的资源泳道分配和sql执行情况,并维持动态监控。

s29:基于改变后的可用资源量,获得分布式数据库的新资源泳道信息,根据sql语句的评分信息和分布式数据库的新资源泳道信息,重新确定执行sql语句的目标资源泳道,将sql语句提交到目标资源泳道上执行,并维持动态监控。

本实施例中,可以基于改变后的可用资源量,根据每个资源指标的评分信息和预设资源配比,重新为每个资源泳道中对应的资源指标分配相应可用资源量,获得分布式数据库的新资源泳道信息,进而根据sql语句的评分信息和分布式数据库的新资源泳道信息,确定执行sql语句的目标资源泳道,将sql语句提交到目标资源泳道上执行,并维持动态监控。

s30:重新分析sql语句,获得sql语句的新评分信息。

本实施例中,可以重新分析异常的sql语句,将之前的评分方法更加细化,加大分析维度和分析时间,重新给出更准确的评分。

本实施例中,在获得sql语句的新评分信息后,可以根据sql语句的新评分信息和分布式数据库的资源泳道信息,确定执行sql语句的新目标资源泳道,并将sql语句提交到新目标资源泳道上执行。

s31:判断sql语句在新目标资源泳道上是否可以正常运行?

本实施例中,确定sql语句在新目标资源泳道上可以正常运行时,执行步骤s33,确定sql语句在新目标资源泳道上不可以正常运行时,执行步骤s32。

s32:停止执行该sql语句,并对此问题进行记录并报告。

s33:将sql语句的资源泳道更换为新目标资源泳道,使sql在分布式数据库中正常执行,并维持动态监控。

本说明书实施例,通过对分布式数据库和sql语句分别评分,并精细匹配合适的资源泳道,可以解决分布式数据库上sql语句运行和资源管理难度较大、粒度较粗、效果较差的问题。

本说明书实施例,可以对正在运行的sql语句和资源泳道分配进行实时动态调整。

本说明书实施例,与现有的按用户、模式等粗粒度资源管控方案相比,聚焦于资源消耗的主体(sql语句),使资源管控更加准确。此外,与现有基于cost值的二分类方案相比,资源管控手段更加精细,纳入管理的资源相关参数更加丰富。

本说明书实施例,可以实现对分布式数据库资源和sql运行负载的动态管理,可以更好的应对复杂业务场景下的动态变化,解决分布式数据库难以动态自适应管理的问题,从而增强资源管理的灵活性。

当然,上述只是进行示例性说明,本说明书实施例不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。

从以上的描述中,可以看出,本申请实施例可以获取待提交到分布式数据库上的sql语句,对sql语句进行维度分析,获得sql语句的评分信息。进一步可以根据sql语句的评分信息和分布式数据库的资源泳道信息,确定执行sql语句的目标资源泳道,将sql语句提交到目标资源泳道上执行,其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同。由于本说明书实施例可以对每个提交到分布式数据库上的sql语句,按照实际情况进行多方面分析并给出评分,依据评分进行sql语句分级并合理分配数据库资源,从而可以使分布式数据库的资源利用更加高效,使数据库资源管理更加精细化、可视化。进一步,还可以确保在大数据背景下,分布式数据库上的各种类型的sql语句能够分配到合理的资源,也可以保证分布式数据库本身能够更加精确的进行资源管控,从而保证数据库的稳定及高效率运行。

本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参照即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。

基于上述所述一种管理sql语句的方法,本说明书一个或多个实施例还提供一种管理sql语句的装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

具体地,图3是本说明书提供的一种管理sql语句的装置的一个实施例的模块结构示意图,如图3所示,本说明书提供的一种管理sql语句的装置可以包括:获取模块120,获得模块122,确定模块124,提交模块126。

获取模块120,可以用于获取待提交到分布式数据库上的sql语句;

获得模块122,可以用于对所述sql语句进行维度分析,获得所述sql语句的评分信息;

确定模块124,可以用于根据所述sql语句的评分信息和所述分布式数据库的资源泳道信息,确定执行所述sql语句的目标资源泳道;其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同;

提交模块126,可以用于将所述sql语句提交到所述目标资源泳道上执行。

需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。

本说明书还提供一种管理sql语句的设备的实施例,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:获取待提交到分布式数据库上的sql语句;对所述sql语句进行维度分析,获得所述sql语句的评分信息;根据所述sql语句的评分信息和所述分布式数据库的资源泳道信息,确定执行所述sql语句的目标资源泳道;其中,每个资源泳道对应的评分信息不同,同一资源指标在不同资源泳道对应的可用资源量不同;将所述sql语句提交到所述目标资源泳道上执行。

需要说明的,上述所述的设备根据方法或装置实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。

本说明书所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图4是本说明书提供的一种管理sql语句的服务器的一个实施例的硬件结构框图,该服务器可以是上述实施例中的管理sql语句的装置或管理sql语句的设备。如图4所示,服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图4中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、gpu,或者具有与图4所示不同的配置。

存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的管理sql语句的方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质可以包括:利用电能方式存储信息的装置如,各式存储器,如ram、rom等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的装置如,cd或dvd。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。

本说明书提供的上述管理sql语句的方法或装置实施例可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在pc端实现、linux系统实现,或其他例如使用android、ios系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。

需要说明的是说明书上述所述的装置、设备、系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参照即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把部分模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。

本发明是参照根据本发明实施例的方法、装置、设备、系统的流程图和/或方框图来描述的。应理解可由计算机程序指令实现,可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。

以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

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