CN111670433A - 查询优化器约束 - Google Patents
查询优化器约束 Download PDFInfo
- Publication number
- CN111670433A CN111670433A CN201980010670.2A CN201980010670A CN111670433A CN 111670433 A CN111670433 A CN 111670433A CN 201980010670 A CN201980010670 A CN 201980010670A CN 111670433 A CN111670433 A CN 111670433A
- Authority
- CN
- China
- Prior art keywords
- query
- constraint
- execution
- optimizer
- execution plan
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000011156 evaluation Methods 0.000 claims abstract description 8
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000007728 cost analysis Methods 0.000 description 1
- 230000001419 dependent effect 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
- 230000008569 process Effects 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
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
技术领域
本公开总体上涉及数据库系统,并且更具体地,涉及数据库查询优化器。
背景技术
当查询被提交到数据库时,它可以表达查询的结果应该是什么,但是不表达如何获得结果。这样,可以使用几种不同的方法来执行查询。例如,请求表A、B和C的连接的查询可以按以下方式执行:1)A和B的连接,然后是结果和C的连接,或者2)B和C的连接,然后是A和结果的连接。现代的关系数据库系统通常采用查询优化器,该查询优化器接收已解析的查询并评估不同的执行计划,以确定用于执行查询的计划。该评估可以包括基于估计的计算和存储成本确定每个计划的分数,并选择具有最佳分数的计划。因此,如果连接B和C的结果比连接A和B的结果产生的临时表要小,则查询优化器可为上述第二个计划提供更好的分数。
附图说明
图1是示出被配置为支持查询优化器约束的数据库系统的一个实施例的框图。
图2是示出索引约束的一个实施例的框图。
图3是示出物理连接约束的一个实施例的框图。
图4是示出逻辑连接约束的一个实施例的框图。
图5是示出参数化约束的一个实施例的框图。
图6是示出基数约束的一个实施例的框图。
图7是示出约束合并器的一个实施例的框图。
图8A和图8B是示出用于服务数据库查询的方法的实施例的流程图。
图9是示出示例性计算机系统的一个实施例的框图。
本公开内容包括对“一实施例”或“一个实施例”的引用。短语“在一个实施例中”或“在一实施例中”的出现不一定指相同的实施例。可以以与本公开一致的任何适当方式来组合特定特征、结构或特性。
在本公开内,可以将不同实体(其可以被不同地称为“单元”、“电路”、其他组件等)描述或要求保护为“配置成”执行一个或更多个任务或操作。在本文中使用这种表述(配置为[执行一个或更多个任务]的[实体])来指代结构(即,诸如电子电路之类的物理物体)。更具体地,该表述用于指示该结构被布置为在操作期间执行一个或更多个任务。可以说结构被“配置为”执行某些任务,即使该结构当前未被操作。“配置为将数据存储在表中的数据库系统”旨在涵盖例如一计算机系统,该计算机系统具有一个或更多个处理器和存储器,所述存储器具有用于在操作期间执行此功能的程序指令,即使所讨论的计算机系统并非当前正在使用(例如它未连接电源)。因此,被描述或记载为“配置成”执行某项任务的实体是指某种物理事物,例如设备、电路、存储可执行以实现该任务的程序指令的存储器等。此短语在本文中不用于指代无形的事物。因此,“配置为”构造在本文中不用来指代诸如应用程序编程接口(API)之类的软件实体。
术语“配置成”并不旨在表示“可配置成”。例如,未编程的FPGA不会被认为是“配置成”执行某些具体功能,尽管它可能“可配置成”执行该功能,并且在编程后可能“配置成”执行该功能。
在所附权利要求中记载了一种结构被“配置成”执行一个或更多个任务,其明确意图并不调用35U.S.C第112(f)条用于该权利要求的元素。因此,所提交的本申请中的权利要求均不旨在被解释为具有装置加功能元件。如果申请人希望在程序中调用第112(f)条,它将使用“用于……的手段”[执行功能]构造来记载要求保护的元素。
如本文所使用的,术语“第一”、“第二”等被用作它们之前的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非特别说明。例如,如果数据库系统接收到第一请求和第二请求,则可以以任何顺序接收这些请求。换句话说,例如,“第一”请求不限于初始请求。
如本文所使用的,术语“基于”用于描述影响确定的一个或更多个因素。该术语不排除附加因素可能影响确定的可能性。即,确定可以仅基于指定因素或基于指定因素以及其他未指定因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或影响A的确定的因素。此短语不排除对A的确定还可以基于某些其他因素(例如C)的情况。该短语也意图涵盖仅基于B确定A的实施例。如本文所用的,因此短语“基于”与短语“至少部分地基于”同义。
详细描述
查询优化器可能并不总是为给定查询选择最理想的执行计划。这可能归因于以下事实:查询优化器评估的各种成本度量可能包含错误的信息。例如,为给定表(或列)维护的统计信息可能是陈旧的或丢失的。准确估计包含多个谓词的复杂查询的成本也可能很困难。相反,用户(或应用程序)可能对存储在数据库中的数据以及正在提交的查询有更深入的了解。更进一步,用户可能能够确定查询优化器针对特定查询选择的执行计划表现不佳并且可以得到改善。这样,查询优化器可能会从此额外的洞察中受益。
本公开描述了数据库系统的查询优化器可操作为接收方针(以下称为查询优化器约束)的实施例,该方针限制了被考虑为实现给定查询的执行计划集。如下所述,可以提交包括一个或更多个嵌入式约束的查询。然后可以将这些约束提供给查询优化器,该查询优化器评估查询的各种执行计划并尝试选择符合约束的计划。例如,查询可以包括指示优化器选择计划的约束,所述计划包括特定类型的扫描、连接(joint)等,因此,例如,用户可以阻止查询优化器选择包括有问题的连接操作的计划。如还将讨论的,在各种实施例中,查询优化器可以接收约束,该约束识别用于实现查询的子句/部分的多个选项。然后,查询优化器可以评估与这些选项有关的执行计划,并选择包括这些选项之一的计划。例如,可以提交约束,该约束指示应该使用约束中识别的潜在索引中的一个或两个来执行特定扫描。查询优化器然后可以评估包括使用第一索引的扫描的计划和包括使用第二索引的扫描的计划,并基于其评估选择其中一个计划。因此,用户可能够限制查询优化器正在考虑哪些计划,但仍可以利用查询优化器的智能在多个有利选项之间进行选择。在各种实施例中,如果查询优化器不能识别满足给定查询中的约束的计划,则查询优化器仍可以提供为什么它不能满足约束的指示—在一些实施例中,查询优化器可以甚至仍然选择不合规的计划并执行该计划,以便仍然为查询提供服务。
现在转到图1,描绘了被配置为支持具有查询优化器约束104的查询102的数据库系统10的框图。在所示的实施例中,数据库系统10包括解析器110、查询优化器120、执行引擎130和表140。在一些实施例中,数据库系统10可以与所示的方式不同地实现。例如,系统10可以包括更多组件,可以使用不同的语法来表达查询102等等。
数据库系统10可以对应于任何合适的数据库系统。在一些实施例中,系统10是关系数据库管理系统(RDBMS),其可以使用例如OracleTM、MySQLTM、MicrosoftTM SQL服务器、PostgreSQLTM、IBMTM DB2等来实现。因此,系统10可以配置为将数据存储在一个或更多个数据表140A中以为查询102提供服务。系统10还可以维护一个或更多个索引140B,这些索引可用于促进从数据表140A检索数据,并且可以响应于服务查询102生成临时表140C。在所示的实施例中,使用结构化查询语言(SQL)来表达查询102。在其他实施例中,可以支持其他查询声明语言。
在各种实施例中,解析器110可操作为解析所提交的查询102,该查询可以包括一个或更多个约束104。在一些实施例中,该解析可以包括对查询102中的子句执行语法分析并组装可以由查询优化器120处理的数据结构(例如,表达式树)。解析器110还可将任何约束104与查询102分开。在图1所示的实施例中,解析器110基于分隔符/*!...*/的出现来识别约束104,where...是约束的内容。在其他实施例中,可以使用不同的分隔符(或甚至技术)来将约束104与查询102中的其他内容区分开。如将参考图7所述,在一些实施例中,解析器110也可以尝试展平(flatten)查询102,如果它们包含子查询的话。这种展平可以包括将查询和子查询合并到单个查询中,以及如果已经为查询及其子查询指定了多个约束104,则将约束104合并在一起。
在各种实施例中,查询优化器120可操作用于为给定查询102生成执行计划112,其包括评估各种执行计划122并选择一个以实现查询102。优化器120可以使用任何合适的算法来评估并选择计划122。在一些实施例中,优化器120可以使用启发式算法,其中基于提供给优化器120的规则集来评估执行计划122。在其他实施例中,优化器120使用基于成本的算法,其中优化器120执行成本分析,该成本分析包括基于估计的处理器消耗、估计的内存消耗、估计的执行时间等为执行计划122分配分数。这些估计还可以基于各种度量,诸如表列中不同值的数量、谓词的选择(谓词限定的行的分数),被访问的表140A的基数(例如,行计数),如将参照图6讨论的。基于分数,优化器120然后可以选择具有最佳分数的执行计划122。在其他实施例中,优化器120可以使用启发式算法和基于成本的算法的组合。
如上所讨论的,在各个实施例中,查询优化器120还可操作为基于查询102中包括的约束104来评估执行计划122,并选择符合约束104的计划122。例如,在一些实施例中,查询优化器120可以向不符合约束104的任何执行计划122分配不利分数(或者甚至不给其评分),以防止其被选择。如上所述且如图1所示,在各个实施例中,给定的约束104可以为可接受的执行计划122指定多个选项106。例如,如下面将参照图2所述的,在图1中描述的约束104指示优化器120选择计划122,该计划包括使用索引idx1的索引扫描(描述为选项106A)或使用索引idx2的索引扫描(描述为选项106B)以实现查询102。(尽管在图1和一些后续附图中描绘了两个选项106A和106B,并且在各个实施例中可以指定任何数量的选项106。)因此,优化器120可以考虑包括选项106A的计划122和包括选项106B的计划122以供选择,但不考虑不具有选项106A和106B任一的任何计划122(例如,不包括索引扫描的计划122)。约束104的各种示例将在下面参考图2-图6更详细地讨论。这些约束104可以例如包括约束,该约束限制如何执行扫描,限制如何执行连接,覆盖由优化器120评估的度量等。
在各个实施例中,如果查询优化器120无法选择满足给定查询102的约束104的执行计划122,则查询优化器120可操作为提供如图1中的错误124所示的相应指示。在一些实施例中,该错误124不仅可以指示不存在满足约束104的计划122,而且可以识别如果在查询102中指定了多个约束104则无法满足的特定约束104。在一个实施例中,查询优化器120仍可以选择执行计划122(尽管不符合约束104),并将其提供给计划执行引擎130-因此,用户仍可以接收结果132,但要知道结果132是以与所提供的约束104不一致的方式获得的。然而,在其他实施例中,查询优化器120可以提供错误124并且不选择任何计划122来实现查询102。
一旦执行计划122被选择,在各种实施例中,执行引擎130可操作为执行所选择的计划122。因此,引擎130可以执行计划122中列出的各种动作,其可以包括访问一个或更多个数据表140A、索引140B和/或临时表140C。引擎130然后可以将任何结果132返回给服务查询102。
现在转到图2,示出了索引约束用法200的框图。如图所示,数据库系统10可以接收对查询102的请求,该查询102从表中选择满足一个或更多个标准的内容。在图2中描绘的特定查询102中,做出请求以从表t1中选择在列b1中的值小于10的行,并对所选择的行的数量进行计数。当接收到这样的查询102时,数据库系统10可以支持多种类型的扫描操作,用于识别满足指定标准的行。例如,数据库系统10可以支持顺序扫描,在顺序扫描中,执行引擎130逐行检查列b1中的每个值并确定其是否小于10。数据库系统10还可以支持其中索引被引用以识别感兴趣的特定行的索引扫描。例如,可以存在索引140B,其将给定值映射到在列b1中具有该值的每一行。因此,使用基于此索引的索引扫描可能更有效,因为可以使用该索引来识别具有例如9、8、7等值的行,而不必考虑具有大于10的值的行。
在所示的实施例中,查询优化器120支持索引约束104,该索引约束104指示查询优化器120选择包括针对索引扫描的多个选项106之一的计划122。在图2所描绘的特定示例中,选项106A“INDEX(t1 idx1)”指示使用表t1的索引idx1的索引扫描是可以接受的。选项106B“INDEX(t2 idx2)”指示使用表t1的索引idx2的索引扫描也是可以接受的。因此,基于这两个选项106A和106B,查询优化器120可以不考虑包括顺序扫描t1的执行计划122A,而是评估包括选项106A的执行计划122B和具有选项106B的执行计划122C。基于此评估,优化器120然后选择计划122B和122C中的优选一个以由执行引擎130执行。
现在转到图3,描绘了物理连接约束用法(usage)300的框图。如图所示,可以接收查询102,该查询请求连接来自两个或更多个表的内容。在图3所描绘的特定查询102中,如果表t1的列a1中的值与表t2的列a2中的值匹配,则做出请求以将表t1和t2的行连接在一起。
查询中的连接的表达在本文中可以被称为“逻辑连接”。逻辑连接与“物理连接”相反,后者是由执行引擎130执行以实现逻辑连接的操作。在各种实施例中,数据库系统10支持多种类型的物理连接,诸如“嵌套循环连接”、“散列连接”和“合并连接”。如本文所用,短语“嵌套循环连接”将根据其普通的和已设立的含义来解释,其包括一连接,其中,针对左关系(或右关系)中找到的每一行,扫描右关系(或左关系)中的每个元素一次。例如,将针对列a2中的每个值扫描列a1中的每个值。如本文中所使用的,短语“散列连接”将根据其普通的和已设立的含义来解释,其包括如下的连接:1)首先使用其连接属性作为散列键扫描右关系(或左关系)并将其加载到散列表中以及2)扫描左关系(或右关系)并将所找到的每一行的合适值用作散列键来定位表中的匹配行。如本文所使用的,短语“合并连接”将根据其普通的和已设立的含义来解释,其包括一连接,其中1)在连接开始之前,每个关系针对连接属性被分类,2)并行扫描两个关系,以及3)组合匹配行以形成连接行。
在所示的实施例中,查询优化器120支持物理连接约束104,该物理连接约束104指示查询优化器120选择包括由选项106指示的多种类型的物理连接中的一种的计划122。在图3所描绘的特定示例中,选项106A“HASH_JOIN(t1 t2)”指示希望对表t1和t2进行散列连接。选项106B“MERGE_JOIN(t1 t2)”指示希望对表t1和t2进行合并连接。因此,基于这两个选项106A和106B,查询优化器120可以不考虑包括表t1和t2的嵌套循环连接的执行计划122A,而是评估包括与选项106A相对应的散列连接的执行计划122B和包括与选项106B相对应的合并连接的执行计划122C。基于此评估,优化器120然后选择计划122B和122C中的优选一个以由执行引擎130执行。
现在转到图4,描绘了逻辑连接约束用法400的框图。如上面在背景技术中所讨论的,可以使用多个不同的排序来实现三个或更多表之间的连接。在一些实施例中,查询优化器120支持逻辑约束104,其中可以在不表达用于连接表的整个排序的情况下向优化器120表达部分排序402,从而允许优化器在多个排序选项之间进行选择。
在所示的实施例中,使用语法来表达部分排序402,其中优先级(precedence)值404被分配给要连接的表。(在其他实施例中,可以使用不同的语法来表达部分排序402。)例如,如图所示,表t1和t2被分配优先级值1,而表被分配优先级值0。在一些实施例中,被分配了更大的优先级值的表被更早地执行;但是,可以以任何排序执行被分配了相同值的表。因此,在这样的实施例中,在连接中具有值1的表t1和t2比具有值0的表t3和t4更早地排序。但是,表t1或表t2都可以是排序中的初始表。因此,t1、t2、t3和t4的排序406B和t2、t1、t4、t3的排序406C符合图4中描绘的部分排序402。但是,在此示例中,由于表t4和t3的优先级值低于表t1和t2的优先级值,因此t4、t3、t2和t1的排序406A不合规。结果,查询优化器120可以不考虑具有不合规排序406A的执行计划122A,而仅评估具有合规排序406B和406C的那些计划122B和计划122C。
现在转到图5,描绘了参数化约束用法500的框图。如上面关于图3所指出的,查询102可以包括物理连接约束104,该物理连接约束104指示要用于实现在查询102中指定的连接的物理连接的类型。在指定嵌套循环连接的实例中,嵌套循环连接可以使用顺序扫描或索引扫描来实现。
在一些实施例中,查询优化器120支持参数化约束104,以指示将使用索引扫描。在图5所示的特定示例中,“PARAM(t2(t1))”指示要对t1的值进行参数化并将其提供给t2的索引,以识别连接的相应行。例如,假设t1的a1值为1、2和3。当执行索引扫描时,将扫描t1,以使a1的值1成为输入到列a2的t2的索引中的索引扫描谓词。然后,通过嵌套循环连接形成并输出匹配的行。然后针对a1值2和3重复此过程。由于在索引扫描的谓词中替换了这些值,因此这种类型的计划称为参数化计划。
现在转到图6,示出了基数约束用法600的框图。如上所述,表140的基数(cardinality)(即表的大小)可能会影响查询优化器120对各种执行计划122A的评估。在一些实施例中,可以通过在查询102中提供基数约束104来将表的基数表达给优化器120(与使优化器120从数据库目录读取基数相反)。例如,如图6所示,基数约束104“BASE_CARD(t1 t2500)”指示表t1和t2包括500行。值得注意的是,在所示的实施例中,相同的约束104用于指定针对查询102正在访问的多个表的基数。基于该信息,查询优化器120可以确定不考虑执行计划122A,其中执行嵌套循环连接,在该示例中,如果99行足够大,则使嵌套循环连接为不希望的。而是,查询优化器120可以选择包括散列连接的执行计划122B或包括合并连接的执行计划122C,因为对于表t1的大小,这些物理连接可能更有效。在一些实施例中,查询优化器120还支持基数约束104,该基数约束104指示作为查询102的结果而生成的表的基数。例如,在图6所描绘的查询102中,包含约束104“CARD(t1 99)”可以向优化器120指示从t1和t2的连接中生成的表将具有99行。基于该信息,优化器120可以选择不同的执行计划122。
现在转到图7,描绘了计划约束合并器700的框图。如上所述以及如图7所示,可以接收包括另一个查询102B的查询102A。更进一步,查询102A和102B可以分别包括多个约束104A和104B。在所示的实施例中,解析器110可操作为识别这些嵌套查询102并确定它们是否可以合并在一起。(在另一个实施例中,该分析可以由查询优化器120执行。)基于该确定,解析器110可以从查询102A和102B产生单个合并的查询102C,并且从约束104A和104B产生单个合并的约束104C。
现在转向图8A,示出了用于执行数据库查询的方法800的流程图。在一个实施例中,方法800由诸如查询优化器120之类的数据库系统的查询优化器执行。在一些情况下,方法800的执行允许潜在地选择更大的用户控制和更好的执行计划。
在步骤810中,接收包括第一约束(例如,约束104)的第一查询(例如,查询102),第一约束限制了对可用于实现第一查询的执行计划集(例如,执行计划122)的选择。在各种实施例中,第一约束至少识别用于在第一查询中实现子句的第一选项(例如,选项106A)和第二选项(例如,选项106B)。在一些实施例中,该子句请求从数据库系统中选择数据(例如,索引约束用法200中的SQL SELECT),第一选项识别将在执行选择中使用的第一索引,第二选项识别将在执行选择中使用的第二索引。在一些实施例中,该子句从数据库系统中的多个表中请求连接内容(例如,物理连接约束用法300中的SQL JOIN),第一选项是可执行以连接内容的第一类型的连接操作(例如,散列连接),以及第二选项是可执行以连接内容的第二类型的连接(例如,合并连接)操作。在一些实施例中,该子句从数据库系统中的多个表请求连接内容(例如,逻辑连接约束用法400中的SQL JOIN),第一选项是用于连接来自多个表中的内容的第一排序(例如,排序404A),以及第二选项是用于连接来自多个表中的内容的第二排序(例如,排序404B)。
在步骤820中,基于第一约束评估包括第一选项的执行的第一执行计划和包括第二选项的执行的第二执行计划。
在步骤830中,基于该评估选择用于实现第一查询的第一执行计划和第二执行计划中的一个。
在步骤840中,使得所选择的执行计划执行。在各种实施例中,所述使得包括查询优化器将所选择的执行计划提供给执行引擎以供执行。
在一些实施例中,方法800还包括:接收第二查询,该第二查询包括第二约束(例如,参数约束104),该第二查询请求连接操作,并且该第二约束指示该连接操作将采用使用索引的嵌套循环连接实现。在这样的实施例中,方法800包括:基于第二约束来评估执行计划,该执行计划包括使用该索引执行嵌套循环连接。在一些实施例中,方法800包括接收包括第二约束(例如,基数约束104)的第二查询,该第二约束识别在第二查询中指定的表的基数。在这样的实施例中,方法800包括基于所识别的基数来评估多个执行计划。在一些实施例中,第一查询(例如,包括约束104A)包括第二查询,该第二查询包括第二约束(例如,约束104B),以及方法800包括:将第一查询和第二查询合并为单个查询,包括将第一约束和第二约束合并为单个约束(例如,合并的约束104C)。在一些实施例中,方法800包括:接收包括第二约束的第二查询;由查询优化器确定不存在满足第二约束的执行计划;以及响应于该确定,提供指示查询优化器无法确定满足第二约束的执行计划的指示(例如,错误124)。在一些实施例中,方法800还包括:选择不满足第二约束的另一执行计划,并使得执行该另一所选择的执行计划。
现在转到图8B,示出了用于执行数据库查询的方法850的流程图。在一个实施例中,方法800由数据库的查询优化器执行,所述查询优化器能够接收诸如数据库系统10植入的数据库之类的优化器约束。在某些情况下,方法800的执行允许潜在地选择更大的用户控制和更好的执行计划。
方法850在步骤860中开始,其中接收执行数据库的查询(例如,查询102)的第一请求,该第一请求包括指示用来实现查询的一部分的多个选项(例如,选项106)。在一些实施例中,第一约束(例如,索引约束104)指示将使用在第一约束中指定的至少两个索引中的一个来执行查询。在一些实施例中,第一约束(例如,物理连接约束104)指示将使用在第一约束中指定的至少两个物理连接操作中的一个来执行在第一请求中指定的连接。在一些实施例中,第一约束(例如,逻辑连接约束104)指示将使用用于连接第一约束所允许的表的至少两个排序中的一个来执行在第一请求中指定的连接。在步骤870中,分析多个执行计划,所述多个执行计划包括执行多个选项中的至少一个。在步骤880中,基于该分析,选择多个执行计划之一以实现查询。在步骤890中,执行所选择的执行计划以执行查询。在一些实施例中,方法850进一步包括接收第二请求以执行对数据库的查询,该第二请求包括第二约束,并且向数据库的用户(例如,经由错误124)指示第二约束不能被满足。
示例计算机系统
现在转向图9,描绘了可以实现数据库系统10的示例性计算机系统900的框图。计算机系统900包括处理器子系统980,其经由互连960(例如,系统总线)耦合到系统存储器920和一个或更多个I/O接口940。一个或更多个I/O接口940耦合到一个或更多个I/O设备950。计算机系统900可以是各种类型的设备中的任何一种,包括但不限于服务器系统,个人计算机系统,台式计算机,膝上型或笔记本计算机,大型计算机系统,平板计算机,手持计算机,工作站,网络计算机,诸如移动电话、音乐播放器或个人数据助理(PDA)之类的消费者设备。尽管为方便起见在图9中示出了单个计算机系统900,但是系统900也可以被实现为一起操作的两个或更多个计算机系统。
处理器子系统980可以包括一个或更多个处理器或处理单元。在计算机系统900的各种实施例中,处理器子系统980的多个实例可以耦合到互连960。在各种实施例中,处理器子系统980(或980内的每个处理器单元)可以包含高速缓存或其他形式的板载存储器。
系统存储器920可用于存储程序指令,程序指令可由处理器子系统980执行以使系统900执行本文所述的各种操作。系统存储器920可以使用不同的物理存储介质来实现,例如硬盘存储、软盘存储、可移除磁盘存储、闪存、随机存取存储器(RAM-SRAM、EDO RAM、SDRAM、DDR SDRAM、RAMBUS RAM等)、只读存储器(PROM、EEPROM等),等等。计算机系统900中的存储器不限于诸如存储器920之类的主存储。而是,计算机系统900还可以包括其他形式的存储,诸如处理器子系统980中的高速缓存存储器和I/O设备950上的辅助存储(例如,硬盘驱动器、存储阵列等)。在一些实施例中,这些其他形式的存储还可以存储可由处理器子系统980执行的程序指令。在一些实施例中,上述数据库系统10的部分可以包括系统存储器920(或包括在系统存储器920中)。
根据各种实施例,I/O接口940可以是被配置为耦合到其他设备并与其他设备通信的各种类型的接口中的任何一种。在一个实施例中,I/O接口940是从正面总线到一个或更多个背面总线的桥芯片(例如,南桥)。I/O接口940可以经由一个或更多个对应的总线或其他接口耦合到一个或更多个I/O设备950。I/O设备950的示例包括存储设备(硬盘驱动器、光盘驱动器、可移除闪存驱动器、存储阵列、SAN或其关联的控制器)、网络接口设备(例如,到局域网或广域网)或其他设备(例如图形、用户界面设备等)。在一个实施例中,计算机系统900经由网络接口设备950(例如,被配置为通过WiFi、蓝牙、以太网等进行通信)耦合到网络。
尽管以上已经描述了特定实施例,但是即使在关于特定特征仅描述单个实施例的情况下,这些实施例也不旨在限制本公开的范围。除非另有说明,否则本公开中提供的特征的示例旨在是说明性的而非限制性的。上面的描述旨在覆盖对受益于本公开的本领域技术人员来说将显而易见的这种替代、修改和等同物。
本公开的范围包括本文公开的任何特征或特征的组合(明确地或隐含地)或其任何概括,无论其是否减轻了本文所解决的任何或所有问题。因此,可以在本申请(或要求其优先权的申请)对特征的任何这种组合的程序中提出新的权利要求。特别地,参考所附权利要求,可以将从属权利要求的特征与独立权利要求的特征相组合,并且可以以任何适当的方式而不是仅以所附权利要求中列举的特定组合的方式将各个独立权利要求的特征相组合。
Claims (20)
1.一种非暂时性计算机可读介质,其上存储有程序指令,所述程序指令能够使计算系统实现操作,所述操作包括:
由数据库系统的查询优化器接收第一查询,所述第一查询包括第一约束,所述第一约束限制对能够用于实现所述第一查询的执行计划集的选择,其中所述第一约束至少识别用于在所述第一查询中实现子句的第一选项和第二选项;
由所述查询优化器并基于所述第一约束,评估包括所述第一选项的执行的第一执行计划和包括所述第二选项的执行的第二执行计划;
基于所述评估,由所述查询优化器选择所述第一执行计划和所述第二执行计划中的一个以实现所述第一查询;以及
由所述查询优化器使得执行所选的执行计划。
2.如权利要求1所述的计算机可读介质,其中所述子句请求从所述数据库系统选择数据,其中所述第一选项识别要用于执行所述选择的第一索引,并且其中所述第二选项识别要用于执行所述选择中的第二索引。
3.如权利要求1所述的计算机可读介质,其中所述子句请求连接来自所述数据库系统中的多个表的内容,其中所述第一选项是能够执行为连接所述内容的第一类型的连接操作,并且其中所述第二选项是能够执行为连接所述内容的第二类型的连接操作。
4.如权利要求3所述的计算机可读介质,其中所述第一类型的连接操作是散列连接,并且其中所述第二类型的连接操作是嵌套循环连接。
5.如权利要求1所述的计算机可读介质,其中所述子句请求连接来自所述数据库系统中的多个表的内容,其中所述第一选项是用于连接来自所述多个表的内容的第一排序,并且其中所述第二选项是用于连接来自所述多个表的内容的第二排序。
6.如权利要求1所述的计算机可读介质,其中所述操作还包括:
由所述查询优化器接收包括第二约束的第二查询,其中所述第二查询请求连接操作,以及其中所述第二约束指示所述连接操作将采用使用索引的嵌套循环连接来实现;以及
由所述查询优化器并且基于所述第二约束评估包括使用索引执行所述嵌套循环连接的执行计划。
7.如权利要求1所述的计算机可读介质,
由所述查询优化器接收包括第二约束的第二查询,其中所述第二约束识别所述第二查询中指定的表的基数;和
由所述查询优化器基于所述识别的基数来评估多个执行计划。
8.如权利要求1所述的计算机可读介质,其中所述第一查询包括第二查询,所述第二查询包括第二约束;以及
其中所述操作还包括:
将所述第一查询和所述第二查询合并为单个查询,包括将所述第一约束和所述第二约束合并为单个约束。
9.如权利要求1所述的计算机可读介质,其中所述操作还包括:
由所述查询优化器接收包括第二约束的第二查询;
由所述查询优化器确定不存在满足所述第二约束的执行计划;以及
响应于所述确定,提供所述查询优化器不能确定满足所述第二约束的执行计划的指示。
10.如权利要求9所述的计算机可读介质,其中所述操作还包括:
由所述查询优化器选择不满足所述第二约束的另一执行计划;以及
由所述查询优化器使得执行其他所选的执行计划。
11.一种方法,包括:
由数据库系统的查询优化器接收包括第一约束的第一查询,所述第一约束指定用于实现用于所述第一查询的执行计划的多个选项;
由所述查询优化器执行分析,所述分析评估与所述多个选项相对应的多个执行计划;
基于所述分析,由所述查询优化器选择所述多个执行计划之一来实现所述第一查询;以及
由所述查询优化器将所选择的执行计划提供给所述数据库系统的执行引擎,以执行所选择的执行计划。
12.如权利要求11所述的方法,其中所述第一约束指示所选择的执行计划将包括基于第一约束中识别的至少两个索引中的一个的索引扫描。
13.如权利要求11所述的方法,其中所述第一约束指示所选择的执行计划将包括第一约束中识别的至少两种类型的物理连接操作中的一种。
14.如权利要求11所述的方法,其中所述第一约束指示所选择的执行计划将以至少部分地在所述第一约束中指定的排序来执行表的连接。
15.如权利要求11所述的方法,还包括:
接收第二查询,所述第二查询包括第二约束,所述第二约束指定用于实现用于所述第二查询的执行计划的多个选项;以及
由所述数据库系统提供错误消息,所述错误消息指示不能为所述第二约束确定执行计划。
16.一种计算机系统,包括:
一个或更多个处理器;
存储器,具有存储在其中的程序指令,所述程序指令能够由一个或更多个处理器执行以实现执行操作的数据库,所述操作包括:
接收执行对所述数据库的查询的第一请求,其中所述第一请求包括第一约束,所述第一约束指示用于实现所述查询的一部分的多个选项;
分析包括执行所述多个选项中的至少一个的多个执行计划;
基于所述分析,选择所述多个执行计划中的一个来实现所述查询;以及
执行所选的执行计划以执行所述查询。
17.如权利要求16所述的计算机系统,其中所述第一约束指示将使用在所述第一约束中指定的至少两个索引中的一个来执行所述查询。
18.如权利要求16所述的计算机系统,其中所述第一约束指示将使用在所述第一约束中指定的至少两个物理连接操作中的一个来执行在所述第一请求中指定的连接。
19.如权利要求16所述的计算机系统,其中所述第一约束指示将使用所述第一约束所允许的用于连接表的至少两个排序中的一个来执行在所述第一请求中指定的连接。
20.如权利要求16所述的计算机系统,其中所述操作还包括:
接收执行对所述数据库的查询的第二请求,其中所述第二请求包括第二约束;以及
向所述数据库的用户指示不能满足所述第二约束。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/885,559 | 2018-01-31 | ||
US15/885,559 US20190236188A1 (en) | 2018-01-31 | 2018-01-31 | Query optimizer constraints |
PCT/US2019/014180 WO2019152218A1 (en) | 2018-01-31 | 2019-01-18 | Query optimizer constraints |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111670433A true CN111670433A (zh) | 2020-09-15 |
Family
ID=65324645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980010670.2A Pending CN111670433A (zh) | 2018-01-31 | 2019-01-18 | 查询优化器约束 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190236188A1 (zh) |
EP (1) | EP3746910A1 (zh) |
JP (1) | JP2021515923A (zh) |
CN (1) | CN111670433A (zh) |
WO (1) | WO2019152218A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328614A (zh) * | 2022-03-03 | 2022-04-12 | 阿里巴巴(中国)有限公司 | 查询计划选择系统、方法、电子设备及介质 |
WO2023077731A1 (zh) * | 2021-11-08 | 2023-05-11 | 北京邮电大学 | 基于科技咨询大规模图数据的查询任务优化方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021161104A1 (en) | 2020-02-12 | 2021-08-19 | Monday.Com | Enhanced display features in collaborative network systems, methods, and devices |
WO2021220058A1 (en) | 2020-05-01 | 2021-11-04 | Monday.com Ltd. | Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices |
CN107885865B (zh) * | 2017-11-22 | 2019-12-10 | 星环信息科技(上海)有限公司 | 一种代价优化器与代价估计的方法及其设备 |
US11698890B2 (en) | 2018-07-04 | 2023-07-11 | Monday.com Ltd. | System and method for generating a column-oriented data structure repository for columns of single data types |
US11436359B2 (en) | 2018-07-04 | 2022-09-06 | Monday.com Ltd. | System and method for managing permissions of users for a single data type column-oriented data structure |
US11016977B2 (en) * | 2018-07-25 | 2021-05-25 | Technion Research & Development Foundation Limited | System and method for detecting a pattern of events |
WO2020192542A1 (en) * | 2019-03-22 | 2020-10-01 | Huawei Technologies Co., Ltd. | Query processing using logical query steps having canonical forms |
CN110955696B (zh) * | 2019-11-12 | 2022-10-14 | 中国经济信息社有限公司 | 数据读取方法、装置、设备和存储介质 |
US11361156B2 (en) | 2019-11-18 | 2022-06-14 | Monday.Com | Digital processing systems and methods for real-time status aggregation in collaborative work systems |
US11934397B2 (en) * | 2020-01-31 | 2024-03-19 | Salesforce, Inc. | Query plan overrides |
US11829953B1 (en) | 2020-05-01 | 2023-11-28 | Monday.com Ltd. | Digital processing systems and methods for managing sprints using linked electronic boards |
US11481288B2 (en) | 2021-01-14 | 2022-10-25 | Monday.com Ltd. | Digital processing systems and methods for historical review of specific document edits in collaborative work systems |
US11741071B1 (en) | 2022-12-28 | 2023-08-29 | Monday.com Ltd. | Digital processing systems and methods for navigating and viewing displayed content |
US11886683B1 (en) | 2022-12-30 | 2024-01-30 | Monday.com Ltd | Digital processing systems and methods for presenting board graphics |
US11893381B1 (en) | 2023-02-21 | 2024-02-06 | Monday.com Ltd | Digital processing systems and methods for reducing file bundle sizes |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2359296A1 (en) * | 2001-10-18 | 2003-04-18 | Ibm Canada Limited-Ibm Canada Limitee | Method of cardinality estimation using statistical soft constraints |
US20030120682A1 (en) * | 2001-12-11 | 2003-06-26 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US20100250518A1 (en) * | 2009-03-28 | 2010-09-30 | Microsoft Corporation | Flexible query hints in a relational database |
CN102362276A (zh) * | 2009-04-01 | 2012-02-22 | 赛贝斯股份有限公司 | 测试数据库查询引擎的效率和稳定性 |
CN104620239A (zh) * | 2012-09-28 | 2015-05-13 | 甲骨文国际公司 | 自适应查询优化 |
US20150149436A1 (en) * | 2013-11-27 | 2015-05-28 | Paraccel Llc | Rewrite Constraints For Database Queries |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370524B1 (en) * | 1999-04-02 | 2002-04-09 | Oracle Corp. | System and method for processing queries having an inner query block containing a grouping operator |
US9336272B1 (en) * | 2013-02-13 | 2016-05-10 | Amazon Technologies, Inc. | Global query hint specification |
US10268638B2 (en) * | 2013-11-27 | 2019-04-23 | Paraccel Llc | Limiting plan choice for database queries using plan constraints |
US9823995B2 (en) * | 2014-08-28 | 2017-11-21 | Sap Se | Structured query language debugger |
US10324929B2 (en) * | 2016-10-31 | 2019-06-18 | Sap Se | Provision of position data for query runtime errors |
US20180336262A1 (en) * | 2017-05-19 | 2018-11-22 | Futurewei Technologies, Inc. | Geometric approach to predicate selectivity |
-
2018
- 2018-01-31 US US15/885,559 patent/US20190236188A1/en not_active Abandoned
-
2019
- 2019-01-18 WO PCT/US2019/014180 patent/WO2019152218A1/en unknown
- 2019-01-18 JP JP2020541674A patent/JP2021515923A/ja active Pending
- 2019-01-18 EP EP19703899.5A patent/EP3746910A1/en active Pending
- 2019-01-18 CN CN201980010670.2A patent/CN111670433A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2359296A1 (en) * | 2001-10-18 | 2003-04-18 | Ibm Canada Limited-Ibm Canada Limitee | Method of cardinality estimation using statistical soft constraints |
US20030120682A1 (en) * | 2001-12-11 | 2003-06-26 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US20100250518A1 (en) * | 2009-03-28 | 2010-09-30 | Microsoft Corporation | Flexible query hints in a relational database |
CN102362276A (zh) * | 2009-04-01 | 2012-02-22 | 赛贝斯股份有限公司 | 测试数据库查询引擎的效率和稳定性 |
CN104620239A (zh) * | 2012-09-28 | 2015-05-13 | 甲骨文国际公司 | 自适应查询优化 |
US20150149436A1 (en) * | 2013-11-27 | 2015-05-28 | Paraccel Llc | Rewrite Constraints For Database Queries |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023077731A1 (zh) * | 2021-11-08 | 2023-05-11 | 北京邮电大学 | 基于科技咨询大规模图数据的查询任务优化方法 |
CN114328614A (zh) * | 2022-03-03 | 2022-04-12 | 阿里巴巴(中国)有限公司 | 查询计划选择系统、方法、电子设备及介质 |
CN114328614B (zh) * | 2022-03-03 | 2022-07-05 | 阿里巴巴(中国)有限公司 | 查询计划选择系统、方法、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3746910A1 (en) | 2020-12-09 |
WO2019152218A1 (en) | 2019-08-08 |
US20190236188A1 (en) | 2019-08-01 |
JP2021515923A (ja) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111670433A (zh) | 查询优化器约束 | |
US10133778B2 (en) | Query optimization using join cardinality | |
US10649995B2 (en) | Methods and systems for optimizing queries in a multi-tenant store | |
US8799271B2 (en) | Range predicate canonization for translating a query | |
US9589017B2 (en) | Database system for executing parameter-sensitive query | |
US8935232B2 (en) | Query execution systems and methods | |
EP2811792B1 (en) | A method for operating a mobile telecommunication device | |
US8589382B2 (en) | Multi-fact query processing in data processing system | |
US7499917B2 (en) | Processing cross-table non-Boolean term conditions in database queries | |
US11934397B2 (en) | Query plan overrides | |
US8510316B2 (en) | Database processing system and method | |
US7565342B2 (en) | Dynamic semi-join processing with runtime optimization | |
US8965918B2 (en) | Decomposed query conditions | |
US7953727B2 (en) | Handling requests for data stored in database tables | |
CN112988782A (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
KR102415962B1 (ko) | 스토리지 시스템 및 그것의 동작 방법 | |
US9870399B1 (en) | Processing column-partitioned data for row-based operations in a database system | |
US20230153286A1 (en) | Method and system for hybrid query based on cloud analysis scene, and storage medium | |
US20070220058A1 (en) | Management of statistical views in a database system | |
US20140280110A1 (en) | Requests for source code text | |
Heese et al. | Resource centered RDF data management | |
US11423027B2 (en) | Text search of database with one-pass indexing | |
Graefe et al. | 10381 Summary and Abstracts Collection–Robust Query Processing | |
CN117407413A (zh) | 一种sql语句转发方法、装置、电子设备及存储介质 |
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 | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Shuo Power Co. Address before: California, USA Applicant before: SALESFORCE.COM, Inc. |
|
CB02 | Change of applicant information |