CN114443691B - 数据库查询调优方法、系统及计算机设备 - Google Patents
数据库查询调优方法、系统及计算机设备 Download PDFInfo
- Publication number
- CN114443691B CN114443691B CN202210054755.4A CN202210054755A CN114443691B CN 114443691 B CN114443691 B CN 114443691B CN 202210054755 A CN202210054755 A CN 202210054755A CN 114443691 B CN114443691 B CN 114443691B
- Authority
- CN
- China
- Prior art keywords
- query
- strategy
- query plan
- sql
- query statement
- 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.)
- Active
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000004458 analytical method Methods 0.000 claims abstract description 53
- 238000005192 partition Methods 0.000 claims description 41
- 238000004220 aggregation Methods 0.000 claims description 20
- 230000002776 aggregation Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 18
- 238000005520 cutting process Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库查询调优方法、系统及计算机设备,该方法包括:接收SQL查询语句;解析SQL查询语句生成查询计划;基于预设调优策略和查询计划生成查询计划解析文件;基于查询计划解析文件输出优化方案以供用户查看;预设合理的调优策略,进而根据预设调优策略和查询计划生成查询计划解析文件获得有效的优化方案,从而确保查询调优请求能够快速有效的处理,根据自定义的优化策略自动设计出最佳的查询优化方案,使得数据库达到更好的性能。
Description
技术领域
本申请涉及数据库查询领域,具体一种数据库查询调优方法、系统及计算机设备。
背景技术
在大数据的时代,Greenplum(开源分布式数据库)作为开源的新一代大数据平台,它兼容SQL(Structured Query Language,结构化查询语言)标准,具有海量数据分析的能力,能够提供实时处理、弹性扩容、混合负载、并行存储和计算等强大功能的大数据引擎。但是,当用户执行某些复杂SQL查询语句时,会受到数据库参数、表的数据分布以及该SQL自身编写等各方面因素的影响,容易导致不能充分利用开源分布式数据库MPP(MassivelyParallel Processing大规模并行处理)架构的并行特性,使得MPP数据库遇到性能瓶颈,用户执行SQL效率低下,这些问题往往给用户带来非常不友好的体验,需要进行SQL优化。
现有的SQL优化只能依靠开发人员根据自己的经验反复尝试查询语句调优,但开发人员的经验不稳定,当开发人员经验欠缺时,SQL的查询效率还不如最初的情况,因此,数据库的查询语句的自动调优就是一个迫切需要面临解决的问题。
发明内容
本申请目的是:提供一种能够自动优化查询语句、有效提高SQL查询数据库效率的数据库查询调优方法、系统及计算机设备。
本申请的技术方案是:第一方面,本申请提供一种数据库查询调优方法,所述方法包括:
接收SQL查询语句;
解析所述SQL查询语句生成查询计划;
基于预设调优策略和所述查询计划生成查询计划解析文件;
基于所述查询计划解析文件输出优化方案以供用户查看。
在一种较佳的实施方式中,所述解析所述SQL查询语句生成查询计划之前,所述方法还包括:
判断当前数据库所有实例的运行状态是否正常;
若是,则解析所述SQL查询语句生成查询计划;
若否,则输出当前数据库实例信息并退出查询调优操作,所述实例信息包括实例ID、所在主机标识、端口号和实例数据目录。
在一种较佳的实施方式中,所述解析所述SQL查询语句生成查询计划之前,所述方法还包括:
解析并处理所述SQL查询语句对应的表信息,具体包括:
获取所述SQL查询语句中的表名并基于所述表名获取所述SQL查询语句对应的表信息;
基于所述SQL查询语句对应的表信息判断表是否为分区表;
若是,则获取所述分区表的分区条件并解析所述SQL查询语句生成查询计划;
若否,则解析所述SQL查询语句生成查询计划。
在一种较佳的实施方式中,所述查询计划包括内存使用量和查询节点信息;
所述查询节点信息包括输出行数、行的字节数和花费代价,还包括每个节点中处理最多行的实例处理的最大行数和平均行数。
在一种较佳的实施方式中,所述基于预设调优策略和所述查询计划生成查询计划解析文件包括:
基于所述SQL查询语句从预设调优策略组中匹配对应的预设调优策略;
基于所述预设调优策略和所述SQL查询语句对应的表信息解读所述查询计划生成查询计划解析文件。
在一种较佳的实施方式中,所述预设调优策略包括至少一个定义策略,所述定义策略为避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略、使用分区裁剪策略中的任意一种。
在一种较佳的实施方式中,所述基于预设调优策略和所述SQL查询语句对应的表信息解读所述查询计划生成查询计划解析文件包括:
从所述SQL查询语句对应的表信息和所述查询计划中逐一获取每个所述定义策略的对应信息;
基于所述每个所述定义策略的对应信息生成每个所述定义策略对应的策略文件;
所述查询计划解析文件包括所有所述策略文件。
在一种较佳的实施方式中,所述基于所述查询计划解析文件输出优化方案以供用户查看包括:
读取所述查询计划解析文件内容,所述查询计划解析文件内容包括“使用广播”键、“数据倾斜”键、“数据溢出”键、“哈希聚合”键、“更新统计信息”键、“使用分区裁剪”键中的至少一种;
读取所述查询计划解析文件内容对应值;
根据所述查询计划解析文件内容对应值生成优化方案。
第二方面,本申请还提供一种数据库查询调优系统,所述系统包括:
接收模块,用于接收SQL查询语句;
解析模块,用于解析所述SQL查询语句生成查询计划;
生成模块,用于基于预设调优策略和所述查询计划生成查询计划解析文件;
输出模块,用于基于所述查询计划解析文件输出优化方案以供用户查看。
第三方面,本申请还提供一种计算机设备,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行第一方面中任一所述的方法。
本申请的优点是:提供一种数据库查询调优方法、系统及计算机设备,该方法包括:接收SQL查询语句;解析SQL查询语句生成查询计划;基于预设调优策略和查询计划生成查询计划解析文件;基于查询计划解析文件输出优化方案以供用户查看;预设合理的调优策略,进而根据预设调优策略和查询计划生成查询计划解析文件获得有效的优化方案,从而确保查询调优请求能够快速有效的处理,根据自定义的优化策略自动设计出最佳的查询优化方案,使得数据库达到更好的性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的数据库查询调优的架构中查询计划解析文件以字典形式保存查询计划解读的结果示意图;
图2为本申请所提供的数据库查询调优方法流程图;
图3为实施例一所提供的数据库查询调优方法优选方案流程图;
图4为本申请所提供的数据库查询调优系统结构图;
图5为本申请所提供的计算机设备架构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术所述,当用户执行某些复杂SQL查询语句查询Greenplum时,受到数据库参数、表的数据分布以及该SQL自身编写等各方面因素的影响,导致遇到性能瓶颈,用户执行SQL效率低下,这些问题往往给用户带来非常不友好的体验。然而,现有的SQL优化只能依靠开发人员根据自己的经验反复尝试查询语句调优,调优效果不稳定,容易出现开发人员缺乏经验而导致调优后SQL的查询效率还不如最初未调优的查询效率的情况,因此,数据库的查询语句的自动调优就是一个迫切需要面临解决的问题。
为解决上述问题,本申请提出了一种数据库查询调优方法、系统及计算机设备,预设合理的调优策略,进而根据预设调优策略和查询计划生成查询计划解析文件获得有效的优化方案,从而确保查询调优请求能够快速有效的处理,根据自定义的优化策略自动设计出最佳的查询优化方案,使得数据库达到更好的性能。下面将结合具体实施例对本申请所提出的数据库查询调优方法、系统及计算机设备进行介绍。
实施例一:本实施例对本申请中进行数据库查询调优的架构进行介绍。
架构包括调优选项装置、实例状态检查装置、查询语句解析装置、查询计划生成装置、查询计划解析装置、调优结果输出装置和查询调优退出装置。
调优选项装置负责设置查询计划的调优策略,如避免使用广播、避免数据倾斜、避免溢出文件等;实例状态检查装置负责检查当前数据库所有实例的运行状态;查询语句解析装置负责解读用户发起的查询语句;查询计划生成装置负责生成分布式查询计划;查询计划解析装置负责对分布式查询计划进行解读,并将结果写入查询计划解析文件中;调优结果输出装置负责根据查询计划解析文件中的内容输出查询调优方案;查询调优退出装置负责输出当前数据库所有实例的信息并退出本次查询语句调优操作。
查询计划解析装置生成的查询计划解析文件保存查询计划解读的结果,保存内容形式为字典模式,如图1所示。
实施例二:基于上述实施例一所介绍的进行数据库查询调优的架构,本实施例提供参照图2所示,对本申请中数据库查询调优方法过程进行介绍。
具体的,参照图2所示,本实施例所提供的一种数据库查询调优方法进行查询调优的过程包括:
S210、接收SQL查询语句。
具体的,于本实施例中,数据库为开源分布式数据库,采用无共享(Share-Nothing)的MPP(Massively Parallel Processing,大规模并行处理)架构,主要用于大规模数据处理、数据仓库、数据挖掘等应用,需要采用SQL(Structured Query Language)查询语句即结构化查询语言进行查询,结构化查询语言用于存取数据以及查询、更新和管理关系数据库系统,比如SELECT和INSERT命令。
优选的,参照图3所述,在S220之前,该方法还包括:
SA1、判断当前数据库所有实例的运行状态是否正常。若是,则进入S220,若否,则进入SA2。
具体的,实例状态检查装置中预先设置有监控程序实时监控数据库所有实例的运行状态,示例性的,实例的运行状态为normal或者abnormal,逐一检测数据每个实例的运行状态,若所有实例的运行状态均为normal,则判断当前数据库所有实例的运行状态正常,进入S220。否则进入SA2,退出本次查询调优操作。在进行查询调优操作之前检验当前数据库所有实例是否为正常运行,在当前数据库所有实例均正常运行的前提下进行查询调优操作,避免在数据库实例运行异常的情况下进行查询调优操作获得不准确甚至是无效的查询调优方案,浪费时间和人力资源成本,降低查询效率。
SA2、输出当前数据库实例信息并退出查询调优操作,实例信息包括实例ID、所在主机标识、端口号和实例数据目录。
具体的,当判断出当前数据库不是所有实例的运行状态均为正常,即当前数据库存在实例运行异常时,查询调优退出装置输出当前数据库所有实例(包括运行状态异常的实例)的信息并退出此次查询调优操作,实例信息包含实例的ID、所在的主机、端口号、实例数据目录等。
更优选的,在S220之前,该方法还包括:
SA3、解析并处理所述SQL查询语句对应的表信息,
具体的,查询语句解析装置接收用户发起的SQL查询语句后获取该SQL查询语句中的所有表名,以及判断该表是否为分区表。
本步骤具体包括:
SA31、获取SQL查询语句中的表名并基于表名获取SQL查询语句对应的表信息。
具体的,SQL查询语句中包含了多张嵌套表的表名,根据SQL查询语句中的表名获取表名对应的表信息。SA32、基于SQL查询语句对应的表信息判断表是否为分区表;若是,则获取分区表的分区条件后解析SQL查询语句生成查询计划;若否,则直接进入S220生成查询计划。
表信息携带了该表的分区条件信息。若表为分区表,则获取该表所携带的分区条件用于后续查询计划的优化,若表不为分区表,则直接进入S220生成查询计划。
S220、解析SQL查询语句生成查询计划。
示例性的,查询计划生成装置对SQL查询语句生成查询计划,例如执行EXPLAINANALYZE命令。优选的,查询计划包括内存使用量和查询节点信息;查询节点信息包括输出行数、行的字节数和花费代价,还包括每个节点中处理最多行的实例处理的最大行数和平均行数。
S230、基于预设调优策略和查询计划生成查询计划解析文件。
具体的,查询计划解析装置根据调优选项装置中预先定义的调优策略对查询计划进行解读,并将解读的结果写入查询计划解析文件中。优选的,本步骤包括:
S231、基于SQL查询语句从预设调优策略组中匹配对应的预设调优策略。
调优选项装置中定义多种预设调优策略具有预设调优策略组,在用户发起查询调优请求后,进入调优选项装置,根据用户发起的查询调优请求匹配对应的预设调优策略,并将匹配出的优化策略传递给查询计划解析装置,如果未匹配的对应的优化策略,则进入查询调优退出装置退出本次查询调优操作。
S232、基于预设调优策略和SQL查询语句对应的表信息解读查询计划生成查询计划解析文件。
查询计划解析装置根据调优选项装置中定义的调优策略和查询语句解析装置得到的本次查询涉及的表信息解读查询计划生成查询计划解析文件。
调优选项装置中设置有N个定义策略,N为大于1的自然数,在获取查询语句后,根据查询语句从调优选项装置中匹配对应的预设调优策略。优选的,预设调优策略包括至少一个定义策略,定义策略为避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略、使用分区裁剪策略中的任意一种。预设调优策略中定义了策略种类,但并未定义策略的具体内容。示例性的,预设调优策略包括五个定义策略,分别为避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略和使用分区裁剪策略,则预设调优策略定义了是否避免使用广播、数据倾斜、数据溢出,是否使用更新统计信息、哈希聚合和分区裁剪,但并未定义具体操作计划。
优选的,基于预设调优策略和SQL查询语句对应的表信息解读查询计划生成查询计划解析文件包括:
S2321、从SQL查询语句对应的表信息和查询计划中逐一获取每个定义策略的对应信息。
S2322、基于每个所述定义策略的对应信息生成每个定义策略对应的策略文件;查询计划解析文件包括所有策略文件。
按上述示例,预设调优策略包括避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略和使用分区裁剪策略,从查询计划和SQL查询语句对应的表信息中逐一获取每个定义策略对应的内容以自定义解读策略。本申请对于获取每个定义策略的对应信息的顺序不作限制。
具体的,当定义避免使用广播策略时,获取查询计划内容,如果查询计划中包括Broadcast Motion,则将“使用广播:是”写入文件中,否则,写入“使用广播:否”;
当定义避免数据倾斜策略时,读取SQL查询语句对应的表信息中的数据扫描系统空闲视图信息,得到此次查询的相关表的系统空闲的百分比,并将“数据倾斜:表名,百分比值”写入文件中;
当定义避免数据溢出文件策略时,从查询计划中获取“Workfile”的值,并将“数据溢出:Workfile值”写入文件中;
当定义使用哈希聚合策略时,获取查询计划内容,如果查询计划中有GroupAggregate信息时,则将“使用哈希聚合:否”写入文件中,如果没有,则写入“使用哈希聚合:空”;
当定义更新统计信息策略时,则根据SQL查询语句对应的表信息将“更新统计信息:是”写入文件中,否则,写入“更新统计信息:否”;
当定义使用分区裁剪策略时,如果查询语句的查询条件(where子句)和查询语句解析装置获得的分区条件相同,则将“使用分区裁剪:是”写入文件中,如果不相同,则写入“使用分区裁剪:否”,如果没有查询条件,则将“使用分区裁剪:空”写入文件。
S240、基于查询计划解析文件输出优化方案以供用户查看。
优选的,本步骤包括:
S241、读取查询计划解析文件内容,查询计划解析文件内容包括“使用广播”键、“数据倾斜”键、“数据溢出”键、“哈希聚合”键、“更新统计信息”键、“使用分区裁剪”键中的至少一种。具体的,查询计划解析文件内容与定义策略种类对应。即预设调优策略包括避免使用广播策略时,查询计划解析文件内容包括“使用广播”键、当预设调优策略包括避免数据倾斜策略时,查询计划解析文件内容包括“数据倾斜”键……
按上述示例,读取查询计划解析内容包括“使用广播”键、“数据倾斜”键、“数据溢出”键、“哈希聚合”键、“更新统计信息”键和“使用分区裁剪”。
S242、读取查询计划解析文件内容对应值。
按上述示例,分别读取“使用广播”键、“数据倾斜”键、“数据溢出”键、“哈希聚合”键、“更新统计信息”键和“使用分区裁剪”对应的值。
S243、根据所述查询计划解析文件内容对应值生成优化方案。
按上述示例,若读取的“使用广播”键对应的值为“是”,则配置gp_segment_for_planner参数值为1000,以避免使用广播,即将“set gp_segment_for_planner to 1000”写入优化方案中;
依次判断“数据倾斜”键对应的值即每张表的百分比值,如果百分比值超过10%,则将“重新调整某某表的分布键”写入优化方案中,其中某某表为超过10%的表名;
如果“数据溢出”键的值大于0,则读取数据库系统参数statement_mem的当前值,将“增加1倍查询语句内存:set statement_mem to当前值*2”写入优化方案中;
如果“哈希聚合”键的值为否,则将“设置哈希聚合:set enable_hashagg to on”写入优化方案中;
如果“更新统计信息”键对应的值为是,则将“执行命令:ANALYZE表名”写入优化方案中,其中表名为查询语句解析装置中得到的表;
如果“使用分区裁剪”键的值为否,则将“调整查询语句的查询条件为分区条件”写入优化方案中。
当然,预设调优策略也可以包括避免使用广播策略与避免数据倾斜策略、或者其他的任意两种定义策略的组合,也可以是包括避免数据倾斜策略、避免数据溢出文件策略和使用哈希聚合策略、或者其他的任意三种定义策略的组合,还可以是包括避免使用广播策略、避免数据溢出文件策略、使用哈希聚合策略和使用分区裁剪策略、或者其他的任意四种定义策略的组合,本实施例示例性地以预设调优策略包括避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略、使用分区裁剪策略五种策略进行表述,本申请对预设调优策略的具体组合不作限定。
本实施例所提供的数据库查询调优方法,预设调优策略确定调优方向,开发人员或用户在数据库遇到性能瓶颈时,可以灵活的选择组合定义策略,自动完成数据库查询的调优工作,充分利用MPP数据库并行计算的优势,提升了查询分析的效率,实现了数据库整体性能的最优化,减轻了数据库开发人员或用户的工作量,提高了应用开发的工作效率,加快了用户的业务上线的速度。
实施例三:于上述实施例一与实施例二相对应的,下面将结合图4,对本申请提供的数据库查询调优系统进行介绍。其中,该系统可以通过硬件或软件的方式实现,也可以通过软硬件结合的方式实现,本申请并不限定。
在一个示例中如图4所示,本申请提供了一种数据库查询调优系统,该系统包括:
接收模块410,用于接收SQL查询语句;
解析模块420,用于解析所述SQL查询语句生成查询计划;
生成模块430,用于基于预设调优策略和所述查询计划生成查询计划解析文件;
输出模块440,用于基于所述查询计划解析文件输出优化方案以供用户查看。
优选的,该系统还包括:
判断模块450,用于判断当前数据库所有实例的运行状态是否正常;
若判断模块450判断结果为是,则进入用于解析所述SQL查询语句生成查询计划的解析模块420;
退出模块460,用于在判断模块440判断结果为否时,进入输出当前数据库实例信息并退出查询调优操作,所述实例信息包括实例ID、所在主机标识、端口号和实例数据目录。
更优选的,该系统还包括:
处理模块470,用于解析并处理所述SQL查询语句对应的表信息,具体包括:
第一获取单元471,用于获取所述SQL查询语句中的表名并基于所述表名获取所述SQL查询语句对应的表信息;
判断单元472,用于基于所述SQL查询语句对应的表信息判断表是否为分区表;
第二获取单元473,用于在判断单元472判断结果为是时,获取所述分区表的分区条件并解析所述SQL查询语句生成查询计划;
判断单元472判断结果为否时,则进入用于解析所述SQL查询语句生成查询计划的解析模块420。
更优选的,生成模块430具体用于:
基于预设调优策略和所述SQL查询语句对应的表信息解读所述查询计划生成查询计划解析文件。
更优选的,生成模块430包括:
第三获取单元431,用于从所述SQL查询语句对应的表信息和所述查询计划中逐一获取每个所述定义策略的对应信息;
第一生成单元432,用于基于所述每个所述定义策略的对应信息生成每个所述定义策略对应的策略文件;所述查询计划解析文件包括所有所述策略文件。
更优选的,输出模块440包括:
第一读取单元441,用于读取所述查询计划解析文件内容,所述查询计划解析文件内容包括“使用广播”键、“数据倾斜”键、“数据溢出”键、“哈希聚合”键、“更新统计信息”键、“使用分区裁剪”键中的至少一种;
第二读取单元442,用于读取所述查询计划解析文件内容对应值;
第二生成单元443,用于根据所述查询计划解析文件内容对应值生成优化方案。
实施例四:与上述实施例一至实施例三相对应的,下面将结合图5,对本申请提供的计算机设备进行介绍。在一个示例如图5所示,本申请提供了一种计算机设备,该计算机设备包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
接收SQL查询语句;
解析所述SQL查询语句生成查询计划;
基于预设调优策略和所述查询计划生成查询计划解析文件;
基于所述查询计划解析文件输出优化方案以供用户查看。
其中,图5示例性的展示出了计算机设备的架构,具体可以包括处理器510,视频显示适配器511,磁盘驱动器512,输入/输出接口513,网络接口514,以及存储器520。上述处理器510、视频显示适配器511、磁盘驱动器512、输入/输出接口513、网络接口514,与存储器520之间可以通过通信总线530进行通信连接。
其中,处理器510可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器520可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器520可以存储用于控制计算机设备500运行的操作系统521,用于控制计算机设备500的低级别操作的基本输入输出系统(BIOS)522。另外,还可以存储网页浏览器523,数据存储管理524,以及图标字体处理系统525等等。上述图标字体处理系统525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器520中,并由处理器510来调用执行。
输入/输出接口513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线530包括一通路,在设备的各个组件(例如处理器510、视频显示适配器511、磁盘驱动器512、输入/输出接口513、网络接口514,与存储器520)之间传输信息。
另外,该计算机设备500还可以从虚拟资源对象领取条件信息数据库541中获得具体领取条件的信息,以用于进行条件判断,等等。
需要说明的是,尽管上述计算机设备500仅示出了处理器510、视频显示适配器511、磁盘驱动器512、输入/输出接口513、网络接口514,存储器520,总线530等,但是在具体实施过程中,该计算机设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
另外需要说明的是:本申请中术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
当然上述实施例只为说明本申请的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本申请的内容并据以实施,并不能以此限制本申请的保护范围。凡根据本申请主要技术方案的精神实质所做的修饰,都应涵盖在本申请的保护范围之内。
Claims (5)
1.一种数据库查询调优方法,其特征在于,所述方法包括:
接收SQL查询语句;解析并处理所述SQL查询语句对应的表信息,具体包括:
获取所述SQL查询语句中的表名并基于所述表名获取所述SQL查询语句对应的表信息;
基于所述SQL查询语句对应的表信息判断表是否为分区表;
若是,则获取所述分区表的分区条件并解析所述SQL查询语句生成查询计划;
若否,则解析所述SQL查询语句生成查询计划;所述查询计划包括内存使用量和查询节点信息;所述查询节点信息包括输出行数、行的字节数和花费代价,还包括每个节点中处理最多行的实例处理的最大行数和平均行数;
解析所述SQL查询语句生成查询计划;
基于预设调优策略和所述查询计划生成查询计划解析文件,包括:
基于所述SQL查询语句从预设调优策略组中匹配对应的预设调优策略;
基于所述预设调优策略和所述SQL查询语句对应的表信息解读所述查询计划生成查询计划解析文件,所述预设调优策略包括至少一个定义策略,所述定义策略为避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略、使用分区裁剪策略中的任意一种;
所述基于所述预设调优策略和所述SQL查询语句对应的表信息解读所述查询计划生成查询计划解析文件包括:
从所述SQL查询语句对应的表信息和所述查询计划中逐一获取每个所述定义策略的对应信息;
基于所述每个所述定义策略的对应信息生成每个所述定义策略对应的策略文件;
所述查询计划解析文件包括所有所述策略文件;
基于所述查询计划解析文件输出优化方案以供用户查看。
2.根据权利要求1所述的数据库查询调优方法,其特征在于,所述解析所述SQL查询语句生成查询计划之前,所述方法还包括:
判断当前数据库所有实例的运行状态是否正常;
若是,则解析所述SQL查询语句生成查询计划;
若否,则输出当前数据库实例信息并退出查询调优操作,所述实例信息包括实例ID、所在主机标识、端口号和实例数据目录。
3.根据权利要求1所述的数据库查询调优方法,其特征在于,所述基于所述查询计划解析文件输出优化方案以供用户查看包括:
读取所述查询计划解析文件内容,所述查询计划解析文件内容包括“使用广播”键、“数据倾斜”键、“数据溢出”键、“哈希聚合”键、“更新统计信息”键、“使用分区裁剪”键中的至少一种;
读取所述查询计划解析文件内容对应值;
根据所述查询计划解析文件内容对应值生成优化方案。
4.一种数据库查询调优系统,其特征在于,所述系统包括:
接收模块,用于接收SQL查询语句;
处理模块,用于解析并处理所述SQL查询语句对应的表信息,具体包括:
第一获取单元,用于获取所述SQL查询语句中的表名并基于所述表名获取所述SQL查询语句对应的表信息;
判断单元,用于基于所述SQL查询语句对应的表信息判断表是否为分区表;
第二获取单元,用于在所述判断单元判断结果为是时,获取所述分区表的分区条件并解析所述SQL查询语句生成查询计划;
所述判断单元判断结果为否时,则进入用于解析所述SQL查询语句生成查询计划的解析模块;
解析模块,用于解析所述SQL查询语句生成查询计划;
生成模块,用于基于预设调优策略和所述查询计划生成查询计划解析文件;所述生成模块具体用于:
基于所述SQL查询语句从预设调优策略组中匹配对应的预设调优策略;
基于所述预设调优策略和所述SQL查询语句对应的表信息解读所述查询计划生成查询计划解析文件,所述预设调优策略包括至少一个定义策略,所述定义策略为避免使用广播策略、避免数据倾斜策略、避免数据溢出文件策略、使用哈希聚合策略、使用分区裁剪策略中的任意一种;
所述生成模块包括:
第三获取单元,用于从所述SQL查询语句对应的表信息和所述查询计划中逐一获取每个所述定义策略的对应信息;
第一生成单元,用于基于所述每个所述定义策略的对应信息生成每个所述定义策略对应的策略文件;所述查询计划解析文件包括所有所述策略文件;输出模块,用于基于所述查询计划解析文件输出优化方案以供用户查看。
5.一种计算机设备,其特征在于,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行根据权利要求1-3中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210054755.4A CN114443691B (zh) | 2022-01-18 | 2022-01-18 | 数据库查询调优方法、系统及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210054755.4A CN114443691B (zh) | 2022-01-18 | 2022-01-18 | 数据库查询调优方法、系统及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114443691A CN114443691A (zh) | 2022-05-06 |
CN114443691B true CN114443691B (zh) | 2024-01-23 |
Family
ID=81366977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210054755.4A Active CN114443691B (zh) | 2022-01-18 | 2022-01-18 | 数据库查询调优方法、系统及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443691B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563167B (zh) * | 2022-12-02 | 2023-03-31 | 浙江大华技术股份有限公司 | 数据查询方法、电子设备以及计算机可读存储介质 |
CN116303575B (zh) * | 2023-03-22 | 2023-12-12 | 本原数据(北京)信息技术有限公司 | 数据库数据查询方法、装置及非易失性存储介质 |
CN117435594B (zh) * | 2023-12-18 | 2024-04-16 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库分布键的优选方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798017A (zh) * | 2016-09-07 | 2018-03-13 | 南京中兴新软件有限责任公司 | 分布式数据库中的执行计划信息生成方法和系统 |
CN108509530A (zh) * | 2018-03-14 | 2018-09-07 | 武汉斗鱼网络科技有限公司 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
CN110134706A (zh) * | 2019-04-01 | 2019-08-16 | 平安科技(深圳)有限公司 | Sql语句自动优化方法、装置、计算机设备以及存储介质 |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
CN111563101A (zh) * | 2020-07-11 | 2020-08-21 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
CN112559554A (zh) * | 2020-12-24 | 2021-03-26 | 北京百家科技集团有限公司 | 一种查询语句优化方法及装置 |
CN112597182A (zh) * | 2020-12-16 | 2021-04-02 | 平安普惠企业管理有限公司 | 数据查询语句的优化方法、装置、终端及存储介质 |
CN112860727A (zh) * | 2021-02-20 | 2021-05-28 | 平安科技(深圳)有限公司 | 基于大数据查询引擎的数据查询方法、装置、设备及介质 |
CN113792071A (zh) * | 2021-09-18 | 2021-12-14 | 上海中通吉网络技术有限公司 | Sql智能生成并调优组件和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503734B2 (en) * | 2015-07-14 | 2019-12-10 | Sap Se | External offline query optimization |
US10521425B2 (en) * | 2016-08-31 | 2019-12-31 | Sap Se | Generating faster and efficient database query execution plans |
-
2022
- 2022-01-18 CN CN202210054755.4A patent/CN114443691B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798017A (zh) * | 2016-09-07 | 2018-03-13 | 南京中兴新软件有限责任公司 | 分布式数据库中的执行计划信息生成方法和系统 |
CN108509530A (zh) * | 2018-03-14 | 2018-09-07 | 武汉斗鱼网络科技有限公司 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
CN110134706A (zh) * | 2019-04-01 | 2019-08-16 | 平安科技(深圳)有限公司 | Sql语句自动优化方法、装置、计算机设备以及存储介质 |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
CN111563101A (zh) * | 2020-07-11 | 2020-08-21 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
CN112597182A (zh) * | 2020-12-16 | 2021-04-02 | 平安普惠企业管理有限公司 | 数据查询语句的优化方法、装置、终端及存储介质 |
CN112559554A (zh) * | 2020-12-24 | 2021-03-26 | 北京百家科技集团有限公司 | 一种查询语句优化方法及装置 |
CN112860727A (zh) * | 2021-02-20 | 2021-05-28 | 平安科技(深圳)有限公司 | 基于大数据查询引擎的数据查询方法、装置、设备及介质 |
CN113792071A (zh) * | 2021-09-18 | 2021-12-14 | 上海中通吉网络技术有限公司 | Sql智能生成并调优组件和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114443691A (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114443691B (zh) | 数据库查询调优方法、系统及计算机设备 | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
US20080183684A1 (en) | Caching an Access Plan for a Query | |
CN110196888B (zh) | 基于Hadoop的数据更新方法、装置、系统及介质 | |
MX2013014800A (es) | Recomendacion de enriquecimientos de datos. | |
CN115373835A (zh) | Flink集群的任务资源调整方法、装置及电子设备 | |
CN112861182A (zh) | 数据库的查询方法、系统及计算机设备、存储介质 | |
CN112307062A (zh) | 数据库聚合查询方法、装置及系统 | |
CN113297057A (zh) | 内存分析方法、装置及系统 | |
US11762687B2 (en) | Processing of messages and documents carrying business transactions | |
CN117194389A (zh) | 基于sql的数据库兼容方法和装置、电子设备和存储介质 | |
CN112434037A (zh) | 数据处理方法、处理装置、数据处理设备和存储介质 | |
EP4216076A1 (en) | Method and apparatus of processing an observation information, electronic device and storage medium | |
CN111143398B (zh) | 基于扩展sql函数的超大集合查询方法及装置 | |
CN109902067B (zh) | 文件处理方法、装置、存储介质及计算机设备 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
WO2019218677A1 (zh) | 电网仿真分析数据存储方法、装置及电子设备 | |
JP2020134961A (ja) | データベース管理システム、端末装置及び方法 | |
CN111125264B (zh) | 基于扩展olap模型的超大集合分析方法及装置 | |
CN111125147B (zh) | 基于扩展预计算模型和sql函数的超大集合分析方法及装置 | |
US11868353B1 (en) | Fingerprints for database queries | |
CN117271481B (zh) | 数据库自动优化方法及设备 | |
WO2023019981A1 (zh) | 数据查询方法以及相关设备 | |
CN113448943A (zh) | 一种数据库配置方法、装置、电子设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |