CN112970011A - 记录查询优化中的谱系 - Google Patents

记录查询优化中的谱系 Download PDF

Info

Publication number
CN112970011A
CN112970011A CN201980072723.3A CN201980072723A CN112970011A CN 112970011 A CN112970011 A CN 112970011A CN 201980072723 A CN201980072723 A CN 201980072723A CN 112970011 A CN112970011 A CN 112970011A
Authority
CN
China
Prior art keywords
query
transformation
expression
execution plan
computer system
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.)
Granted
Application number
CN201980072723.3A
Other languages
English (en)
Other versions
CN112970011B (zh
Inventor
C·S·弗雷德曼
V·帕帕迪默斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN112970011A publication Critical patent/CN112970011A/zh
Application granted granted Critical
Publication of CN112970011B publication Critical patent/CN112970011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24524Access plan code generation and invalidation; Reuse of access plans
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/2454Optimisation of common expressions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24547Optimisations to support specific applications; Extensibility of optimisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据库系统包括查询优化器,查询优化器以声明性查询语言将变换应用于输入查询的逻辑表示,以生成查询执行计划的表达式。查询优化器针对每个规则应用存储指示所应用的变换和变换的绑定的信息,该绑定指示输入给变换的表达式。当新的查询执行计划将针对输入查询被生成时,查询优化器针对原始查询执行计划中的表达式使用该存储信息,以指导查询优化器产生当前的查询执行计划,同时避免变换不被用于在原始查询执行计划中生成表达式。

Description

记录查询优化中的谱系
背景技术
当前大多数数据库系统都允许用户以声明性或非程序性语言(诸如结构化查询语言(SQL))指定查询。声明性语言指定数据库记录必须满足才能响应查询的条件。当查询是以这种方式指定时,数据库系统会将查询转化为操作集合,通常称为“查询执行计划”,这些操作在数据库上被执行以执行该查询。通常,查询被变换为树或图表示,继而被用于生成查询执行计划。这些操作通常采用程序性计算机语言的形式。有许多可能的操作以及操作的可能组合可以被执行以实现任何给定的查询,其中一些比其他更有效。因此,数据库系统尝试找到最优的或至少合理有效的操作组合,作为给定查询的查询执行计划。该过程被称为“查询优化”。
在查询优化中,操作的可能组合通常可以被视为定义了用于优化过程的搜索空间的树或图。一些查询可以具有成千上万甚或更多的可能实现。
因此,查询优化是在大的搜索空间上进行搜索的一种形式,以找到最优的或合理有效的解决方案。因此,一些查询优化方法是自上而下的搜索,而一些则是自下而上的搜索;一些方法是深度优先搜索,而其他方法是广度优先搜索。用于查询优化的许多技术已在各种数据库系统中被使用。通常,查询优化的结果是数据库操作组合的树或图表示,该数据库操作映射到查询的类似树或图表示。
查询被解析以生成查询的初始表示,通常为树。在基于规则的自上而下的查询优化方法中,该初始树是通过应用变换规则来变换的。变换规则可以提供查询的替代逻辑等效表示。变换规则可以提供实现部分查询的可能操作。查询优化的其他方法(诸如自下而上的方法)可以使用输入查询的不同逻辑表示,变换被应用于该不同逻辑表示以探索搜索空间。通常使用的变换类型取决于查询的逻辑表示和所使用的搜索空间探索类型。应用这种变换的结果是用于实现查询的许多替代方案。这些替代方案针对可能性能影响或计算成本而被评估。这种评估是在查询优化过程期间执行的,并且通常会导致修剪一些变换,而导致这些变换不进一步用于探索搜索空间。应用所有可用的变换(其中多次调用这种变换)可能会导致实现查询的大量可能的操作组合。
查询优化消耗了数据库系统的大量处理资源。查询优化时间随查询的大小和复杂性呈指数增长。查询执行计划还可能消耗大量内存。当一些数据库系统缓存查询执行计划时,如果出于一些常见原因,查询执行计划不再在缓存中,则查询执行计划可能需要针对查询来重新计算。例如,缓存的替换策略可能会导致查询执行计划从缓存中被移除。作为另一示例,响应于系统重启,缓存可以被清空,并且数据库系统可以在重启那些查询之前针对几个查询执行查询优化。作为另一示例,当关于数据库性能的统计信息被更新时,这些统计信息可能会影响可能的操作组合的估计成本,并且数据库系统可能会再次执行查询优化。
发明内容
该发明内容被提供来以简化的形式介绍对于下面在详细描述中进一步被描述的概念的选择。该发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在限制所要求保护的主题的范围。
查询优化器针对由变换生成的每个可能的表达式记录指示该变换以及生成该表达式的输入的数据。当表达式集合被选择作为查询执行计划时,用于生成这些表达式的变换可以被标识。当查询优化器第二次处理查询时,所记录的关于变换和被用于生成原始查询执行计划的输入的数据可以被用于指导优化过程第二次产生原始查询执行计划。
在以下描述中,参考附图,附图形成该描述的一部分,并且在附图中通过说明的方式示出了特定示例实现。在不脱离本公开的范围的情况下,其他实现可以被进行。
附图说明
图1是示例计算环境的框图,该示例计算环境包括执行查询优化的数据库系统。
图2是查询优化的示例实现的数据流程图。
图3是在查询优化中使用的数据结构的说明性示例的图。
图4是为查询执行计划生成的数据结构实例的说明性示例的图。
图5是描述了在查询优化期间生成谱系(lineage)节点集合的示例说明性实现的操作的流程图。
图6是描述了变换的提取的示例说明性实现的操作的流程图,该变换被应用以通过谱系节点集合在查询执行计划中创建表达式。
图7是描述了优化重放的示例说明性实现的操作的流程图,基于针对先前计算的查询执行计划的记录谱系(recorded lineage)来限制由查询优化器应用的变换。
图8是示例计算机的框图。
具体实施方式
图1是示例计算环境的框图,该示例计算环境包括执行查询优化的数据库系统。
在图1中,数据库服务器计算机100支持数据库130,并包括查询处理模块140。查询处理模块140响应于来自客户端计算机150上的应用(未示出)的查询110,以将查询110处理为在数据库130上执行的查询执行计划120。可以有许多客户端计算机150和许多查询110。查询处理模块140可以包括各种子系统,负责管理对数据库的访问,管理接收查询,管理对查询的响应的传输等。本文档的主要重点是查询处理模块的将查询转换为查询执行计划的那些操作。
数据库服务器计算机100通常可以使用诸如在图8中描述的计算机来实现,并且被配置为支持作为服务器的操作。客户端计算机150通常可以使用诸如在图8中描述的计算机来实现,并且可以包括多种计算机配置中的任何一种,包括但不限于其他服务器计算机、台式计算机、膝上型计算机、笔记本计算机、移动计算机、平板计算机、板式计算机、机顶盒、游戏控制台和移动电话。
查询110以声明性或非程序性语言(诸如结构化查询语言(SQL))来指定。声明性语言指定数据库记录必须满足才能响应查询的条件,但该声明性语言不是以在数据库130上执行的操作的形式。查询编译模块140将查询110转化为被称为“查询执行计划”的操作集合。数据库服务器计算机100在数据库130上执行查询执行计划120。通常,查询被变换为树或图表示,继而被用于生成查询执行计划。查询执行计划中的操作通常采用程序性计算机语言的形式。
通常,客户端计算机150通过一个或多个计算机网络160访问数据库服务器计算机100。计算机网络160可以是支持客户端计算机150和数据库服务器计算机100之间的交互的任何计算机网络,诸如局域网或广域网,无论是私有和/或公共访问的,并且可以包括有线和/或无线连接性。计算机网络160可以使用几种可用的网络通信协议中的任何一种来实现,包括但不限于以太网和TCP/IP。
现在数据库服务器计算机100(尤其是查询编译模块140)的示例实现将结合图2至图7被描述。该描述仅出于说明目的而用于示例实现,并且不旨在在任何方面中进行限制。许多其他实现是可能的。
现在参照图2,查询编译模块140包括解析和绑定模块200,该模块200将查询转换为输入查询的逻辑表示,在本文中称为查询树202。查询树202可以使用常用于表示树或图的任何的数据结构来表示。尽管术语“查询树”被使用,但是数据结构不被限于树数据结构。例如,有向非循环图可以被使用。
查询优化模块206通过应用变换204来处理查询树202。变换可以提供查询树202或查询树的一部分的替代逻辑等效表示。变换可以提供可能的操作来实现查询的一部分,作为查询树202的节点中的一个节点的特定实现。变换的结果在本文中被称为“表达式”。查询树202的各种替代方案或它通过应用变换204创建的部分的各种替代方案是针对可能的性能影响或计算成本来评估的。替代方案的最佳组合被选择以生成查询执行计划120。
查询优化是在大的搜索空间上进行搜索的一种形式,以找到最优的或合理有效的解决方案。因此,一些查询优化方法是自上而下的搜索,而一些则是自下而上的搜索;一些方法是深度优先搜索,而其他方法是广度优先搜索。
用于查询优化的许多技术已在各种数据库系统中被使用。在以下描述中,一种查询优化的示例类型将被描述,它是自上而下搜索的一种形式。该技术基于例如GoetzGraefe在1995年的数据工程公告第18卷中的“The Cascades Framework for QueryOptimization(查询优化的级联框架)”中描述的、所谓的“级联”框架。该技术利用“备忘录表(memo table)”数据结构208,其示例在下面被更详细地描述,并且涉及将变换规则应用于输入查询。查询优化的其他方法可以使用输入查询的不同逻辑表示,变换被应用于该不同逻辑表示以探索搜索空间。变换可以是生成指定查询部分的一个或多个等效项的数据的任何操作。通常使用的变换类型取决于查询的逻辑表示和所使用的搜索空间探索类型。
查询优化模块206针对由变换204生成的每个可能的表达式记录指示生成了该表达式的变换的数据。在图2至图7的示例实现中,该数据被存储为备忘录表208的一部分。
使用用于查询优化的其他技术,其他数据结构可以被用于探索用于产生查询执行计划的操作的可能组合的搜索空间。利用用于查询优化的这些其他技术,具有类似效果的记录在该搜索过程中采取的步骤的类似技术也可以被使用,在本文中称为记录查询优化计划的谱系。取决于实现,该数据可以以其他方式被存储为用于表示输入查询的数据结构的一部分或与之相关联,该数据结构在整个查询优化过程中都被变换。
现在转到图3,备忘录表208的示例实现现在将在简单查询的说明性示例的上下文中被描述。在图3中,说明性示例查询300是“从table1.a=table2.b上的表1联接表2中选择*”。这种查询的结果是返回记录集合,这些记录是由于第一表格(“table1”)和第二表格(“table2”)的联接而产生的,其中第一表格中的第一字段(“a”)中的值等于第二表格中的第二字段(“b”)中的值。
查询优化器解析该查询并初始化备忘录表208,该备忘录表208表示与该查询相对应的查询树。备忘录表包括组302。在每个组中,备忘录表208包括表达式304。组302表示查询的一部分。表达式可以是查询的一部分的逻辑表示,或者可以表示执行查询的那一部分的数据库操作。单个组中的所有表达式都是该组的逻辑等效替代方案。表达式通常包括指定操作的数据(例如306中的“联接”)以及指定操作被执行的一个或多个操作数的数据,通过指代组或组表达式(例如308中的“3 4 2”)。
在图3的示例中,查询中的“table2.b”对应于组0,“table1.a”对应于组1。它们在查询300中的组合“table1.a=table2.b”由组2表示,“=0 1”,其中“=”是运算符,并且“01”是两个操作数,指代组0和组1。因此,可以被用于实现操作“=”的各种方式中的任何一种都可以被应用于组0和1中的表达式的值可以被获得的各种方式中的任何一种。类似地,“table1”和“table2”分别成为组4和组3,并且表示取回“table1”和“table2”的内容的各种方式。组5表示“联接”操作,其操作数为“3 4 2”,指示联接操作被应用于组3和组4,条件由组2指定。为了提供用于指代每个表达式的示例约定,组内的表达式可以使用正整数被连续排序和编号;类似地,组可以被连续排序和编号。因此,组5中的第一表达式“联接3 4 2”可以被称为表达式“5.1”。
变换规则被应用于备忘录表,以将组和表达式变换为组和表达式的附加替代表示。作为示例,由于交换性规则,“联接3 4 2”也可以被表示为“联接4 3 2”。该表达式可以作为组5中的表达式的替代表示被添加到组5,并且可以被称为表达式“5.2”。
这种备忘录表208可以由组的集合(诸如有序数组)表示,其中每个组是表达式的集合(诸如有序数组)。表达式包括表示操作的数据和表示其操作数的数据。操作数可以通过指代组或表达式的标识符来指代其他组或表达式。由于备忘录表的结构,标识符可以作为表示组或表达式的数据的一部分被明确地存储在备忘录表中,或者可以被推断(例如它是索引)。
如上面提到的,查询优化模块206针对由变换204生成的每个可能的表达式记录指示生成了该表达式的变换的数据。使用图3的说明性示例,假设交换性规则被分配有标识符,例如“规则1”。该规则被应用于组5中的第一表达式,即,表达式“5.1”,并导致该表达式现在被标注为表达式“5.2”。因此,表示表达式“5.2”的数据可以被扩充以包括指示表达式如何被生成的数据,即,应用于表达式“5.1”的“规则1”。
各种不同的数据结构可以被用于存储指示每个表达式如何被生成的数据,在本文中也称为记录用于查询的查询优化计划的“谱系”。在一个实现中,备忘录表208还包括称为谱系节点的数据结构。在面向对象的实现中,该数据结构可以被定义为谱系节点类,并且该类的实例是针对变换规则的每个应用而被生成的,从而在备忘录表中产生新的表达式。备忘录表中通过应用变换规则而创建的每个表达式均指代表示该变换规则的应用的谱系节点实例。谱系节点的集合描述了在查询优化阶段应用的所有变换规则。
在示例实现中,如图3中的350所示,谱系节点数据结构可以存储以下信息:生成了该节点的查询优化过程中的任务的任务号352、由该任务使用的变换规则的规则号354、表达式列表356(作为构成谱系节点对象的变换规则的绑定)、以及通过应用变换规则而产生的表达式的组和表达式号360。类似的信息可以针对其他类型的变换而被存储。
使用来自上文的示例,如果查询优化的第一任务是将交换性规则应用于联接表达式(标注为规则“1”),那么谱系节点的实例将被创建,其中针对组5中的第一表达式,任务号352为“1”,规则号354为“1”,绑定356为“5.1”,并且输出360为组5中的第二表达式,其现在被标注为表达式“5.2”。
在查询优化之后,如上面在图2中提到的,查询执行计划可以被生成。通过记录由查询优化器用于探索搜索空间以生成该查询执行计划的谱系,查询优化过程可以提供数据,该数据可以由查询优化器用于为查询重新生成查询执行计划,而无需再次探索搜索空间。
由查询优化器为查询生成的记录谱系可以以多种方式被使用。例如,系统可以追踪关于已由查询优化器使用的变换的数据,这些变换会导致表达式在优化的查询执行计划中被使用。该系统可以标识导致产生被用于生成所选的查询执行计划的表达式的变换。这些标识的变换可以从记录谱系中被提取。在重新处理查询时,查询优化器可以使用该提取的信息来引导查询优化过程。例如,查询优化器可以将变换的应用限制为仅产生原始查询执行计划的那些变换。在本文中,该过程被称为“优化重放”。
为了说明在图2和图3的示例实现的上下文中的优化重放,用于查询执行计划的操作组合以及包括组、表达式和谱系节点集合的对应备忘录表的说明性示例现在将结合图4被描述。在该示例中,查询执行计划由树400表示,该树400包括:表达式1.1和2.2的组合,它们由表达式3.1组合;以及表达式5.2和4.1,它们由表达式8.3组合;以及表达式7.5,它组合了表达式3.1和8.3。谱系节点的集合402说明了变换规则的摘录,这些变换规则被应用于在备忘录表404中产生一些表达式(该示例不包括产生表达式1.1、2.1、2.2、6.1和6.2的任务和变换规则)。
通过检查谱系节点402的集合,我们可以标识出变换规则(用“*”标注),该变换规则直接导致在查询执行计划中创建表达式,或者间接地通过创建表达式,该表达式最终被用于创建表达式的变换规则的绑定。
现在转到图5,描述了在查询优化期间生成谱系节点集合的示例说明性实现的示例操作的流程图现在将在图2和图3的实现的上下文中被描述。
在查询优化中,任务集合通过应用变换而被执行,以生成和评估替代方案,在该示例中,该变换是变换规则。如图5所示,针对要被执行的每个新任务,查询优化器递增任务号502。给定任务号、任务中所应用的变换规则的规则号、以及所应用的变换规则的绑定,如果该任务导致创建新的表达式,如在502中确定的,则对应的谱系节点是针对新的表达式创建的504。例如,通过更新(506)关于查询执行计划的正在进行的评估的任何信息来继续查询优化。如果仍有任务要被处理,如在508中确定的,则下一任务是通过重复步骤500至508来处理的,然后在完成时终止(510)。
现在转到图6,描述变换的提取的示例说明性实现的操作的流程图现在将被描述,该变换用于通过谱系节点集合在查询执行计划中创建表达式。
存在多种方式,其中谱系节点集合中的谱系节点可以被标识为与用于在查询执行计划中生成表达式的变换相对应。该过程是搜索谱系节点集合的一种形式:给定表达式,标识用于直接和间接生成该表达式的变换集合。
在图6中,查询执行计划的深度优先、自上而下的搜索被描述。备选地,广度优先搜索可以被执行,并且搜索可以以自上而下或自下而上的方式被执行。该过程开始于选择(600)查询执行计划的下一节点,最初是根节点,例如图4中的计划400的根节点(表达式“7.5”)。与所选节点的表达式相对应的谱系节点(例如402中的最后一个谱系节点,其输出表达式“7.5”)被标识(602),并且可以例如通过将任务号添加到列表或用一些追踪数据标记谱系节点来追踪。所标识的谱系节点的绑定中的(多个)表达式(例如表达式“7.2、8.1、4.0、5.0、3.0、2.0、1.0”)被标识604。标识谱系节点(602)并且标识绑定(604)的步骤(如606中所指示的)针对被用作查询执行计划的当前所选节点的谱系节点中的绑定的每个表达式来重复。如608中所指示的,步骤602至606的该处理针对查询执行计划的每个节点重复(例如在使用步骤602至606处理查询执行计划中的节点“7.5”之后,查询执行计划中的节点“3.1”被处理)。在查询执行计划的所有节点已被处理之后,用于在查询执行计划中产生表达式的所有谱系节点已被标识。在终止该过程(612)之前,所标识的谱系节点的该集合可以按任务号被分类610。
存在用于存储对应于所选的查询执行计划的记录谱系数据的许多选项。在一个实现中,谱系节点数据结构的集合可以作为键-值对的集合被存储在可扩展标记语言(XML)文档中。该XML文档可以是包括所选的查询执行计划中的所有运算符和表达式的文档,它可以被扩充以包括其对应的谱系信息。在一些实现中,表示具有嵌入式谱系信息的查询执行计划的这种XML文档可以被用于其他目的,诸如为查询优化提供提示或推动查询优化器产生计划。关于记录谱系的这种数据可以由数据库系统持久存储。
现在转到图7,描述了优化重放的示例说明性实现的操作的流程图现在将被描述,基于针对先前计算的查询执行计划的记录谱系来限制通过查询优化器对变换的应用。如上面提到的,典型的查询优化涉及与查询的复杂性成指数关系的计算时间和资源使用情况。通过使用从与查询执行计划相对应的谱系节点提取的数据,查询优化器的操作可以被限制为仅应用从原始查询执行计划生成表达式的那些变换。
仅重用导致所选的查询执行计划的所应用的变换通常取决于查询优化器的实现以及存储在记录谱系中的信息。如果关于所应用的变换的足够信息以及关于查询优化器的足够的状态信息被存储(当这些变换被应用时),则记录谱系可以在查询优化器内被简单地执行,从而引导查询优化器执行所选的变换。在一些实现中,查询优化器可以执行其通常的优化过程,但使用记录谱系来跳过未被用于达到查询执行计划的任务。
在一个实现中,为了使用记录谱系,查询优化器针对查询第二次被运行时,查询优化器获得(700)记录谱系,其包含关于先前所应用的变换的数据,该数据产生了该查询的先前查询执行计划。然后,查询优化器继续其创建任务以应用变换的过程。如图7所示,针对所生成的每个新任务(702),查询优化器将该任务与记录谱系进行比较704。如果该任务在记录谱系中,则该任务被执行708,例如其变换规则被应用以生成对应的表达式。为了验证任务将对先前计算的查询执行计划应用记录谱系中的变换,在图2至图6的示例实现中,查询优化器可以将任务的规则号和绑定与谱系节点的规则号和绑定进行比较。如果规则号和绑定相匹配,则任务可以被执行。否则,该任务不被执行706,例如其变换规则不被应用或被跳过。查询优化继续:如果仍有任务要被处理,如在710中确定的,则下一任务是通过重复步骤702至708来处理的;否则该过程在712中终止。
在一些实例中,在查询优化的后续重放中应用诸如变换规则等变换可能会导致表达式在优化重放中的标识符与原始优化中的标识符不同。例如,在优化重放中,变换可以被跳过。因此,作为示例,在原始优化中,组8.1、8.2和8.3可以被生成,但是在优化重放中,最初生成了组8.2的变换可以被跳过,从而将组8.3重新编号为组8.2。为了解决该问题,优化重放过程可以维护原始优化和优化重放之间使用的表达式的映射。当新的表达式在优化重放中被生成时,对应的条目可以在该映射中被录入,该映射在来自原始优化的该表达式的表达式标识符与稍后的优化重放中的该表达式的新表达式标识符之间。当检查是对任务执行以验证规则和绑定时(例如图7中的704),绑定的验证可以使用该映射。
在查询优化的一些实现中,第一变换的应用可以使第二变换的应用排队。当优化基于记录谱系而被重放时,如果第一变换的应用被省略,那么第二变换可能不会针对应用被排队。如果由应用第二变换生成的表达式在查询执行计划中被使用,并且如果查询优化器在优化重放时跳过了第一变换,并且随后再也没有使第二变换的应用排队,那么查询优化器可能会失败。类似地,查询优化可以分阶段被执行,并且由于一些变换在不同的优化阶段被执行或在不同的优化阶段中表现不同而可能产生类似的场景。
存在解决这种场景的多种方法。在一些实现中,查询优化器可以简单地重启并生成新的查询优化计划,而无需任何记录谱系信息。在一些实现中,记录谱系可以包括关于变换之间的依赖性的信息,使得记录谱系指示第二变换取决于第一变换的应用。例如,“虚拟”变换规则可以被存储以指示变换规则未被使用的结果,但是其触发另一变换规则的副作用被使用。在一些实现中,记录谱系可以包括关于在变换被应用的优化阶段的信息。
通过记录由查询的查询优化过程评估的变换的谱系,针对该查询执行的后续查询优化可以被变换为资源消耗相对于查询大小呈线性而不是指数的过程。如果使用记录谱系重放查询优化的尝试失败,则标准查询优化可以被执行。记录谱系可以被使用的另一场景是通过缓存查询优化计划来减少所消耗的内存和/或创建优化重放步骤而不是查询优化计划的缓存。这种缓存可以被持久存储在例如磁盘存储装置上,并且可以大于可用内存。
记录谱系可以被使用的另一场景是用于允许优化重放在除了执行初始查询优化的数据库服务器计算机之外的数据库服务器计算机上被执行。在一些情况下,记录谱系可以被用于“推动”计划。即使查询执行计划仍被缓存,由于统计信息更新而导致的重新编译也可以被执行,因为重新编译可以产生更新后的基数估计,该基数估计可以被用于调整资源授权(例如内存)。记录谱系的又一用途是重新计算现有查询执行计划的成本,以确定该计划对于不同的参数值集合是否仍然有效。
现在已经描述了示例实现,图8图示了前述描述的计算机系统的组件可以被实现的计算机的示例。这仅是计算机的一个示例,并且无意对这种计算机的使用范围或功能性提出任何限制。
计算机可以是多种通用或专用计算硬件配置中的任何一种。可以被使用的计算机类型的一些示例包括但不限于个人计算机、游戏控制台、机顶盒、手持或便携式设备(例如媒体播放器、笔记本计算机、平板计算机、包括但不限于“智能”电话的蜂窝电话、个人数据助理、录音机)、服务器计算机、多处理器系统、基于微处理器的系统、可编程消费性电子产品、联网个人计算机、小型计算机、大型计算机和包括以上类型的计算机或设备中的任何一个的分布式计算环境等。
参照图8,计算机800包括处理系统,该处理系统包括至少一个处理设备802和至少一个存储器804。处理设备802可以包括多个处理设备;存储器804可以包括多个存储器设备。处理设备802包括作为逻辑电路系统的处理器,该处理器响应并处理用于提供计算机的功能的指令。处理设备可以包括作为同一逻辑电路系统内的多个处理器的一个或多个处理核心(未示出),该一个或多个处理核心可以彼此独立地操作。通常,计算机中的处理设备中的一个处理设备被指明为主处理器,通常称为中央处理单元(CPU)。一个或多个附加的协处理单元(诸如图形处理单元(GPU)820)也可以存在于计算机中。协处理单元包括处理器,该处理器执行补充中央处理单元的操作,诸如但不限于图形操作和信号处理操作。
存储器804可以包括易失性计算机存储设备(诸如动态随机存取存储器(DRAM)或其他随机存取存储器设备)和非易失性计算机存储设备(诸如只读存储器、闪存等)或这两者的某种组合。非易失性计算机存储设备是在电源被移除时其内容不会丢失的计算机存储设备。其他计算机存储设备(诸如专用存储器或寄存器)也可以存在于一个或多个处理器中。计算机800可以包括附加的计算机存储设备(可移除或不可移除的),诸如但不限于磁性记录或光学记录的磁盘或磁带。这种附加的计算机存储设备在图8中由可移除存储设备808和不可移除存储设备810图示。这种计算机存储设备808和810通常是非易失性存储设备。图8中的各种组件通常由互连机制(诸如一个或多个总线830)互连。
计算机存储设备是数据可以由计算机通过改变可寻址物理存储位置处的设备的状态而被存储在可寻址物理存储位置中并且从中取回的任何设备。因此,计算机存储设备可以是易失性或非易失性存储器,或者是可移除或不可移除存储设备。存储器804、可移除存储装置808和不可移除存储装置810是计算机存储设备的所有示例。计算机存储设备的一些示例是RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或者其他光学或磁光记录的存储设备、磁带盒、磁带、磁盘存储装置或其他磁性存储设备。计算机存储设备和通信介质是不同的类别,并且两者都不同于通过通信介质传播的信号。
计算机800还可以包括允许计算机通过通信介质与其他设备进行通信的(多个)通信连接812。通信介质通常通过在物质上传播诸如载波等调制数据信号或其他输送机制在有线或无线物质上发送计算机程序指令、数据结构、程序模块或其他数据。术语“调制数据信号”表示以对信号中的信息进行编码的方式设置或改变其一个或多个特性的信号。通过示例而非限制,通信介质包括有线介质(诸如传播电信号的金属或其他导电线或者传播光学信号的光纤)和无线介质(诸如允许传播信号的任何非有线通信介质,诸如声学、电磁、电、光学、红外、射频和其他信号)。
通信连接812是诸如有线网络接口、无线网络接口、射频收发器(例如Wi-Fi 870、蜂窝874、长期演进(LTE)或蓝牙872等收发器)、导航收发器(例如全球定位系统(GPS)或全球导航卫星系统(GLONASS)等收发器)和网络接口设备876(例如以太网等)或者与通信介质接口连接以通过通信介质发送数据并从通过通信介质传播的信号接收数据的其他设备等设备。
计算机800可以具有(多个)各种输入设备814,诸如指示器设备、键盘、基于触摸的输入设备、笔、相机、麦克风、传感器(诸如加速度计、温度计、光传感器等)等。计算机800可以具有(多个)各种输出设备816,诸如显示器、扬声器等。这种设备在本领域中是众所周知的,并且此处不需要被详细讨论。各种输入和输出设备都可以实现自然用户界面(NUI),它是使用户能够以“自然”方式与设备进行交互的任何界面技术,而不受由诸如鼠标、键盘、遥控器等输入设备施加的人工约束。
NUI方法的示例包括依赖于语音识别、触摸和手写笔识别、屏幕上以及与屏幕相邻的手势识别、空中手势、头部和眼睛追踪、语音和言语、视觉、触摸、手势和机器智能的那些NUI,并且可以包括使用触敏显示器、语音和言语识别、意图和目标理解、使用深度相机(诸如立体相机系统、红外相机系统和其他相机系统以及这些的组合)的运动手势检测、使用加速度计或陀螺仪的运动手势检测、面部识别、三维显示器、头部、眼睛和凝视追踪、沉浸式增强现实和虚拟现实系统(所有这些都提供了更自然的界面)以及用于使用电场感测电极感测脑部活动的技术(EEG和相关方法)。
各种计算机存储设备808和810、通信连接812、输出设备816和输入设备814可以与计算机的其余部分集成在外壳内,或者可以通过计算机上的各种输入/输出接口设备被连接,在这种情况下,附图标记808、810、812、814和816可以指示用于连接至设备的接口或者设备本身。
计算机通常包括作为计算机程序的操作系统,该计算机程序在被执行时管理在计算机上运行的其他应用对计算机的各种资源的访问。可能存在多个应用。各种资源包括处理设备、协处理单元、存储器、存储装置、输入设备和输出设备,诸如图8所示的显示设备和输入设备。为了管理对存储在非易失性计算机存储设备中的数据的访问,计算机通常也包括维护数据文件的文件系统。文件是由文件系统定义和实现的命名逻辑构造,以将名称和数据的逻辑记录序列映射到计算机存储设备上的可寻址物理位置。文件系统通常提供诸如创建文件,打开文件,写入文件或其属性,读取文件或其属性以及关闭文件等操作。
结合图1至图7描述的各种模块、工具或应用和数据结构和流程图和图形用户界面以及图8中的计算机上的任何操作系统、文件系统和应用可以使用一个或多个计算机的一个或多个处理设备来实现,该一个或多个计算机具有由一个或多个处理设备处理的一个或多个计算机程序。
一种计算机程序包括计算机可执行指令和/或计算机解译的指令,诸如程序模块,该指令由计算机中的一个或多个处理设备或协处理单元处理。通常,这种指令定义例程、程序、对象、组件、数据结构等,其在由处理设备处理时指示或配置计算机以对数据执行操作,或配置计算机以实现各种组件、模块或数据结构。
备选地或者另外,本文描述的一个或多个各种组件的功能性可以至少部分地由一个或多个硬件逻辑组件执行。例如但不限于,可以被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等。
因此,在一个方面中,一种计算机系统包括具有查询优化器的数据库系统,该查询优化器记录用于生成查询执行计划的变换。在另一方面中,一种计算机系统包括具有查询优化器的数据库系统,该查询优化器重放针对先前生成的查询执行计划记录的变换。
在另一方面中,计算机实现的过程由具有查询优化器的数据库系统执行,其中该过程包括记录用于生成查询执行计划的变换。在另一方面中,计算机实现的过程由具有查询优化器的数据库系统执行,其中该过程包括重放针对先前生成的查询执行计划记录的变换。
在任何前述方面中,输入查询是以声明性查询语言接收的,并且查询执行计划包括在数据库上执行以实现输入查询的指令。
在任何前述方面中,查询优化器可以将多个变换应用于输入查询的逻辑表示,以生成查询执行计划的表达式。在一些实现中,查询优化器可以将变换规则的自上而下的应用用作多个变换。在一些实现中,查询优化器可以使用变换的自下而上的应用来查询输入查询的逻辑表示中的元素。
在任何前述方面中,查询优化器可以针对多个变换中的变换的每个应用存储指示所应用的变换的数据以及由该变换使用的相应绑定。存储数据可以与通过应用变换生成的相应表达式相关联。任务标识符可以针对每个应用的变化被存储。查询优化器可以从存储数据中提取指示用于在查询执行计划中生成表达式的变换和绑定的信息。为了提取信息,查询优化器可以针对查询执行计划中的每个表达式标识应用于生成相应表达式所依赖的其他表达式的每个变换。查询优化器还可以按照由查询优化器执行的顺序对所标识的变换进行串行化。
在任何前述方面中,当重放记录的变换时,针对要被应用于输入查询的每个变换,响应于该变换是用于在原始查询执行计划中生成表达式的记录变换中的一个记录变换,该查询优化器可以应用变换,并且以其他方式避免应用变换不被用于在原始查询执行计划中生成表达式。如果查询优化器在尝试使用记录的变换时发生错误,则查询优化器可以在不使用记录的变换的情况下执行查询优化。
在另一方面中,一种制品包括至少一个计算机存储介质以及存储在至少一个计算机存储介质上的计算机程序指令。当由计算机的处理系统处理时,该处理系统包括一个或多个处理单元和存储装置,计算机程序指令如任何前述方面中陈述的那样配置计算机和/或如任何前述方面中陈述的那样执行过程。
任何前述方面都可以被实施为计算机系统,实施为这种计算机系统的任何单独组件,实施为由这种计算机系统或这种计算机系统的任何单独组件执行的过程,或实施为包括计算机存储装置的制品,计算机程序指令被存储在该计算机存储装置中,并且在由一个或多个计算机处理时,该计算机存储装置将一个或多个计算机配置为提供这种计算机系统或这种计算机系统的任何单独组件。
所附权利要求中限定的主题不必被限于上述特定实现。上述特定实现仅被公开为示例。

Claims (15)

1.一种计算机系统,包括:
处理系统,其访问计算机程序指令,所述计算机程序指令在由所述处理系统执行时将所述计算机系统配置为包括:
数据库,其包括查询优化器,所述查询优化器具有输入和输出,所述输入以声明性查询语言接收输入查询,所述输出提供查询执行计划,所述查询执行计划包括在所述数据库上被执行的指令,所述查询优化器被配置为:
将多个变换应用于所述输入查询的逻辑表示以生成针对查询执行计划的表达式;以及
针对来自所述多个变换中的变换的每个应用,存储指示所应用的所述变换和由所述变换使用的相应绑定的数据,所存储的所述数据与通过应用所述变换而生成的相应表达式相关联。
2.根据权利要求1所述的计算机系统,其中为了存储所述数据,所述查询优化器存储记录谱系,所述记录谱系针对所应用的每个变换包括指示以下的数据:所述变换的标识符、用作所述变换的相应绑定的表达式的标识符、和由应用于所述相应绑定的所述变换生成的相应表达式的标识符。
3.根据前述权利要求中任一项所述的计算机系统,其中所述查询优化器还使用变换规则的自上而下的应用作为所述多个变换。
4.根据前述权利要求中任一项所述的计算机系统,其中所述查询优化器还针对每个所应用的变换存储唯一的任务标识符。
5.根据前述权利要求中任一项所述的计算机系统,还包括:
所述查询优化器从所存储的所述数据中提取指示以下的信息:用于在所述查询执行计划中生成表达式的变换和绑定。
6.根据权利要求5所述的计算机系统,其中为了提取所述信息,所述查询优化器针对所述查询执行计划中的每个表达式标识应用于生成所述相应表达式所依赖的其他表达式的每个变换。
7.根据权利要求5或6所述的计算机系统,其中所述查询优化器按照由所述查询优化器执行的顺序对所标识的所述变换进行串行化。
8.一种计算机系统,包括:
处理系统,其访问计算机程序指令,所述计算机程序指令在由所述处理系统执行时将所述计算机系统配置为包括:
数据库,其包括查询优化器,所述查询优化器具有输入和输出,所述输入以声明性查询语言接收输入查询,所述输出提供查询执行计划,所述查询执行计划包括在所述数据库上被执行的指令,所述查询优化器被配置为:
接收用于所述输入查询的原始查询执行计划的存储信息,所述存储信息针对用于在所述查询执行计划中产生表达式的变换的每个应用包括指示以下的数据:所应用的所述变换和针对所述变换的绑定,所述绑定指示输入给所述变换的表达式;
针对要被应用于所述输入查询的每个变换,响应于所述变换由所述存储信息指示,应用所述变换,并且以其他方式避免变换不被用于在所述原始查询执行计划中生成表达式。
9.根据权利要求8所述的计算机系统,其中所述存储信息包括记录谱系,所述记录谱系针对应用于所述输入查询的逻辑表示的每个变换包括指示以下的数据:所述变换的标识符、用作由所述变换使用的相应绑定的表达式的标识符、和由应用于所述相应绑定的所述变换生成的相应表达式的标识符。
10.根据权利要求8或权利要求9所述的计算机系统,其中所述查询优化器还使用变换规则的自上而下的应用作为所述多个变换。
11.根据权利要求8或9或10中任一项所述的计算机系统,其中所述查询优化器还针对每个变换存储唯一的任务标识符。
12.根据权利要求8至11中任一项所述的计算机系统,还包括:
所述查询优化器从所存储的所述数据中提取指示以下的信息:用于在所述查询执行计划中生成表达式的变换和绑定。
13.根据权利要求12所述的计算机系统,其中为了提取所述信息,所述查询优化器针对所述查询执行计划中的每个表达式标识用于生成所述表达式所依赖的其他表达式的相应变换。
14.根据权利要求12或13中任一项所述的计算机系统,其中所述查询优化器按照由所述查询优化器执行的顺序对所标识的所述变换进行串行化。
15.根据权利要求8至14中任一项所述的计算机系统,其中响应于所述查询优化器在尝试在应用变换时使用所述存储信息时的错误,所述查询优化器被配置为执行查询优化而不使用所述存储信息。
CN201980072723.3A 2018-11-02 2019-10-29 记录查询优化中的谱系 Active CN112970011B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/179,434 2018-11-02
US16/179,434 US10872085B2 (en) 2018-11-02 2018-11-02 Recording lineage in query optimization
PCT/US2019/058416 WO2020092279A1 (en) 2018-11-02 2019-10-29 Recording lineage in query optimization

Publications (2)

Publication Number Publication Date
CN112970011A true CN112970011A (zh) 2021-06-15
CN112970011B CN112970011B (zh) 2024-07-26

Family

ID=68582475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980072723.3A Active CN112970011B (zh) 2018-11-02 2019-10-29 记录查询优化中的谱系

Country Status (3)

Country Link
US (1) US10872085B2 (zh)
CN (1) CN112970011B (zh)
WO (1) WO2020092279A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176138B2 (en) * 2020-02-25 2021-11-16 Salesforce.Com, Inc. Caching techniques for query runtime state
US11983178B2 (en) * 2021-04-27 2024-05-14 Capital One Services, Llc Techniques for building data lineages for queries
US20230048391A1 (en) * 2021-08-11 2023-02-16 Sap Se Operator movement optimization technique for procedures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998026360A1 (en) * 1996-12-11 1998-06-18 Tandem Computers, Inc. System and method for optimizing database queries
CN1609855A (zh) * 2003-06-23 2005-04-27 微软公司 查询优化系统和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6466931B1 (en) 1999-07-30 2002-10-15 International Business Machines Corporation Method and system for transparently caching and reusing query execution plans efficiently
US7185000B1 (en) 2000-06-30 2007-02-27 Ncr Corp. Method and apparatus for presenting query plans
US6850925B2 (en) 2001-05-15 2005-02-01 Microsoft Corporation Query optimization by sub-plan memoization
US20050283458A1 (en) * 2004-06-22 2005-12-22 Microsoft Corporation Automatic detection of frequently used query patterns in a query workload
US7464071B2 (en) 2005-04-28 2008-12-09 Microsoft Corporation System and method for forcing a query execution plan
US7877381B2 (en) 2006-03-24 2011-01-25 International Business Machines Corporation Progressive refinement of a federated query plan during query execution
JPWO2008123081A1 (ja) * 2007-03-27 2010-07-15 日本電気株式会社 文字データ処理方法、コンピュータプログラム及び文字データ処理システム
US8126873B2 (en) 2007-04-13 2012-02-28 International Business Machines Corporation Portable and iterative re-usable suboptimization of database queries
US8122050B2 (en) 2008-04-16 2012-02-21 International Business Machines Corporation Query processing visualization system and method of visualizing query processing
US7966313B2 (en) 2008-06-26 2011-06-21 Microsoft Corporation Configuration-parametric query optimization
US8190595B2 (en) 2009-03-28 2012-05-29 Microsoft Corporation Flexible query hints in a relational database
US20100306188A1 (en) 2009-06-01 2010-12-02 Microsoft Corporation Persistent query plans
US20110137922A1 (en) 2009-12-07 2011-06-09 International Business Machines Corporation Automatic generation of a query lineage
US20140114952A1 (en) 2012-10-23 2014-04-24 Microsoft Corporation Optimizing queries of parallel databases

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998026360A1 (en) * 1996-12-11 1998-06-18 Tandem Computers, Inc. System and method for optimizing database queries
CN1609855A (zh) * 2003-06-23 2005-04-27 微软公司 查询优化系统和方法

Also Published As

Publication number Publication date
CN112970011B (zh) 2024-07-26
US10872085B2 (en) 2020-12-22
US20200142990A1 (en) 2020-05-07
WO2020092279A1 (en) 2020-05-07

Similar Documents

Publication Publication Date Title
US10169471B2 (en) Generating and executing query language statements from natural language
JP7406873B2 (ja) 質問および回答の語彙のグラフを使用する照会拡張
US7822710B1 (en) System and method for data collection
US11449477B2 (en) Systems and methods for context-independent database search paths
CN112970011B (zh) 记录查询优化中的谱系
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
US11226960B2 (en) Natural-language database interface with automated keyword mapping and join-path inferences
CN112930529A (zh) 从概念数据模型生成软件工件
US9754015B2 (en) Feature rich view of an entity subgraph
US20200349226A1 (en) Dictionary Expansion Using Neural Language Models
US11704345B2 (en) Inferring location attributes from data entries
US11726999B1 (en) Obtaining inferences to perform access requests at a non-relational database system
CN114356971A (zh) 数据处理方法、装置以及系统
CN109885585A (zh) 支持存储过程、触发器与视图的分布式数据库系统和方法
EP3997589A1 (en) Delta graph traversing system
EP3721354A1 (en) Systems and methods for querying databases using interactive search paths
CA3089289C (en) System and methods for loading objects from hash chains
US20150154268A1 (en) Method of discovering and exploring feature knowledge
US9201937B2 (en) Rapid provisioning of information for business analytics
Zaniewicz et al. Comparison of MongoDB, Neo4j and ArangoDB databases using the developed data generator for NoSQL databases
CA3048876C (en) Retroreflective join graph generation for relational database queries
US10620946B1 (en) Dynamic modeling for opaque code during static analysis
JP2023535608A (ja) ミドルウェアによって生成されたレコードの直接的なデータローディング
JP2013125429A (ja) 分析対象決定装置
US20230367751A1 (en) Evaluating Row-Store Expressions on a Column-Store Database

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