一种外部提示表达、生成及应用自动一体化方法及装置制造方法及图纸

技术编号:36894725 阅读:13 留言:0更新日期:2023-03-15 22:21
本发明专利技术涉及数据库查询优化领域,具体提供了一种外部提示表达、生成及应用自动一体化方法,基于树或者森林数据结构的分布式数据库计划提示,使用Google protobuf格式来表示新的外部提示结构,protobuf作为通用的序列化格式,包括的基本提示包括基数提示、扫描提示、连接方法提示和连接顺序提示。与现有技术相比,本发明专利技术为计划提示作为一种系统手段提升应用负载提供了一种可能性。减少了系统人工的干预,提高了计划提示应用的效率。数据库系统自动修复查询性能问题,自动改善用户负载的运行效率提供了系统性的解决方案。效率提供了系统性的解决方案。效率提供了系统性的解决方案。

【技术实现步骤摘要】
一种外部提示表达、生成及应用自动一体化方法及装置


[0001]本专利技术涉及数据库查询优化领域,具体提供一种外部提示表达、生成及应用自动一体化方法及装置。

技术介绍

[0002]在关系数据库中,提示是对查询优化器的一种特殊指令。在编写SQL时,用户可能知道更多优化器本身未知的数据信息。提示用户能够做出通常由优化器做出的决策,有时会导致优化器选择它认为成本更高但实际上性能更好的计划。
[0003]在测试或开发环境中,提示对于测试特定计划路径的性能很有用。例如,用户可能想要检查某个索引是否对某些查询更有效。在这种情况下,用户可以使用提示来指定这个特定的索引,优化器根据提示来创建相应的执行计划,用户可以根据执行的实际结果来评估该索引的有效性。
[0004]目前,大多数关系数据库通过允许用户使用特殊语法修改SQL文本来支持提示。例如下面的SQL语句:
[0005]SELECT/*+FIRST_ROWS(100)*/*FROM employees;
[0006]上述SQL语句的注释中指定的提示是Oracle数据库的计划提示采纳的格式,它指示优化器以最低成本从雇员表中选择产生前100行的查询计划。这种以注释的方式提供计划提示的方法是目前常见的一种提示表达方法。
[0007]除此之外,还有其他指定计划提示的方式,大部分与上面类似,通过修改现有的SQL文本的形式。修改SQL文本的最大缺点之一是,所表达的提示是一个线性的片段化的表达方式,不能满足日益增加的分析型SQL和相应的执行计划的结构复杂性;另外,大部分SQL查询是由应用程序动态生成的,生成之后直接发给数据库服务器端来计算结果。如果用户想通过修改SQL语句来使用提示影响查询计划,可能需要中断应用程序并手动修改,或者需要修改应用程序来提供增加提示的手段和界面,这两种方法都不是很方便。另一方面,由于SQL语言是一种声明性语言,它并没有指定如何处理查询,有时很难在SQL文本中添加某种类型的提示,尤其是相对比较复杂的提示。而且,目前已有的计划提示功能大都需要用户自己手动添加,从提示的生成到应用,只有很有经验的DBA或者开发者才能很好的利用。对于相对复杂的计划提示,用户本身很难判断所提供的提示之间是不是有冲突,很大程度上需要依赖数据库优化器来作冲突检测,这种方法往往会影响系统正常的运行。另外,传统的计划提示方法对用户要求较高,用户很难在缺乏应用负载洞察(例如SQL语句在应用负载中的重要程度、健康度等,识别需要进行计划提示的SQL;用户人力有限,难以对全部查询逐一考虑计划提示,并检查提示的有效性;并且由于工作负载的持续变化,导致系统复杂性升高,既有的计划提示可能不再适用,对于用户来说,很难系统性的进行维护。
[0008]综上所述,目前存在的数据库提示,由于没有提示生成,应用全自动的一体化机制,计划提示很大程度上都只是DBA或者开发者的一个小工具而已,很难在数据库应用中发挥更大的应用。

技术实现思路

[0009]本专利技术是针对上述现有技术的不足,提供一种实用性强的外部提示表达、生成及应用自动一体化方法。
[0010]本专利技术进一步的技术任务是提供一种设计合理,安全适用的外部提示表达、生成及应用自动一体化装置。
[0011]本专利技术解决其技术问题所采用的技术方案是:
[0012]一种外部提示表达、生成及应用自动一体化方法,基于树或者森林数据结构的分布式数据库计划提示,使用Google protobuf格式来表示新的外部提示结构,protobuf作为通用的序列化格式,包括的基本提示包括基数提示、扫描提示、连接方法提示和连接顺序提示。
[0013]进一步的,所述基数提示为数据库执行计划不同类型的算子提供计算产生的结果基数的提示,通过提示来修正数据库系统统计信息不全,或者复杂情况统计功能不准确的情况;
[0014]提示所提供的基数会影响数据库优化器对执行计划的选取,保证优化器使用更精确的数据来产生更高效的执行计划,为一个或多个表连接结果提供一个结果集数目的提示,从实际运行的结果中获得,为用户提供精确的结果提示。
[0015]进一步的,所述扫描提示为优化器提供对特定表的扫描方法的提示,用户建表并且根据表的特性创建多种的索引,扫描提示针对某一个表,根据表的已有索引,以及扫描过滤条件为优化器提供对表的最优扫描方法的提示。
[0016]进一步的,所述连接方法提示为优化器指定特定的连接方法;连接顺序提示为优化器指定特定的连接顺序;
[0017]所述基数提示、扫描提示、连接方法提示和连接顺序提示在树形的结构里面任意组合,树形结构由多个节点组成,包括两种基本的节点连接节点和扫描节点。
[0018]进一步的,连接节点代表表与表的连接,扫描节点代表SQL query的一张表。
[0019]进一步的,在树结构的分布式数据库中,SQL负载分析器依次连接提示生成器、冲突解决器和自动提示应用器。
[0020]进一步的,所述提示生成器根据应用负载提供的信息,采用以规则为基准,代价为基准,机器学习方法为基准的动态扩展架构;
[0021]根据不同的提示类型,针对性的制定了相应的规则集合,并且为用户提供了自定义规则的接口,然后根据应用负载分析器的初步分析结果和信息搜集,以及系统的统计信息搜集,推论引擎会自动产生相应的提示集合,并发送到提示合并以及冲突检测模块进行下一步处理。
[0022]进一步的,所述提示冲突检测器担负着提示的合并、冲突检测以及解决冲突,提示冲突检测器依据顺序、优先级以及依赖关系;
[0023]提示的顺序和依赖关系是由负载的执行计划推导出来的,优先级是根据提示的不同类型以及系统信息的准确度来确定,冲突检测根据顺序和依赖关系的信息来做冲突检测的判断以及提示合并,又根据优先级来确定解决冲突的方案。
[0024]进一步的,自动提示应用器动态地加载到数据库的内核系统,应用提示生成系统产生的提示,改进用户应用负载的执行计划。
[0025]一种外部提示表达、生成及应用自动一体化装置,包括:至少一个存储器和至少一个处理器;
[0026]所述至少一个存储器,用于存储机器可读程序;
[0027]所述至少一个处理器,用于调用所述机器可读程序,执行一种外部提示表达、生成及应用自动一体化方法。
[0028]本专利技术的一种外部提示表达、生成及应用自动一体化方法及装置和现有技术相比,具有以下突出的有益效果:
[0029]本专利技术可以更容易的表达复杂的计划提示,并且不需要修改用户原始的SQL文本。为计划提示作为一种系统手段提升应用负载提供了一种可能性。减少了系统人工的干预,提高了计划提示应用的效率。数据库系统自动修复查询性能问题,自动改善用户负载的运行效率提供了系统性的解决方案。
附图说明
[0030]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种外部提示表达、生成及应用自动一体化方法,其特征在于,基于树或者森林数据结构的分布式数据库计划提示,使用Google protobuf格式来表示新的外部提示结构,protobuf作为通用的序列化格式,包括的基本提示包括基数提示、扫描提示、连接方法提示和连接顺序提示。2.根据权利要求1所述的一种外部提示表达、生成及应用自动一体化方法,其特征在于,所述基数提示为数据库执行计划不同类型的算子提供计算产生的结果基数的提示,通过提示来修正数据库系统统计信息不全,或者复杂情况统计功能不准确的情况;提示所提供的基数会影响数据库优化器对执行计划的选取,保证优化器使用更精确的数据来产生更高效的执行计划,为一个或多个表连接结果提供一个结果集数目的提示,从实际运行的结果中获得,为用户提供精确的结果提示。3.根据权利要求2所述的一种外部提示表达、生成及应用自动一体化方法,其特征在于,所述扫描提示为优化器提供对特定表的扫描方法的提示,用户建表并且根据表的特性创建多种的索引,扫描提示针对某一个表,根据表的已有索引,以及扫描过滤条件为优化器提供对表的最优扫描方法的提示。4.根据权利要求3所述的一种外部提示表达、生成及应用自动一体化方法,其特征在于,所述连接方法提示为优化器指定特定的连接方法;连接顺序提示为优化器指定特定的连接顺序;所述基数提示、扫描提示、连接方法提示和连接顺序提示在树形的结构里面任意组合,树形结构由多个节点组成,包括两种基本的节点连接节点和扫描节点。5.根据权利要求4所述的一种外部提示表达、生成及应用自动一体化方法,其特征在于,连接节点代表表与表的连接,扫描节点代表SQL query的一张表...

【专利技术属性】
技术研发人员:裴春峰任鲲鹏王永炎蒋清春邹彤
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1