数据库操作语句的执行效率优化方法及装置与流程

文档序号:30091991发布日期:2022-05-18 09:23阅读:142来源:国知局
数据库操作语句的执行效率优化方法及装置与流程

1.本公开涉及数据库技术领域,特别是涉及一种数据库操作语句的执行效率优化方法及装置。


背景技术:

2.数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
3.通过执行遵循数据库查询和程序设计语言编写的数据库操作语句,可以查询、更新和管理数据库。数据库操作语句的执行效率通常受多方面因素的影响,然而现有的优化方案主要是通过分析数据库查询语句的设计是否合理来进行调优,使得优化效率有限。
4.因此,需要一种更为行之有效的数据库操作语句执行效率优化方案。


技术实现要素:

5.本公开要解决的一个技术问题是提供一种更为行之有效的数据库操作语句执行效率优化方案。
6.根据本公开的第一个方面,提供了一种数据库操作语句的执行效率优化方法,包括:在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息;基于采集到的信息生成诊断报告和/或优化建议。
7.可选地,所述生命周期包括执行所述数据库操作语句之前的执行前阶段,在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息的步骤包括:在所述执行前阶段采集与数据库操作语句的执行效率相关的信息,基于采集到的信息生成效率诊断报告和/或优化建议的步骤包括:基于采集到的信息生成预执行建议,该方法还包括:在执行所述数据库操作语句之前,基于所述预执行建议执行优化操作。
8.可选地,所述数据库操作语句针对的数据库为mpp数据库,在所述解析阶段采集与数据库操作语句的执行效率相关的信息的步骤包括:获取与所述数据库操作语句涉及的表相关的表信息;和/或分析所述数据库操作语句中的查询条件是否合理;和/或对所述数据库操作语句的执行计划进行预估;和/或检测各主机上主选节点的数量是否和主机资源匹配。
9.可选地,分析所述数据库操作语句中的查询条件是否合理的步骤包括:检测所述数据库操作语句中是否存在join条件隐患;和/或检测所述数据库操作语句中where条件过滤后结果集在表中占比低于预设阈值的查询对应的表是否存在索引。
10.可选地,所述表信息包括第一表信息和第二表信息,所述第一表信息用于表征表的基本信息,所述第二表信息用于表征对表进行统计和/或分析得到的信息,所述第一表信息包括以下至少一项:分布键、行列存、表压缩、字段数、主键、唯一约束、分区数,所述第二表信息包括以下至少一项:磁盘空间占用明细、统计信息、膨胀情况、倾斜情况。
11.可选地,所述预执行建议包括以下至少一项:表设计建议;join条件隐患提示;索
引推荐;执行计划瓶颈提示;执行计划建议;节点平衡状态提示;表倾斜情况提示;统计信息提示。
12.可选地,所述生命周期包括用于表征所述数据库操作语句的实际执行过程的执行阶段,在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息的步骤包括:在所述执行阶段采集实际执行过程中与数据库操作语句的执行效率相关的信息,基于采集到的信息生成效率诊断报告和/或优化建议的步骤包括:将采集到的信息作为辅助优化信息。
13.可选地,所述数据库操作语句针对的数据库为mpp数据库,在所述执行阶段采集实际执行过程中与数据库操作语句的执行效率相关的信息的步骤包括:对所述实际执行过程中数据库的状态进行监测,得到数据库的状态信息;和/或对所述实际执行过程中节点所在主机的负载进行监测,得到主机的负载信息;和/或对所述实际执行过程中节点的执行状态进行监测,得到节点的状态信息。
14.可选地,该方法还包括:基于分析工具生成所述数据库操作语句的实际执行计划,并在所述执行阶段对所述数据库操作语句的实际执行情况进行分析。
15.可选地,该方法还包括:设置一个或多个优化器,在所述优化器的优化作用下生成并执行所述数据库操作语句的实际执行计划。
16.可选地,所述生命周期包括所述数据库操作语句的实际执行过程结束后的执行后阶段,在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息的步骤还包括:在所述执行后阶段获取多个对应不同优化器的实际执行计划,基于采集到的信息生成效率诊断报告和/或优化建议的步骤包括:对多个所述实际执行计划进行对比,得到能够反映不同优化器的执行差异的信息。
17.可选地,基于采集到的信息生成效率诊断报告和/或优化建议的步骤还包括:生成新的执行计划和/或实际执行计划瓶颈提示。
18.根据本公开的第二个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。
19.根据本公开的第三个方面,提供了一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上述第一方面所述的方法。
20.根据本公开的第四个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。
21.由此,本公开通过在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息,使得基于采集到的信息生成的诊断报告和/或优化建议,能够全面、准确地优化数据库操作语句的执行效率。
附图说明
22.通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
23.图1示出了根据本公开一个实施例的执行效率优化方法的示意性流程图。
24.图2示出了根据本公开一个实施例的面向mpp数据库的效率诊断和优化辅助方案的示意性流程图。
25.图3示出了根据本公开一个实施例的执行效率优化装置的结构示意图。
26.图4示出了根据本公开一个实施例的计算设备的结构示意图。
具体实施方式
27.下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
28.本公开提出,以数据库操作语句的生命周期为数据采集期间,在数据库操作语句的生命周期内对优化所需的信息进行采集、处理,最终生成有助于提升数据库操作语句执行效率的诊断报告和/或优化建议。
29.数据库操作语句的生命周期能够反映数据库操作语句从执行前到执行结束后的过程。通过在数据库操作语句的生命周期内执行信息采集操作,使得能够采集到任何有助于提升数据库操作语句的执行效率的信息,进而使得基于采集到的信息生成的诊断报告和/或优化建议能够全面、准确地优化数据库操作语句的执行效率。
30.图1示出了根据本公开一个实施例的执行效率优化方法的示意性流程图。
31.参见图1,在步骤s110,在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息。
32.数据库操作语句是指基于数据库查询语言编写的用于对数据库进行操作的语句。例如,数据库操作语句可以是基于sql(结构化查询语言,structured query language)编写的语句,即sql语句。
33.数据库操作语句的生命周期可以是指从数据库操作语句的生成到数据库操作语句执行完毕后的过程。数据库操作语句的生命周期可以划分为多个阶段。即,数据库操作语句的生命周期可以包括多个阶段。例如,数据库操作语句的生命周期可以包括执行前、执行中以及执行后这三个阶段。
34.采集操作可以发生在数据库操作语句的部分生命周期内,也可以发生在数据库操作语句的整个生命周期内。作为优选方案,采集操作可以发生在数据库操作语句的整个生命周期内,以尽可能多的采集与数据库操作语句的执行效率相关的信息
35.采集与数据库操作语句的执行效率相关的信息,可以是指对优化数据库操作语句的执行效率所需的各类信息进行采集。“执行效率”可以是指数据库操作语句在执行过程中一个或多个阶段(或步骤)的执行效率,也可以是指数据库操作语句在执行过程中的整体执行效率。
36.在步骤s120,基于采集到的信息生成诊断报告和/或优化建议。
37.可以通过对采集到的信息进行分析处理,生成诊断报告和/或优化建议。
38.例如,可以基于采集到的信息,对数据库操作语句的执行效率进行诊断,得到能够表征影响数据库操作语句的执行效率的因素的诊断报告;并且/或者,可以通过对采集到的
信息进行分析,确定影响数据库操作语句的执行效率的因素,并据此生成相应的优化建议。
39.生成的诊断报告和/或优化建议可以输出给用户,以使得用户可以根据诊断报告和/或优化建议对数据库操作语句的执行效率进行优化。
40.如上文所述,数据库操作语句的生命周期可以包括执行前、执行中和执行后三个阶段。本公开可以在这三个阶段中的任意一个阶段或全部阶段执行数据采集操作(即步骤s110),并生成对应不同阶段的诊断报告和/或优化建议。其中,在后阶段的诊断报告和/或优化建议的生成可以依赖于本阶段以及在前任意一个阶段采集的信息。
41.下面进一步描述本公开在不同阶段的具体实现流程。
42.需要说明的是,本公开的优化方法可以适用于各种数据库。
43.采用mpp(massively parallel processing,大规模并行处理)架构的数据库称为mpp数据库。mpp架构是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。
44.mpp数据库由master(主节点)和segment(节点)组成。master是用户访问mpp的入口。所有的用户操作是通过master进行的。master包含了整个分布式数据库中的所有元数据,如表结构定义、索引、数据分布信息等等。master并不存储实际的数据,实际的数据存储在segment。master接收用户发过来的sql命令,解析生成分布式的执行计划,再把执行计划下发到对应的segment进行执行。segment执行完的结果会发送到master上,master接收到segment的结果进行汇总并返回执行结果给用户。
45.与单机数据库不同,mpp数据库的sql执行效率会受到诸如倾斜、锁、并发等因素的影响,且集群中每个节点的状态都会影响最终结果的返回,这使得sql效率优化成为用好mpp数据库的难题。其中,倾斜是指任务并行分散到多个服务器和节点上后,大部分节点执行完成,等待少数几个节点执行导致查询无法返回的现象。
46.考虑到影响mpp数据库的数据库操作语句的执行效率的因素比较复杂,mpp数据库的优化比较困难。下面以mpp数据库为例描述本公开的方案,应该知道,本公开还可以适用于其他类型数据库的执行效率优化。
47.执行前阶段
48.数据库操作语句的生命周期可以包括执行数据库操作语句之前的执行前阶段。在执行前阶段可以对数据库操作语句进行解析,得到数据库操作语句的解析结果。
49.可以在执行前阶段采集与数据库操作语句的执行效率相关的信息。
50.基于采集到的信息可以生成预执行建议。预执行建议,也即执行数据库操作语句之前预先生成的优化建议。在执行数据库操作语句之前,可以基于预执行建议执行优化操作,以提前排查、解决一部分影响数据库操作语句的执行效率的问题。
51.在执行前阶段执行的信息采集操作可以包括但不限于如下一种或多种。
52.1、获取与数据库操作语句涉及的表相关的表信息
53.数据库操作语句涉及的表可以是物理表,也可以是视图的底层表(即逻辑表)。
54.表信息可以包括第一表信息和第二表信息。
55.第一表信息用于表征表的基本信息,第一表信息也可以称为表基本信息;第二表信息用于表征对表进行统计和/或分析得到的信息,第二表信息也可以称为表高级信息。
56.具体而言,第一表信息可以包括但不限于分布键、行列存、表压缩、字段数、主键、
唯一约束、分区数中的任意一项或多项;第二表信息可以包括但不限于磁盘空间占用明细、统计信息、膨胀情况、倾斜情况中的任意一项或多项。
57.统计信息是指对表进行统计得到的信息,可以包括但不限于直方图(histogram)、密度信息(density information)和字符串统计信息(string statistics)等。其中,在对表进行统计得到统计信息时,对于比较耗时的统计操作(如count),可以设为可选性。
58.2、分析数据库操作语句中的查询条件是否合理
59.数据库操作语句中的查询条件可以包括但不限于join条件、where条件。
60.针对数据库操作语句中的join条件,可以检测是否存在join条件隐患,以发现由于查询条件设置不合理可能带来的结果集膨胀,而影响数据库性能的问题。
61.可以从以下两方面进行join条件隐患检测:(1)笛卡尔积判断:sql中的表没有和其他任何表进行关联,必然带来结果集暴涨;(2)join放大预警:关联后结果集大于表行数最大值,即存在1:n的关联方式,需要确定是否符合应用要求。
62.针对数据库操作语句中的where条件,可以检测where条件过滤后结果集在表中占比低于预设阈值(如30%)的查询对应的表是否存在索引。若不存在索引,则查询效率势必会受到影响。
63.3、对数据库操作语句的执行计划进行预估
64.可以基于explain关键字对数据库操作语句的执行计划进行预估。使用explain关键字可以模拟优化器执行数据库操作语句,以预估数据库操作语句的执行过程,得到模拟的执行过程中各个步骤的耗时情况。
65.4、检测各主机上节点的数量是否和主机资源匹配
66.按照mpp规划,每个segment具有一个主选节点(主segment)和备用节点(mirror segment)。正常情况下主segment执行master分配的任务,主segment不可用时mirror segment转换为新的主segment执行任务,原先的主segment转换为mirror segment。
67.主备切换导致部分服务器负载过高而产生不均衡的现象,称为segment不平衡。发生segment不平衡时需要集群执行segment重平衡操作。一个比较典型的场景是,某一台主机宕机后,这台主机上的主segment会切换到备用节点所在的主机上,宕机的这台机器恢复重建segment后这台主机上的segment都是mirror segment,负载很低,集群中segment的分布就是不平衡的。
68.通过检测集群中各主机上主segment的数量是否和主机资源匹配,可以判断集群中是否存在segment不平衡问题。集群也即执行sql的系统,该系统中可以包括多个主机,每个主机上可以部署一个或多个segment。
69.基于在执行前阶段采集的上述信息生成的预执行计划可以包括但不限于以下至少一项:表设计建议;join条件隐患提示;索引推荐;执行计划瓶颈提示;执行计划建议;节点平衡状态提示;表倾斜情况提示;统计信息情况提示。
70.表设计建议可以是基于表信息(如表基本信息)和数据库操作语句(如数据库操作语句的解析结果)生成的表设计较佳实践建议。表设计建议的内容可以包括但不限于关联字段分布键建议、小表复制表建议、大表列存压缩建议。
71.分布键建议,是指可以将数据库操作语句中的最大表关联字段建议设为该表的分布键。通过判断表分布建字段是否和表间关联字段一致可以给出分布键建议。即,如果表分
布建字段是和表间关联字段不一致则可以生成分布键建议。
72.小表复制表建议,是指对于数据库操作语句涉及2个以上小表查询且关联字段都不是小表分布键的查询,可以建议将小表设置为复制表。其中,小表可以是指数据量小于或等于第一阈值(如行数在10w行以内)的表。
73.大表列存压缩建议,是指对于数据量大于第二阈值(如1亿行)的行存表,建议用户在非频繁更新场景下考虑设置为列存压缩表,以节省io开销、提升查询效率。
74.join条件隐患提示是指在检测到可能存在join条件隐患的情况下生成相应的提示。
75.索引推荐是指在检测到数据库操作语句中where条件过滤后结果集在表中占比低于预设阈值的查询对应的表不存在索引时,生成索引推荐。其中多个条件建议添加联合索引。
76.执行计划瓶颈提示是指基于执行计划预估结果提示执行计划中耗时较长的步骤。例如,可以对执行cost(或者实际执行时间)占比达到20%的步骤标红,提醒执行者重点关注。
77.执行计划建议可以是指基于explain对执行计划进行预估得到的结果,生成的新的优化后的执行计划。
78.节点平衡状态提示用于提示集群中节点的平衡状态。其中,可以基于各主机上节点的数量是否和主机资源匹配的检测结果,判断集群中是否存在segment不平衡问题。
79.执行阶段
80.数据库操作语句的生命周期还可以包括用于表征数据库操作语句的实际执行过程的执行阶段(也可以称为执行中阶段)。
81.与上文提及的执行前阶段所使用的explain关键字不同,explain关键字是对数据库操作语句的执行过程进行评估,在评估过程中数据库操作语句并未真正执行。
82.执行阶段表征的则是数据库操作语句的实际执行计划的实际执行过程。
83.因此,在执行阶段可以采集到执行前阶段无法获取的、能够真实反映数据库操作语句的实际执行过程中与数据库操作语句的执行效率相关的信息。例如,执行过程中各个节点(master和segment)所在主机的负载情况、数据库状态、各个节点的监测情况等。
84.在执行阶段采集到的能够真实反映数据库操作语句的实际执行过程中与数据库操作语句的执行效率相关的信息,可以作为辅助优化信息提供给用户。
85.在执行阶段可以采集如下一种或多种信息。
86.1、数据库的状态信息
87.可以在数据库操作语句的执行过程中对数据库的状态进行监测,以实时获取数据库的状态信息(即数据库状态快照)。数据库的状态可以包括但不限于锁、活跃会话、外部交换文件(workfile)。其中,外部交换文件是segment查询内存不足时使用的文件。
88.数据库的状态可以用于判断数据库负载情况。例如,数据库的状态可以作为高负载下数据库操作语句执行性能退化的判断依据。
89.因此,可以将在数据库操作语句实际执行过程中采集到的数据库的状态信息作为优化辅助信息,提供给用户。
90.2、主机负载信息
91.可以通过主机或者设置在主机上的应用程序接口(api)监测数据库操作语句实际执行过程中,各节点(master和segment)所在主机的cpu、io、mem(内存)、net(网络带宽)等负载信息。
92.主机的负载信息可以用于性能瓶颈判断,因此可以将在数据库操作语句实际执行过程中采集到的主机的负载信息作为优化辅助信息,提供给用户。
93.3、节点的状态信息
94.可以对数据库操作语句的实际执行过程中节点(master和segment)的执行状态进行监测,得到节点的状态信息。
95.以对segment的执行状态进行监测为例,通过监测各个segment的执行状态,可以确定数据库操作语句在各个segment的执行情况,从而方便定位计算不平衡问题。例如,若发现一条数据库操作语句在大部分segment都执行结束,仅剩一两个segment一直在执行,基本上可以判断计算不平衡。
96.作为示例,可以选择使用分析工具(如explain analyze)生成数据库操作语句的实际执行计划,并在执行阶段对数据库操作语句的实际执行情况进行分析。
97.作为示例,还可以设置一个或多个优化器,在优化器的优化作用下生成数据库操作语句的实际执行计划。其中,不同优化器可以生成不同的实际执行计划。在设置了多个优化器的情况下,可以在不同优化器的优化作用下执行一次数据库操作语句。在每个优化器的执行过程中均可以执行上述信息采集操作,以便于对比不同优化器的执行差异。由此,还可以将不同优化器的执行差异信息作为优化辅助信息,提供给用户。
98.执行后阶段
99.数据库操作语句的生命周期还可以包括用于表征数据库操作语句的执行过程结束后的执行后阶段。
100.在执行后阶段可以获取多个执行计划,并对这多个实执行计划进行对比,以得到这多个执行计划进的对比结果。其中,这多个执行计划可以是指对应不同优化器的实际执行计划,也可以是指历史执行计划和本次执行计划,历史执行计划可以是指sql改写前或者导入的执行计划。
101.以多个实际执行计划为对应不同优化器的实际执行计划为例,可以将实际执行计划以及实际执行计划执行过程中采集到的信息进行对比,以得到能够反映不同优化器的执行差异的信息,该信息可以作为辅助优化信息提供给用户。
102.在执行后阶段还可以生成新的执行计划和/或实际执行计划瓶颈提示。
103.可以基于诊断报告和/或优化建议(如上文述及的执行计划对比、其他辅助优化信息和/或优化建议)生成新的执行计划,新的执行计划可以视为优化后的实际执行计划,可以基于该执行计划执行数据库操作语句。
104.基于实际执行计划执行的实际执行情况可以生成实际执行计划瓶颈提示。执行计划瓶颈提示可以用于提示执行计划中耗时较长的步骤。例如,可以对对实际执行时间达到20%的步骤进行标红,提醒执行者重点关注。
105.应用例
106.以数据库为mpp数据库,数据库操作语句为sql语句为例,本公开的执行效率优化方法可以实现为一种面向mpp数据库的效率诊断和优化辅助方案。图2示出了根据本公开一
个实施例的面向mpp数据库的效率诊断和优化辅助方案的示意性流程图。下面主要对方案的实现流程进行描述,对于其中涉及的细节可以参见上文相关描述。
107.如图2所示,在本实施例中,可以从sql执行前、执行中、执行后三个阶段对sql调优所需的各类信息进行采集、处理,最终生成效率诊断报告和优化建议。
108.主要流程如下。
109.1、sql执行前
110.首先可以对输入的sql文本进行解析,通过解析可以得到表基本信息和表高级信息。
111.基于表基本信息和sql文本可以得到表设计较佳实践建议。
112.通过对sql文本中进行join条件扫描,可以确定sql文本的执行过程中是否存在join条件隐患。若判定存在隐患,则可以生成join条件隐患提示。
113.通过对sql文本执行where条件判断,可以得到索引推荐。
114.基于explain关键字可以对sql的执行过程进行预估,得到执行计划瓶颈提示。
115.通过对执行sql语句的segment所在主机执行segment平衡检测,可以确定执行数据库操作语句的系统中是否存在segment不平衡问题。
116.由此,在sql执行前就可以提供如下预执行建议:库表设计建议、索引建议、join条件隐患提示、索引推荐、explain执行计划建议、segment平衡状态和表倾斜情况、统计信息情况提示。部分sql通过预执行建议即可排查解决一部分效率问题。
117.2、sql执行中
118.在sql执行前可以选择是否打开透视segment sql。透视segment sql建议在sql执行前打开,这样收集的segment执行信息更完整。打开透视segment sql,相当于开启segment sql执行监测。
119.透视segment sql可以跟踪master上的sql或者存储过程在各segment节点的实际执行内容和状态,通过透视segment sql可以为难以定位的计算倾斜提供参考。例如,若发现一条sql在大部分segment都执行结束,仅剩一两个segment一直在执行,基本上可以判断计算不平衡。
120.在sql执行前还可以选择是否通过explain analyze的方式生成并执行实际执行计划。在explain analyze步骤后,可以通过sql拼接在sql前面拼接上对应命令,以生成执行计划。例如,若选择explain analyze则可以通过explain analyze select*from dual的拼接方式生成执行计划,若不选择explain analyze则可以通过explain select*from dual的方式直接生成执行计划。
121.在sql执行中可以采集系统负载快照和数据库状态快照。
122.并且,还可以设置是否多优化器执行,若设定多优化器执行,则可以在不同优化器作用下分别执行一次sql。例如,可以先在默认优化器的优化作用下执行一次sql,然后再更改优化器选项,在非默认优化器的优化作用下执行一次sql。
123.3、sql执行后
124.在sql执行后可以执行实际执行计划瓶颈判断,确定耗时较多的步骤。
125.在sql执行后也可以对比多个执行计划,如可以对比多个优化器的执行计划,以得到不同优化器的执行差异。
126.由此,还可以提供丰富的优化辅助信息,包括但不限于操作系统负载、数据库集群负载、表存储、字段、锁状态,活跃会话,segment级别会话状态监测,workfile状态,不同优化器执行差异、实际执行计划对比和瓶颈提示。
127.综上,本公开可以实现sql全生命周期信息收集,提供基于表设计较佳实践的优化建议;提供sql执行过程中的深度监测,不仅监测master的sql执行状态,同时监测各segment sql执行状态。通过这种监测方式为难以定位的计算倾斜提供参考。同时提供复杂存储过程执行中的sql透视能力,解决定位执行耗时较高慢查询的难题;提供mpp数据库执行计划瓶颈判断辅助功能,也提供历史执行计划对比功能,便于横向对比和纵向瓶颈定位;提供多优化器执行sql功能,方便开发者快速对比不同优化器(如legacy和orca)的执行差异,决定选取合适优化器。
128.本公开的数据库操作语句的执行效率优化方法还可以实现为一种执行效率优化装置。图3示出了根据本公开一个实施例的执行效率优化装置的结构示意图。其中,执行效率优化装置的功能单元可以由实现本公开原理的硬件、软件或硬件和软件的结合来实现。本领域技术人员可以理解的是,图3所描述的功能单元可以组合起来或者划分成子单元,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能单元的任何可能的组合、或者划分、或者更进一步的限定。
129.下面就执行效率优化装置可以具有的功能单元以及各功能单元可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文相关描述,这里不再赘述。
130.参见图3,执行效率优化装置300包括采集模块310和生成模块320。
131.采集模块310用于在数据库操作语句的生命周期内采集与数据库操作语句的执行效率相关的信息。生成模块320用于基于采集到的信息生成诊断报告和/或优化建议。
132.数据库操作语句的生命周期可以包括执行数据库操作语句之前的执行前阶段,采集模块310可以在执行前阶段采集与数据库操作语句的执行效率相关的信息,生成模块320可以基于采集到的信息生成预执行建议,执行效率优化装置300包还可以包括优化模块,用于在执行数据库操作语句之前,基于预执行建议执行优化操作。
133.数据库操作语句的生命周期可以包括用于表征数据库操作语句的实际执行过程的执行阶段,采集模块310可以在所述执行阶段采集实际执行过程中与数据库操作语句的执行效率相关的信息。生成模块320可以将采集到的信息作为辅助优化信息。
134.执行效率优化装置还可以包括设置模块,用于设置一个或多个优化器,可以在优化器的优化作用下生成并执行数据库操作语句的实际执行计划。
135.生命周期可以包括数据库操作语句的实际执行过程结束后的执行后阶段,采集模块310可以在执行后阶段获取多个对应不同优化器的实际执行计划,生成模块320可以对多个实际执行计划进行对比,得到能够反映不同优化器的执行差异的信息。
136.在执行后阶段生成模块320还可以生成新的执行计划和/或实际执行计划瓶颈提示。
137.图4示出了根据本公开一实施例可用于实现上述方法的计算设备的结构示意图。
138.参见图4,计算设备400包括存储器410和处理器420。
139.处理器420可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器420可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理
器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器420可以使用定制的电路实现,例如特定用途集成电路(asic,application specific integrated circuit)或者现场可编程逻辑门阵列(fpga,field programmable gate arrays)。
140.存储器410可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器420或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器410可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器410可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、min sd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
141.存储器410上存储有可执行代码,当可执行代码被处理器420处理时,可以使处理器420执行上文述及的数据库操作语句的执行效率优化方法。
142.上文中已经参考附图详细描述了根据本公开的数据库操作语句的执行效率优化方法、装置以及设备。
143.此外,根据本公开的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本公开的上述方法中限定的上述各步骤的计算机程序代码指令。
144.或者,本公开还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本公开的上述方法的各个步骤。
145.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
146.附图中的流程图和框图显示了根据本公开的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
147.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技
术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1