一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

调用数据库的代价因子的校准方法、装置、设备及介质与流程

2022-09-03 22:01:52 来源:中国专利 TAG:


1.本技术涉及数据库技术领域,具体而言,本技术涉及一种调用数据库的代价因子的校准方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.查询优化器是关系型数据库以及一些大数据处理引擎的核心部件,查询优化器能够为查询语句制定一个最优执行计划,以便执行器根据所生成的执行计划进行数据操作。基于代价的优化器可以根据基数估计和代价模型确定各执行计划的成本,进而选择成本最低的执行计划作为最优执行计划;其中,代价因子是代价模型的重要参数之一,而代价因子的校准是查询优化器生成正确执行计划的关键一环。
3.现有技术中,通常根据校准查询进行差分计算以进行代价因子的校准,在此过程中需要依赖人工经验,人工成本较高且无法避免人为带来的误差,同时人工进行差分计算会造成校准效率低下的问题。


技术实现要素:

4.本技术实施例提供了一种调用数据库的代价因子的校准方法、装置、电子设备及计算机可读存储介质,可以解决现有技术中代价因子校准效率低下的问题。所述技术方案如下:
5.根据本技术实施例的一个方面,提供了一种调用数据库的代价因子的校准方法,该方法包括:
6.获取针对数据库的查询语句集合;
7.分别确定查询语句集合中各个查询语句的执行计划;其中,执行计划中包括至少一个算子;
8.执行每个执行计划,确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间;其中,目标基数表征相应各个算子调用数据库中数据集的行数;
9.根据每个执行计划中各个算子的目标基数和初始代价因子,确定每个执行计划的预估执行时间;
10.根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子;其中,代价因子表征相应各个算子的单位成本。
11.可选的,上述确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间,包括:
12.在执行完每个执行计划后,获取每个执行计划的执行数据;其中,执行数据包括执行计划的实际执行时间;
13.根据每个执行数据解析执行计划,确定每个执行计划的各个算子的目标基数。
14.可选的,上述确定每个执行计划的预估执行时间,包括:
15.为各个查询语句添加对应目标基数的限定条件;
16.根据限定条件执行各个查询语句的执行计划;
17.获取每个执行计划的执行过程中各个算子的初始代价因子的权重;
18.根据各个算子的初始代价因子和初始代价因子的权重,得到执行计划的预估执行时间。
19.可选的,上述根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子,包括:
20.根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数;
21.根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子。
22.可选的,上述根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子,包括:
23.根据损失函数计算各个算子的初始代价因子的变化量;
24.根据变化量调整各个算子的初始代价因子;
25.根据调整后的初始代价因子,确定损失函数的损失值;
26.当损失值小于预设阈值,得到代价因子。
27.可选的,上述根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数,包括:
28.确定所有执行计划所对应实际执行时间与预估执行时间的差值的均值;
29.基于均值构建损失函数。
30.根据本技术实施例的另一个方面,提供了一种调用数据库的代价因子的校准装置,该装置包括:
31.获取模块,用于获取针对数据库的查询语句集合;
32.确定模块,用于分别确定查询语句集合中各个查询语句的执行计划;其中,执行计划中包括至少一个算子;
33.执行模块,用于执行每个执行计划,确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间;其中,目标基数表征相应各个算子调用数据库中数据集的行数;
34.预估模块,用于根据每个执行计划中各个算子的目标基数和初始代价因子,确定每个执行计划的预估执行时间;
35.调整模块,用于根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子;其中,代价因子表征相应各个算子的单位成本。
36.可选的,上述执行模块在确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间时,用于:
37.在执行完每个执行计划后,获取每个执行计划的执行数据;其中,执行数据包括执行计划的实际执行时间;
38.根据每个执行数据解析执行计划,确定每个执行计划的各个算子的目标基数。
39.可选的,上述预估模块在确定每个执行计划的预估执行时间时,用于:
40.为各个查询语句添加对应目标基数的限定条件;
41.根据限定条件执行各个查询语句的执行计划;
42.获取每个执行计划的执行过程中各个算子的初始代价因子的权重;
43.根据各个算子的初始代价因子和初始代价因子的权重,得到执行计划的预估执行时间。
44.可选的,上述调整模块在根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子时,用于:
45.根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数;
46.根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子。
47.可选的,上述调整模块在根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子时,用于:
48.根据损失函数计算各个算子的初始代价因子的变化量;
49.根据变化量调整各个算子的初始代价因子;
50.根据调整后的初始代价因子,确定损失函数的损失值;
51.当损失值小于预设阈值,得到代价因子。
52.可选的,上述调整模块在根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数时,用于:
53.确定所有执行计划所对应实际执行时间与预估执行时间的差值的均值;
54.基于均值构建损失函数。
55.根据本技术实施例的另一个方面,提供了一种电子设备,该电子设备包括:存储器、处理器及存储在存储器上的计算机程序,上述处理器执行计算机程序以实现本技术实施例第一方面所示方法的步骤。
56.根据本技术实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本技术实施例第一方面所示方法的步骤。
57.根据本技术实施例的一个方面,提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现本技术实施例第一方面所示方法的步骤。
58.本技术实施例提供的技术方案带来的有益效果是:
59.本技术实施例针对查询语句集合中各个查询语句,生成对应的执行计划;接着在第一次执行每个执行计划时,确定每个执行计划的实际执行时间和各个算子调用数据库中数据集的实际行数即目标基数;然后在每个执行计划第二次执行过程中基于目标基数和初始代价因子对执行计划的执行时间进行估计,得到预估执行时间;进而根据所有执行计划的实际执行时间与预估执行时间的差值,调整各个算子的初始代价因子,直至上述差值收敛,得到各个算子校准后的代价因子。本技术实施例在确定了每个执行计划的各个算子的目标基数情况下,基于目标基数和初始代价因子对每个执行计划的执行时间进行估计,排除了基数估计的误差对执行计划成本估计的影响,提高了预估执行时间与初始代价因子的关联性;相比现有技术中,根据校准查询进行差分计算以完成代价因子的校准,本技术中基
于各个执行计划的实际执行时间和预估执行时间的差值进行回归训练,对初始代价因子进行调整,避免了现有技术中对人工经验的依赖,有效提升了代价因子校准的精确性和高效性。
附图说明
60.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
61.图1为本技术实施例提供的一种调用数据库的代价因子的校准方法的应用场景示意图;
62.图2为本技术实施例提供的一种调用数据库的代价因子的校准方法的流程示意图;
63.图3为本技术实施例提供的一种调用数据库的代价因子的校准方法中执行计划的执行流程示意图;
64.图4为本技术实施例提供的一种调用数据库的代价因子的校准方法中调整代价因子的流程示意图;
65.图5为本技术实施例提供的一个示例的调用数据库的代价因子的校准方法的流程示意图;
66.图6为本技术实施例提供的一种调用数据库的代价因子的校准装置的结构示意图;
67.图7为本技术实施例提供的一种调用数据库的代价因子的校准电子设备的结构示意图。
具体实施方式
68.下面结合本技术中的附图描述本技术的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本技术实施例的技术方案的示例性描述,对本技术实施例的技术方案不构成限制。
69.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“a和/或b”可以实现为“a”,或者实现为“b”,或者实现为“a和b”。
70.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
71.关系数据库系统指对应于一个关系模型的所有关系的集合。关系数据库系统建立了关系模型,并用它来处理数据。关系模型在表中将信息与字段关联起来,从而存储数据。
72.数据库管理系统需要结构(例如表)在存储数据之前被定义出来。有了表,每一列(字段)都存储一个不同类型(数据类型)的信息。数据库中的每个记录,都有自己唯一的key,作为属于某一表的一行,行中的每一个信息都对应了表中的一列——所有的关系一起,构成了关系模型
73.在关系模型中,实体以及实体间的联系都是用关系来表示的。例如:教师、学生、课程、授课和学习这些关系以及关系间的联系就组成一个教学管理数据库。因此,对应于一个关系模型的所有关系的集合称为关系数据库。
74.查询优化器(简称优化器)是负责生成sql(structured query language,结构化查询语言)语句的有效执行计划的数据库引擎组件,具体地说,查询优化器是关系型数据库管理系统针对用户的请求进行内部优化,生成(或重用)执行计划并传输给存储引擎来操作数据,最终返回结果给用户的组件。它是关系型数据库管理系统的核心之一,决定对特定的查询使用哪些索引、哪些关联算法、从而使其高效运行。
75.现有技术中,在对优化器对应的代价因子进行校准时,需要人为设计校准查询,然后利用上述校准查询进行差分计算,得到校准后的代价因子的值,整个过程需要较多的人工参与;同时,当数据库引入新的数据集时,上述校准查询还需要随之更新,导致校准的耗时长、校准效率较低。
76.本技术提供的调用数据库的代价因子的校准方法、装置、电子设备及计算机可读存储介质,旨在解决现有技术的如上技术问题。
77.下面通过对几个示例性实施方式的描述,对本技术实施例的技术方案以及本技术的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
78.如图1所示,本技术的调用数据库的代价因子的校准方法,可以应用于图1所示的场景中,具体的,服务器102可以从客户端101获取针对数据的查询语句集合;服务器102基于查询优化器分别确定查询语句集合中各个查询语句的执行计划;其中,执行计划中包括至少一个算子;接着服务器执行每个执行计划,并确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间;然后根据每个执行计划中各个算子的目标基数和初始代价因子,确定每个执行计划的预估执行时间;进而根据所有执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子。服务器102在得到校准后的代价因子后,可以基于该代价因子对客户端发送的查询进行执行代价预估。
79.图1所示的场景中,上述调用数据库的代价因子的校准方法可以在服务器中进行,在其他的场景中,也可以在终端中进行。
80.本技术领域技术人员可以理解,这里所使用的“终端”可以是手机、平板电脑、pda(personal digital assistant,个人数字助理)、mid(mobile internet device,移动互联网设备)等;“服务器”可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
81.本技术实施例中提供了一种调用数据库的代价因子的校准方法,如图2所示,可以应用于用于进行代价因子校准的服务器或终端,该方法包括:
82.s201,获取针对数据库的查询语句集合。
83.其中,上述查询语句用于调用数据库中的预设数据集。
84.在一些实施方式中,用于进行代价因子校准的服务器或终端,可以基于用户的输入操作实时采集查询语句。其中,用户的输入操作包括如下至少一项:
85.将查询语句对应的界面组件拖拽或移动至当前界面的预设范围内的操作;
86.针对查询语句对应的界面组件的点击或触摸操作;
87.在预设的输入控件中针对查询语句的输入操作。
88.在另一些实施方式中,用于进行代价因子校准的服务器或终端,可以基于有线或无线局域网获取其他客户端发送的查询语句集合。
89.其中,上述有线局域网可以是基于ieee 802.3(一种局域网通信标准)协议的以太网,无线局域网可以是基于ieee 802.11(一种无线网络通信的标准)协议的wi-fi(一种无线通信技术)。
90.s202,分别确定查询语句集合中各个查询语句的执行计划;其中,执行计划中包括至少一个算子。
91.具体的,用于进行代价因子校准的服务器或终端,可以分别对各个查询语句进行语法和语义解析,以生成各个查询语句的执行计划。
92.其中,执行计划可以是由物理操作符构成的执行树。物理操作符一般对应一个算子,如扫描、联接、聚合、排序等算子。执行计划通过将不同的物理操作符按照一定的先后顺序组织在一执行树中,以完成对应查询语句的查询。
93.s203,执行每个执行计划,确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间。
94.其中,目标基数表征相应各个算子调用数据库中数据集的行数。
95.具体的,用于进行代价因子校准的服务器或终端,可以基于优化器执行每个执行计划,并在执行之后获取执行计划的实际执行时间以及执行计划中各个算子的目标基数。
96.在本技术实施例中,以数据库管理系统为例进行具体说明,该系统运行于用于进行代价因子校准的服务器或终端之上,该系统可以包括查询优化器组件;当查询语句为“select*fromtwherea 1《3”,该查询语句指示查询表格t中满足a 1《3条件的字段,且该查询语句中包括选择算子和扫描算子,查询优化器组件可以基于explain analyze指令执行该计划,并得到该计划的实际执行时间t和各算子的处理行数;在查询优化组件的初始成本预估模型中,选择算子和扫描算子的基数估计均为10行,而实际执行后可以得到选择算子的目标基数12行、扫描算子的目标基数15行。
97.s204,根据每个执行计划中各个算子的目标基数和初始代价因子,确定每个执行计划的预估执行时间。
98.具体的,用于进行代价因子校准的服务器或终端,可以基于优化器再次执行每个执行计划,并在各执行计划的执行过程中根据对应的目标基数和初始代价因子预估每个执行计划的预估执行时间。
99.在本技术实施例中,以数据库管理系统为例进行具体说明,该系统运行于用于进行代价因子校准的服务器或终端之上,该系统可以包括查询优化器组件;当查询语句为“select*fromtwherea 1《3”,该查询语句指示查询表格t中满足a 1《3条件的字段,且该查询语句中包括选择算子和扫描算子,查询优化器组件可以根据explain analyze命令执行
该执行计划,并获取执行计划的成本预估数据。其中,该查询优化器组件可以根据初始代价因子和各算子的目标基数进行成本预估,得到该执行计划的预估执行时间t1。
100.s205,根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子。
101.其中,代价因子表征相应各个算子的单位成本。
102.具体的,用于进行代价因子校准的服务器或终端,可以将所有执行计划的实际执行时间与预估执行时间作为训练集,根据该训练集进行回归训练,得到回归训练之后的每个执行计划中各个算子校准后的代价因子;其中,回归训练的过程包括:
103.根据所有执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至上述差值的总和最小,即差值收敛,得到每个执行计划中各个算子校准后的代价因子。
104.本技术实施例针对查询语句集合中各个查询语句,生成对应的执行计划;接着在第一次执行每个执行计划时,确定每个执行计划的实际执行时间和各个算子调用数据库中数据集的实际行数即目标基数;然后在每个执行计划第二次执行过程中基于目标基数和初始代价因子对执行计划的执行时间进行估计,得到预估执行时间;进而根据所有执行计划的实际执行时间与预估执行时间的差值,调整各个算子的初始代价因子,直至上述差值收敛,得到各个算子校准后的代价因子。本技术实施例在确定了每个执行计划的各个算子的目标基数情况下,基于目标基数和初始代价因子对每个执行计划的执行时间进行估计,排除了基数估计的误差对执行计划成本估计的影响,提高了预估执行时间与初始代价因子的关联性;相比现有技术中,根据校准查询进行差分计算以完成代价因子的校准,本技术中基于各个执行计划的实际执行时间和预估执行时间的差值进行回归训练,对初始代价因子进行调整,避免了现有技术中对人工经验的依赖,有效提升了代价因子校准的精确性和高效性。
105.本技术实施例中提供了一种可能的实现方式,如图3所示,上述步骤s203中确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间,包括:
106.在执行完每个执行计划后,获取每个执行计划的执行数据;其中,执行数据包括执行计划的实际执行时间;根据每个执行数据解析执行计划,确定每个执行计划的各个算子的目标基数。
107.具体的,用于进行代价因子校准的服务器或终端,可以根据explain analyze指令执行每个执行计划,在执行完每个执行计划后,可以获取执行计划的执行数据;其中,该执行数据包括运行该执行计划所消耗的总时间即实际执行时间、执行计划中每个算子对应的实际处理行数和行宽、执行计划的预估执行时间和每个算子对应的预估处理行数和行宽。其中,上述预估执行时间是根据预估处理行数和行宽确定的,预估处理行数和行宽是根据初始代价因子和估计基数确定的。
108.本技术实施例中提供了一种可能的实现方式,上述步骤s204中确定每个执行计划的预估执行时间,包括:
109.(1)为各个查询语句添加对应目标基数的限定条件。
110.具体的,用于进行代价因子校准的服务器或终端,可以采用hint指令为各个查询
语句添加对应目标基数的限定条件。
111.(2)根据限定条件执行各个查询语句的执行计划;获取每个执行计划的执行过程中各个算子的初始代价因子的权重。
112.其中,上述初始代价因子的权重可以是根据对应算子的预估处理行数和预估处理行宽得到。
113.初始代价因子的权重基于不同算子指示不同计算方式,在一些实施方式中,初始代价因子的权重可以是对应算子的预估处理行数和预估处理行宽的乘积;在另一些实施方式中,初始代价因子的权重可以是对应算子的预估处理行宽的对数值与预估处理行数的乘积。
114.具体的,用于进行代价因子校准的服务器或终端,采用explain analyze指令运行添加限定条件之后的查询语句,以在执行对应执行计划过程中基于该限定条件对执行计划的执行成本进行估计。
115.(3)根据各个算子的初始代价因子和初始代价因子的权重,得到执行计划的预估执行时间。
116.具体的,可以确定执行计划中各个算子的初始代价因子和对应权重的乘积,然后将执行计划中所有算子对应的乘积的加和作为该执行计划的预估执行时间。
117.在本技术实施例中,以数据库管理系统为例进行具体说明,该系统运行于用于进行代价因子校准的服务器或终端之上,该系统可以包括查询优化器组件;当查询语句为“select*fromtwherea 1《3”,该查询语句指示查询表格t中满足a 1《3条件的字段,且该查询语句中包括选择算子和扫描算子,查询优化器组件可以基于explain analyze指令执行该计划,并得到该计划的实际执行时间t和各算子的处理行数;explain analyze指令还可以输出在查询优化组件的初始成本预估模型中,选择算子和扫描算子的基数估计均为10行,以及实际执行得到的选择算子的目标基数12行、扫描算子的目标基数15行。接着,可以采用hint指令为该查询语句添加对应目标基数的限定条件:select/* cardinality(scan,15),cardinality(selection,12)*/*fromtwherea 1《3。
118.接着,可以基于explain analyze命令运行上述添加限定条件的查询语句,得到各初始代价因子对应的权重。例如,选择算子的初始代价因子为x1,扫描算子的初始代价因子为x2,可以根据explain analyze命令的执行结果得到x1的权重为a1,x2的权重为a2;则查询语句对应执行计划的预估执行时间t1=x1*a1 x2*a2。
119.本技术实施例中提供了一种可能的实现方式,如图4所示,上述步骤s205中根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子,包括:
120.(1)根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数。
121.本技术实施例中提供了一种可能的实现方式,上述根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数,包括:
122.确定所有执行计划所对应实际执行时间与预估执行时间的差值的均值;基于均值构建损失函数。
123.在本技术实施例中,可以将每个执行计划中所对应的初始代价因子和初始代价因子作为向量进行后续计算;例如,当查询语句的执行计划包括选择算子、扫描算子、聚合算
子,上述算子对应的初始代价因子包括:选择代价因子x1、扫描代价因子x2、内存代价因子x3、cpu代价因子x4,其中,xi的权重为ai,i∈[1,4],i为整数。
[0124]
上述语句对应的执行时间为t1,则该执行计划的预估执行时间与实际执行时间的差值g可以基于如下公式得到:
[0125][0126]
在实际应用中,可以将所有执行计划中的相同初始代价因子的权重进行累加,可以设定损失函数l为:
[0127][0128]
其中,j为初始代价因子的个数,n为查询语句的数量,bj为所有执行计划中的相同初始代价因子的权重的累加值,j、n为正整数。
[0129]
(2)根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子。
[0130]
本技术实施例中提供了一种可能的实现方式,上述根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子,包括:
[0131]
a、根据损失函数计算各个算子的初始代价因子的变化量。
[0132]
具体的,可以根据损失函数对各个初始代价因子求偏导数,确定各个初始代价因子的变化量δxj,其中,
[0133]
b、根据变化量调整各个算子的初始代价因子。
[0134]
可以上述变化量累加到对应的初始代价因子中,得到调整后的初始代价因子x
′j=xj δxj。
[0135]
c、根据调整后的初始代价因子,确定损失函数的损失值。
[0136]
可以将调整后的初始代价因子带入损失函数,计算损失函数的损失值。
[0137]
d、当损失值小于预设阈值,得到代价因子。
[0138]
重复进行上述步骤a至c的计算,直至损失值小于预设阈值,停止调整,得到校准完成的代价因子。
[0139]
为了更好的理解上述调用数据库的代价因子的校准方法,下面结合图5详细阐述一个本技术的调用数据库的代价因子的校准方法的示例,该方法可以运行于数据库管理系统,该数据库管理系统包括查询优化器,上述数据库管理系统可以是postgresql(一种对象-关系型数据库管理系统)或mysql(一种关系型数据库管理系统)在本技术实施例中不做具体限制,该方法包括如下步骤:
[0140]
s501,获取针对数据库的查询语句集合。
[0141]
s502,查询优化器分别确定查询语句集合中各个查询语句的执行计划。
[0142]
其中,执行计划中包括至少一个算子。
[0143]
s503,查询优化器根据explain analyze指令执行每个执行计划,获取每个执行计划的执行数据;其中,执行数据包括执行计划的实际执行时间;根据每个执行数据解析执行计划,确定每个执行计划的各个算子的目标基数。
[0144]
s504,采用hint指令为各个查询语句添加对应目标基数的限定条件。
[0145]
s505,查询优化器根据explain analyze指令执行各个添加了限定条件后的查询语句的执行计划;获取每个执行计划的执行过程中各个算子的初始代价因子的权重。
[0146]
s506,根据各个算子的初始代价因子和初始代价因子的权重,得到执行计划的预估执行时间。
[0147]
s507,确定所有执行计划所对应实际执行时间与预估执行时间的差值的均值;基于均值构建损失函数。
[0148]
s508,根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子。
[0149]
本技术实施例通过针对查询语句集合中各个查询语句,生成对应的执行计划;接着在第一次执行每个执行计划时,确定每个执行计划的实际执行时间和各个算子调用数据库中数据集的实际行数即目标基数;然后在每个执行计划第二次执行过程中基于目标基数和初始代价因子对执行计划的执行时间进行估计,得到预估执行时间;进而根据所有执行计划的实际执行时间与预估执行时间的差值,调整各个算子的初始代价因子,直至上述差值收敛,得到各个算子校准后的代价因子。本技术实施例在确定了每个执行计划的各个算子的目标基数情况下,基于目标基数和初始代价因子对每个执行计划的执行时间进行估计,排除了基数估计的误差对执行计划成本估计的影响,提高了预估执行时间与初始代价因子的关联性;相比现有技术中,根据校准查询进行差分计算以完成代价因子的校准,本技术中基于各个执行计划的实际执行时间和预估执行时间的差值进行回归训练,对初始代价因子进行调整,避免了现有技术中对人工经验的依赖,有效提升了代价因子校准的精确性和高效性。
[0150]
本技术实施例提供了一种调用数据库的代价因子的校准装置,如图6所示,该调用数据库的代价因子的校准装置60可以包括:获取模块601、确定模块602、执行模块603、预估模块604和调整模块605;
[0151]
其中,获取模块601,用于获取针对数据库的查询语句集合;
[0152]
确定模块602,用于分别确定查询语句集合中各个查询语句的执行计划;其中,执行计划中包括至少一个算子;
[0153]
执行模块603,用于执行每个执行计划,确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间;其中,目标基数表征相应各个算子调用数据库中数据集的行数;
[0154]
预估模块604,用于根据每个执行计划中各个算子的目标基数和初始代价因子,确定每个执行计划的预估执行时间;
[0155]
调整模块605,用于根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子;其中,代价因子表征相应各个算子的单位成本。
[0156]
本技术实施例中提供了一种可能的实现方式,上述执行模块603在确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间时,用于:
[0157]
在执行完每个执行计划后,获取每个执行计划的执行数据;其中,执行数据包括执行计划的实际执行时间;
[0158]
根据每个执行数据解析执行计划,确定每个执行计划的各个算子的目标基数。
[0159]
本技术实施例中提供了一种可能的实现方式,上述预估模块604在确定每个执行计划的预估执行时间时,用于:
[0160]
为各个查询语句添加对应目标基数的限定条件;
[0161]
根据限定条件执行各个查询语句的执行计划;
[0162]
获取每个执行计划的执行过程中各个算子的初始代价因子的权重;
[0163]
根据各个算子的初始代价因子和初始代价因子的权重,得到执行计划的预估执行时间。
[0164]
本技术实施例中提供了一种可能的实现方式,上述调整模块605在根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子时,用于:
[0165]
根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数;
[0166]
根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子。
[0167]
本技术实施例中提供了一种可能的实现方式,上述调整模块605在根据损失函数调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得代价因子时,用于:
[0168]
根据损失函数计算各个算子的初始代价因子的变化量;
[0169]
根据变化量调整各个算子的初始代价因子;
[0170]
根据调整后的初始代价因子,确定损失函数的损失值;
[0171]
当损失值小于预设阈值,得到代价因子。
[0172]
本技术实施例中提供了一种可能的实现方式,上述调整模块605在根据所有执行计划的实际执行时间与预估执行时间的差值确定损失函数时,用于:
[0173]
确定所有执行计划所对应实际执行时间与预估执行时间的差值的均值;
[0174]
基于均值构建损失函数。
[0175]
本技术实施例的装置可执行本技术实施例所提供的方法,其实现原理相类似,本技术各实施例的装置中的各模块所执行的动作是与本技术各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
[0176]
本技术实施例针对查询语句集合中各个查询语句,生成对应的执行计划;接着在第一次执行每个执行计划时,确定每个执行计划的实际执行时间和各个算子调用数据库中数据集的实际行数即目标基数;然后在每个执行计划第二次执行过程中基于目标基数和初始代价因子对执行计划的执行时间进行估计,得到预估执行时间;进而根据所有执行计划的实际执行时间与预估执行时间的差值,调整各个算子的初始代价因子,直至上述差值收敛,得到各个算子校准后的代价因子。本技术实施例在确定了每个执行计划的各个算子的目标基数情况下,基于目标基数和初始代价因子对每个执行计划的执行时间进行估计,排除了基数估计的误差对执行计划成本估计的影响,提高了预估执行时间与初始代价因子的关联性;相比现有技术中,根据校准查询进行差分计算以完成代价因子的校准,本技术中基于各个执行计划的实际执行时间和预估执行时间的差值进行回归训练,对初始代价因子进行调整,避免了现有技术中对人工经验的依赖,有效提升了代价因子校准的精确性和高效性。
[0177]
本技术实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现调用数据库的代价因子的校准方法的步骤,与相关技术相比可实现:本技术实施例针对查询语句集合中各个查询语句,生成对应的执行计划;接着在第一次执行每个执行计划时,确定每个执行计划的实际执行时间和各个算子调用数据库中数据集的实际行数即目标基数;然后在每个执行计划第二次执行过程中基于目标基数和初始代价因子对执行计划的执行时间进行估计,得到预估执行时间;进而根据所有执行计划的实际执行时间与预估执行时间的差值,调整各个算子的初始代价因子,直至上述差值收敛,得到各个算子校准后的代价因子。本技术实施例在确定了每个执行计划的各个算子的目标基数情况下,基于目标基数和初始代价因子对每个执行计划的执行时间进行估计,排除了基数估计的误差对执行计划成本估计的影响,提高了预估执行时间与初始代价因子的关联性;相比现有技术中,根据校准查询进行差分计算以完成代价因子的校准,本技术中基于各个执行计划的实际执行时间和预估执行时间的差值进行回归训练,对初始代价因子进行调整,避免了现有技术中对人工经验的依赖,有效提升了代价因子校准的精确性和高效性。
[0178]
在一个可选实施例中提供了一种电子设备,如图7所示,图7所示的电子设备700包括:处理器701和存储器703。其中,处理器701和存储器703相连,如通过总线702相连。可选地,电子设备700还可以包括收发器704,收发器704可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器704不限于一个,该电子设备700的结构并不构成对本技术实施例的限定。
[0179]
处理器701可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
[0180]
总线702可包括一通路,在上述组件之间传送信息。总线702可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线702可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0181]
存储器703可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
[0182]
存储器703用于存储执行本技术实施例的计算机程序,并由处理器701来控制执
行。处理器701用于执行存储器703中存储的计算机程序,以实现前述方法实施例所示的步骤。
[0183]
其中,电子设备包括但不限于:诸如移动电话、笔记本电脑、pad等等移动终端以及诸如数字tv、台式计算机等等固定终端。
[0184]
本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
[0185]
本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行时实现如下情况:
[0186]
获取针对数据库的查询语句集合;
[0187]
分别确定查询语句集合中各个查询语句的执行计划;其中,执行计划中包括至少一个算子;
[0188]
执行每个执行计划,确定每个执行计划中的各个算子的目标基数和每个执行计划的实际执行时间;其中,目标基数表征相应各个算子调用数据库中数据集的行数;
[0189]
根据每个执行计划中各个算子的目标基数和初始代价因子,确定每个执行计划的预估执行时间;
[0190]
根据每个执行计划的实际执行时间与预估执行时间的差值,调整每个执行计划中各个算子的初始代价因子,直至差值收敛,获得每个执行计划中各个算子的代价因子;其中,代价因子表征相应各个算子的单位成本。
[0191]
本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除图示或文字描述以外的顺序实施。
[0192]
应该理解的是,虽然本技术实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本技术实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本技术实施例对此不限制。
[0193]
以上所述仅是本技术部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术的方案技术构思的前提下,采用基于本技术技术思想的其他类似实施手段,同样属于本技术实施例的保护范畴。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献