CN116089487A - 查询流水线执行的调度 - Google Patents
查询流水线执行的调度 Download PDFInfo
- Publication number
- CN116089487A CN116089487A CN202211318584.8A CN202211318584A CN116089487A CN 116089487 A CN116089487 A CN 116089487A CN 202211318584 A CN202211318584 A CN 202211318584A CN 116089487 A CN116089487 A CN 116089487A
- Authority
- CN
- China
- Prior art keywords
- execution
- determining
- query
- pipelines
- orders
- 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
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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/2452—Query translation
- G06F16/24528—Standardisation; Simplification
-
- 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/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种***包括接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划、确定多个查询执行流水线的一个或多个优先关系、基于估计的执行成本、估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序、以及向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
Description
相关申请的交叉引用
本申请要求2021年11月8日提交的美国临时申请号63/263,703的优先权,其内容通过引用结合于此。
技术领域
本公开涉及数据库管理***,更具体地,涉及针对查询流水线执行的调度的数据库管理***
背景技术
在传统的数据库***中,查询优化器接收数据库查询,并基于该查询生成查询执行计划。更具体地,查询优化器基于接收到的查询来确定多个候选执行计划,估计每个执行计划的成本,并选择具有最低执行成本的计划。执行引擎在数据库上执行所选择的查询执行计划,并返回相应的结果集。
查询执行计划可以符合基于流水线(pipeline)的查询执行模型。根据这样的模型,查询执行计划包括多个执行流水线。执行流水线将先前执行的执行流水线的基表或结果集作为输入,并对基表/结果集混合执行一元运算符(operator)或探测(例如,散列连接)以构建另一结果集。因此,执行流水线是相互依赖的,因为给定执行流水线的执行可能需要一个或多个其他执行流水线的优先执行。
由于数据大小、查询工作负载和查询复杂性的增加,尤其是在云场景中,优化查询处理期间的存储器消耗非常重要。例如,现代基于云的***面临大量引用大量表的复杂在线分析处理(OLAP)查询。这些查询通常使用如上所述的执行流水线来执行。此外,在主存储器数据库***中现有硬件资源的最佳使用可以导致更低的操作成本以及更高的吞吐量。
需要减少查询处理期间存储器消耗的***,尤其是在基于流水线的查询执行计划的情况下。
发明内容
本公开提供了一种***,包括:存储器,存储处理器可执行程序代码;以及处理单元,用于执行所述处理器可执行程序代码,以便使所述***:接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划;确定多个查询执行流水线的一个或多个优先关系;基于所估计的执行成本、所估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序;以及向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
本公开提供了一种计算机实现的方法,包括:接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划;确定多个查询执行流水线的一个或多个优先关系;基于所估计的执行成本、所估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序;以及向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
本公开提供了一种存储处理器可执行程序代码的非暂时性介质,所述程序代码可由计算***执行以使该计算***:接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划;确定多个查询执行流水线的一个或多个优先关系;基于所估计的执行成本、所估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序;以及向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
附图说明
图1是根据一些实施例的为查询执行计划确定流水线执行顺序的***的框图。
图2是示出根据一些实施例的查询执行计划的图。
图3包括根据一些实施例确定查询执行计划的流水线执行顺序的流程图。
图4是根据一些实施例的查询执行计划的流水线专用视图。
图5包括根据一些实施例的基于候选流水线执行顺序的各自存储器成本来确定查询执行计划的流水线执行顺序的流程图。
图6是示出根据一些实施例的与查询执行计划的执行流水线相关联的优先关系和元数据的图形。
图7是示出根据一些实施例的用于确定流水线存储器成本的逻辑实体的查询执行计划子树的一般视图。
图8包括根据一些实施例的基于执行流水线深度来确定查询执行计划的流水线执行顺序的流程图。
图9是根据一些实施例的查询执行计划的流水线专用视图。
图10是示出根据一些实施例的与查询执行计划的执行流水线相关联的优先关系和元数据的图形。
图11是根据一些实施例的数据库节点的框图。
图12是根据一些实施例的基于云的架构的视图。
具体实施方式
提供以下描述以使本领域的任何人能够制造和使用所描述的实施例,并阐述了实施一些实施例的最佳模式。然而,各种修改对于本领域技术人员来说是显而易见的
如上所述,由查询优化器输出的查询执行计划可以包括几个执行流水线。可以以各种顺序执行流水线,同时仍然符合查询执行计划,其中每个执行顺序生成相同的结果集,并且与相同的执行成本相关联。本发明人已经发现,不同的流水线执行顺序可能不同地消耗存储器(即,表现出不同的存储器消耗概况(profile))。因此,以减少存储器消耗为目标,可能希望以符合查询执行计划的特定执行顺序来执行查询执行计划的执行流水线,而不是以也符合查询执行计划的另一执行顺序来执行。
本发明人还发现了从几个流水线执行顺序中选择流水线执行顺序的***和方法,这些流水线执行顺序符合基于它们的相对存储器消耗概况的给定查询执行计划。这些***和方法可以有效地集成到数据库管理***中,以便在查询优化之后和计划执行之前执行。在这点上,一些实施例利用由查询优化器输出的各种数据结构,其包括查询执行计划以及各种估计的成本和基数。
图1是根据一些实施例的***100的框图。***100的每个示出的元件可以使用已知的或变得已知的计算硬件和/或软件的任何合适的组合来实现。***100可以包括独立或分布式(即多节点)数据库***的组件。在一些实施例中,***100的两个或更多个元件由单个计算设备实现。***100的一个或多个元件可以被实现为云服务(例如,软件即服务、平台即服务)。
查询优化器110从客户端接收查询,并确定用于在数据库存储120的表124上执行查询的查询执行计划。实施例不限于任何特定的客户端或任何特定的查询语言。因此,查询优化器110可以包括任何已知的或即将已知的合适的查询处理器。如本领域中已知的,查询优化器110可以基于数据库存储120的元数据122生成若干备选查询执行计划并计算相应的执行成本。元数据122可以定义表124的结构和关系(例如,数据库模式)以及表示表124的数据的统计。这些统计可以由***100的统计服务器(未示出)定期刷新。
查询优化器110选择查询执行计划之一,并将所选择的查询执行计划提供给流水线排序组件130。查询执行计划指定执行流水线、流水线中断符(pipeline breaker)、输入表和中间结果的基数估计值,以及查询执行计划的子树的执行成本。在一些实施例中,查询执行计划还可以包括其他数据。
图2示出了根据一些实施例的从查询优化器接收的查询执行计划的元素的表示200。查询执行计划包括输入表R、S、T、U和V以及物理运算符202-208,表示为散列连接。实施例不限于散列连接。
每个散列连接包括构建端和探测端,如查询执行计划所定义的那样。根据表示200,构建端是散列连接的右端,而探测端被描绘在散列连接的左端。散列连接在这里被定义为构建端的流水线中断器,因此终止了进入散列连接右端的流水线。例如,散列连接202是从表T开始的流水线的流水线中断器,散列连接204是从表V开始的流水线的流水线中断器,散列连接206是从表S开始的流水线的流水线中断器,散列连接208是从表U开始的流水线的流水线中断器。
因此,执行流水线可能依赖于由其他执行流水线的流水线中断器生成的中间结果。例如,由散列连接202和204生成的中间结果必须保留在存储器中,直到它们被散列连接208消耗。一旦流水线产生了新的中间结果(或最终结果),由此引用的所有中间结果,例如当前流水线已经探测的散列表,可以从存储器中释放。
由于中间结果具有不同的大小(例如,记录的数量*记录的宽度),并且在执行期间存储器中维护的中间结果的数量发生变化,因此在查询执行计划的执行期间,总的存储器利用率随时间而变化。本发明人已经注意到,单个流水线的执行顺序可能显著影响存储器利用率,该顺序规定了后续执行的流水线生成、存储和消耗中间结果的顺序和时间。
因此,流水线排序组件130确定导致最理想的存储器利用的各个流水线的执行顺序(即,流水线执行顺序)。根据一些实施例,流水线排序组件130确定符合查询优化器110提供的查询执行计划的所有可能的流水线执行顺序。使用与查询执行计划一起提供的数据,并且对于每个流水线执行顺序,排序组件130基于存储器大小和流水线中断器在根据执行顺序的执行期间生成的中间结果的寿命,来估计随时间的存储器使用或存储器概况。然后,可以选择与消耗最少的存储器概况相关联的流水线执行顺序作为用于执行查询执行计划的流水线执行顺序。
流水线排序组件130然后向执行引擎140提供查询执行计划和所选择的流水线执行顺序。执行引擎140执行查询执行计划,如本领域中已知的,并且根据所选择的流水线执行顺序,以便基于表124的数据生成结果集150。
图3包括根据一些实施例的过程300的流程图。在一些实施例中,***100的各种硬件元件执行程序代码来执行过程300。过程300和这里提到的所有其他过程可以体现在从一个或多个非暂时性计算机可读介质(例如硬盘驱动器、易失性或非易失性随机存取存储器、DVD-ROM、闪存驱动器和磁带)读取的处理器可执行程序代码中,并且可以由一个或多个处理单元执行,包括但不限于硬件处理器、处理器内核和处理器线程。在一些实施例中,可以使用硬连线电路来代替或结合用于实现根据一些实施例的过程的程序代码。因此,实施例不限于硬件和软件的任何特定组合。
在过程300之前,接收查询并基于该查询生成查询执行计划。可以通过任何形式的查询处理器从任何客户端应用接收查询。根据一些实施例,查询由结构化查询语言(SQL)服务器的查询优化器接收。因此,查询可以包括SQL查询,但是实施例不限于此。
如本领域中已知的,诸如查询优化器110的查询优化器基于接收到的查询生成查询执行计划。查询执行计划的生成可以包括与查询执行计划相关联的执行成本的估计。可以基于要查询的数据库表和描述表的结构和内容的元数据来估计成本。
在过程300的S310接收查询执行计划。查询执行计划包括执行流水线的树、该树和该树的子树的执行成本、以及由执行流水线的流水线中断器生成的中间结果的估计基数。查询执行计划可以由***100的流水线排序组件130接收,但是实施例不限于此。例如,这里归因于流水线排序组件130的功能可以全部或部分由查询优化器110来执行。
术语“树”在此用于指示执行流水线可以被视为从生成最终查询结果的流水线中断器经由各种流水线中断器向外和向下分支,如表示200所示。查询执行计划描述每个流水线中断器的输入,并确定哪些输入包括构建端,哪些输入包括探测端。流水线中断器、它们的输入以及查询执行计划的构建/探测端信息足以生成查询执行计划的表示,如图2所示。
图4是图2所示查询执行计划的特定于流水线的视图。每个流水线都用带圆圈的字母标记,在图4的情况下,对应于流水线的输入表的名称。视图400指定由每个流水线中断器生成的中间结果的估计基数(即,记录的数量)。
如此处所定义的,每个流水线中断器终止其构建端流水线。例如,流水线T以与探测端流水线S的散列连接而终止,产生包括估计20条记录的散列表。流水线S以与探测端流水线R的散列连接而终止,产生包括估计50条记录的散列表。
回到过程300,在S320确定执行流水线的优先关系。根据查询执行计划,优先关系定义了哪些流水线必须在哪些其他流水线之前执行。优先关系可以从查询执行计划的树中导出。参考图4,流水线T必须在流水线S之前执行,流水线S必须在流水线R之前执行。类似地,流水线V必须在流水线U之前执行,流水线U必须在流水线R之前执行。然而,在流水线U,V和流水线S,T之间不存在优先关系。根据一些实施例,优先关系可以由查询优化器连同查询执行计划一起直接提供。
接下来,在S330,确定执行流水线的执行顺序。基于优先关系、执行成本和中间结果基数来确定流水线执行顺序。例如,最初确定符合查询执行计划的所有可能的流水线执行顺序。在本例中,可能的流水线执行顺序是(V,U,T,S,R),(V,T,S,U,R),(V,T,U,S,R),(T,S,V,U,R),(T,V,S,U,R)和(T,V,U,S,R)。
基于在S310接收的执行成本和中间结果基数,为每个流水线执行顺序确定存储器使用的指示符。该确定可以包括根据每个执行顺序确定在执行期间由流水线中断器生成的中间结果的存储器大小和寿命。基于指示符来确定流水线执行顺序。例如,所确定的流水线执行顺序可以是与最有利的存储器使用相关联的顺序。下面将描述根据一些实施例的S330的进一步细节。
在S340,查询执行计划和所确定的流水线执行顺序被提供给执行引擎。执行引擎然后可以根据流水线执行顺序来执行查询执行计划,以生成本领域中已知的结果集。这种执行的存储器使用被认为比根据不同的(例如,随机选择的)流水线执行顺序执行查询执行计划所产生的存储器使用更合乎需要。
图5包括根据一些实施例的基于候选流水线执行顺序的各自存储器成本来确定查询执行计划的流水线执行顺序的流程图。因此,过程500可以包括过程300的S330的实现。
在S510,确定满足查询执行计划的优先关系的所有流水线执行顺序。图6是说明上述执行流水线的优先关系的图形。如上所述,满足图6图形的流水线执行顺序是(V,U,T,S,R),(V,T,S,U,R),(V,T,U,S,R),(T,S,V,U,R),(T,V,S,U,R)和(T,V,U,S,R)。根据这些流水线执行顺序之一执行查询执行计划可能导致在与根据不同的流水线执行顺序之一执行不同的时间点创建和消耗查询执行计划的中间结果,从而导致不同的存储器消耗概况。
图6还显示了,对于每个流水线,其相关联的流水线中断器的基数f。该值可以从查询优化器接收和/或基于其确定。如上所述,查询优化器提供了查询执行计划的每个中间结果的估计基数。由于每个中间结果对应于流水线中断器,所以流水线中断器的基数被确定为其对应的中间结果的基数。
在S520,对于在S510确定的流水线执行顺序中的每一个,确定每个流水线中断器的寿命。流水线中断器的寿命可以基于其对应的流水线的执行成本来确定。
图7示出了在以下关于执行成本、中断器寿命和存储器大小的讨论中引用的逻辑实体。根据一些实施例,查询执行计划包括子树si,每个子树具有估计的执行成本ci。如本领域中已知的,子树和估计的执行成本由查询优化器提供。子树si的中间结果展示了基数fi和行(即记录)大小wi,并被写入对应的流水线中断器bi,这标志着流水线pi的结束。
与整个子树si的执行成本ci相比,执行成本ei只是执行流水线pi的成本。因为由查询优化器提供的子树si的估计的执行成本ci不包括将子树si的结果写入流水线中断器bi,所以这种的成本写入的成本在图7中表示为执行成本σi。li表示流水线中断器bi的寿命。
根据一些实施例,在S520,通过近似对应的流水线pi的执行时间来近似流水线中断器bi的寿命li。反过来,流水线pi的执行时间可以由流水线的执行成本ei来近似。流水线pi的执行成本ei可以通过从对应于流水线pi的子树si的估计的执行成本ci中减去si的所有子树sj的估计的执行成本cj来导出,其中sj仅包括其流水线中断器bj被流水线pi消耗的那些子树。流水线执行时间σi被添加到结果差中,以便考虑将子树si和流水线pi的结果写入流水线中断器bi的成本。相应地,如下所示:
一些实施例利用Cout成本函数,该成本函数是包括基表扫描在内的所有运算符的输出基数之和。由于Cout成本函数不区分散列连接的成本中的构建成本和探测成本,因此写入流水线中断器(例如散列表)的成本σi被设置为0,因为Cout已经包括了结果的基数。
流水线中断器bi的生命周期包括其相应流水线pi的执行时间ei加上为了消耗流水线中断器bi而必须执行的其他流水线的执行时间。对于上面讨论的示例流水线执行顺序(V,T,S,U,R),流水线V的流水线中断器的寿命是流水线V,T,S和U的执行时间的总和。给定流水线执行顺序O=(p1,…,pi,…,pj,…,pk,…,pn)、对应的流水线执行成本向量 和优先关系pi<pk,流水线pi的流水线bi中断器的寿命li可以被计算为:
在S530,确定每个流水线执行顺序的存储器成本。可以基于所确定的流水线执行顺序的每个执行流水线的寿命和中间结果基数来确定流水线执行顺序的存储器成本。首先,流水线中断器bi的存储器大小mi近似为其对应的基数fi和行大小wi的乘积,使得mi=wi·fi。参考散列连接的示例,这种近似基于这样的假设,即不管散列表实现如何,流水线中断器包括密集打包的散列表。给定流水线执行顺序O=(p0,…,pi,…,pn)的流水线中断器存储器大小的向量表示为
因此,存储器积分MI是所有流水线中断器bi的存储器大小mi乘以其寿命li之和。流水线中断器的存储器消耗在创建之前为0、在相应的流水线开始运行时为mi,直到bi被析构,并且之后为0。
在S540,确定具有最低存储器成本的流水线执行顺序。然后,可以将该确定的流水线执行顺序与对应的查询执行计划一起提供给执行引擎,用于以确定的流水线执行顺序执行查询执行计划的执行流水线。
根据一些实施例,在S510确定满足优先关系的所有流水线执行顺序忽略了其流水线中断器与小的存储器成本相关联的流水线。这种流水线中断器与短寿命、小存储器大小或两者相关联。通过忽略这样的流水线,在S510确定的流水线执行顺序的数量可以显著减少,导致过程500的整体执行更快。
例如,假设流水线V与小的存储器成本相关联,因此在S510被选择忽略。满足图6的图的依赖性的流水线执行顺序因此在S510被确定为(U,T,S,R),(T,S,U,R)和(T,U,S,R),这是在上述S510的示例中确定的流水线执行顺序的一半。一旦在S540确定了这三个流水线执行顺序中与最低存储器成本相关联的流水线执行顺序,流水线V就被添加到所确定的流水线执行顺序中符合查询执行计划的依赖性的顺序内的位置处。
图8是根据一些实施例的过程800的流程图。可以执行过程800来从符合给定查询执行计划的多个流水线执行顺序中确定流水线执行顺序。过程800的一些实施例不利用由查询优化器提供的中间结果或执行成本的基数来确定流水线执行顺序。
相反,过程800是启发式算法,旨在确定具有低存储器成本的流水线执行顺序,但不一定是符合主题查询执行计划的所有流水线执行顺序中最低存储器成本的。作为对流水线执行顺序的次优选择的交换,过程800可以比图5的过程500更快地执行。过程800的启发式基于这样的观察,即相互依赖的流水线的最深的第一次执行将产生接近最优的流水线执行顺序。换句话说,按照从起始节点到结果节点的长度顺序执行子树是“最佳猜测”流水线执行顺序。
图9是用于描述过程800的一些实施例的查询执行计划的流水线专用视图。图9的查询执行计划包括九个基表和八个中间散列表。图10将查询执行计划的流水线表示为依赖图中的节点。
在过程800的S810,确定执行流水线的每个子树的长度。关于图10的示例,在S810确定的子树和对应的长度如下:(E,D,B,A,R;5);(C、B、A、R;4);(U,T,S,R;4).
接下来,在S820,基于执行流水线所属的最长子树,为每个执行流水线确定执行优先级。继续本示例,执行流水线E、D、B、A、R被分配优先级5,执行流水线C被分配优先级4,执行流水线U、T和S被分配优先级4。因为执行流水线C被分配优先级4,并且执行流水线U、T和S也被分配优先级4,所以潜在的排序冲突可以通过增加执行流水线C或者执行流水线U、T和S的优先级,并且类似地增加所有更高优先级流水线的优先级来解决。在本示例中,如图10的虚线框所示,由于执行流水线C与较高优先级执行流水线B、A和R的关系,其优先级从4增加到5。因此,较高优先级执行流水线E、D、B、A和R的优先级也从5增加到6。
在S830,基于分配的优先级确定流水线执行顺序。流水线执行顺序的确定主要基于查询执行计划的依赖性。然而,如上所述,在某些执行点,可以选择两个或更多个流水线作为下一个要执行的流水线,同时仍然符合依赖性。在S830的一些实施例中,所选择的下一个流水线是两个或更多个流水线中被分配了最高优先级的流水线。
转向本示例,执行流水线E、C和U中的任何一个都可以是流水线执行顺序中的第一个流水线。然而,选择了执行流水线E,因为它被分配了三个流水线中的最高优先级。基于依赖图,下一个执行流水线可以是D、C或U。执行流水线D被选为下一个执行流水线,因为它被分配了三个流水线中的最高优先级。在这一执行点,只有流水线C或U可以被执行(例如,流水线B不能被执行,因为它需要由流水线C生成的中间结果)。由于流水线C被分配了较高的优先级,所以它被选择用于下一次执行。对于剩余的执行流水线,该逻辑如上所述继续,导致由(E,D,C,B,A,U,T,S,R)确定的流水线执行顺序。
根据一些实施例,执行过程800以相对快速地确定流水线执行顺序,并且如上所述确定该确定的流水线执行顺序的存储器成本。接下来,如上所述执行过程500(有或没有流水线忽略选项)。然而,如果在确定特定流水线执行顺序的存储器成本期间在S530确定的子结果超过经由过程800确定的流水线执行顺序的存储器成本,则中止特定流水线执行顺序流水线的存储器成本的确定。
图11是根据一些实施例的可以确定查询执行计划的流水线执行顺序的数据库体系结构的框图。实施例不限于图11的架构。
服务器节点1110可以从客户端应用1130和1140之一接收查询,并基于存储在服务器节点1110内的数据向其返回结果。节点1110执行程序代码以提供应用服务器1115和查询处理器1120。应用服务器1115提供用于执行服务器应用的服务。例如,在应用服务器1115上执行的网络应用可以从客户端应用1140接收超文本传输协议(HTTP)请求,如图11所示。
查询处理器1120可以包括存储的数据和用于处理数据的引擎。查询处理器1120还可以负责处理结构化查询语言(SQL)和多维表达式(MDX)语句,并且可以直接从客户端应用1130接收这样的语句。
查询处理器1120包括用于确定查询执行计划的查询优化器1122、用于如本文所述确定查询执行计划的流水线执行顺序的流水线排序组件1123、以及用于使用所确定的流水线执行顺序对存储装置1125的表1126执行查询执行计划的执行引擎1124。在一些实施例中,查询处理器1120还可以包括统计服务器(未示出),用于确定用于估计查询执行计划成本的统计。
在一些实施例中,存储装置1125的数据可以包括常规表数据、行存储数据、列存储数据和基于对象的数据中的一个或多个。此外,数据可以在索引中被索引和/或选择性地复制,以允许对其进行快速搜索和检索。服务器节点1110可以支持多租户,以通过提供在程序上彼此隔离的多个逻辑数据库***来分别支持多个不相关的客户端。
元数据1128包括描述表1126确认的数据库模式的数据。元数据1128因此可以描述表1126的列和属性、每个表1126的每个列的属性、列之间的相互关系以及任何其他合适的信息。在一个示例中,元数据1128可以将表1126的一列或多列标识为字典压缩的,并且包括用于定位与每个字典压缩的列相关联的列字典和字典索引的信息。
服务器节点1110可以将存储装置1125实现为“存储器内(in-memory)”数据库,其中完整的数据库存储在易失性(例如,非基于磁盘的)存储器(例如,随机存取存储器)中。完整的数据库可以保存和/或备份到固定磁盘(未示出)。实施例不限于存储器内实现。例如,数据可以存储在随机存取存储器(例如,用于存储最近使用的数据的高速缓冲存储器)和一个或多个固定磁盘(例如,用于存储完整数据库中它们各自部分的永久存储器)中。
图12示出了根据一些实施例的基于云的数据库部署。所示组件可驻留在一个或多个公共云中,提供自助服务和即时供应、自动缩放、安全性、合规性和身份管理特征。
用户设备1210可以例如经由在用户设备1210上执行的网络浏览器与在应用服务器1220上执行的应用进行交互,以便创建、读取、更新和删除由数据库***1230管理并保存在分布式文件存储装置1235中的数据。数据库***1230可存储数据,并可执行如本文所述的过程,以确定对数据执行查询执行计划的流水线执行顺序。应用服务器1220和/或数据库***1230可以包括由公共云提供商分配的基于云的计算资源,诸如虚拟机。这样,应用服务器1220和数据库***1230可以表现出基于需求的弹性。
前述图形示用于描述根据一些实施例的过程的逻辑架构,并且实际实现可以包括以其他方式布置的更多或不同的组件。其他拓扑可以与其他实施例结合使用。此外,本文描述的每个组件或设备可以由经由任何数量的其他公共和/或私有网络通信的任何数量的设备来实现。两个或更多这样的计算设备可以彼此远离,并且可以经由任何已知方式的网络和/或专用连接彼此通信。每个组件或设备可以包括适合于提供这里描述的功能以及任何其他功能的任意数量的硬件和/或软件元件。例如,在这里描述的实现中使用的任何计算设备可以包括可编程处理器,以执行程序代码,使得计算设备如这里描述的那样操作。
这里讨论的所有***和过程可以用存储在一个或多个非暂时性计算机可读介质上的程序代码来实现。这种介质可以包括例如DVD-ROM、闪存驱动器、磁带和固态随机存取存储器(RAM)或只读存储器(ROM)存储单元。因此,实施例不限于硬件和软件的任何特定组合。
这里描述为相互通信的元件能够直接或间接地通过任何数量的不同***进行通信以传输数据,包括但不限于共享存储器通信、局域网、广域网、电话网络、蜂窝网络、光纤网络、卫星网络、红外网络、射频网络以及可以用于在设备之间传输信息的任何其他类型的网络。此外,***之间的通信可以通过任何一种或多种已知或即将已知的传输协议进行,例如异步传输模式(ATM)、互联网协议(IP)、超文本传输协议(HTTP)和无线应用协议(WAP)。
这里描述的实施例仅仅是为了说明的目的。本领域的技术人员将认识到,可以对上述实施例进行修改和变更来实施其他实施例。
Claims (20)
1.一种***,包括:
存储器,存储处理器可执行程序代码;以及
处理单元,用于执行所述处理器可执行程序代码,以便使所述***:
接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划;
确定多个查询执行流水线的一个或多个优先关系;
基于所估计的执行成本、所估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序;以及
向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
2.根据权利要求1的***,其中确定执行顺序包括:
基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序;
基于所估计的执行成本和所估计的中间结果基数来确定多个执行顺序中的每个执行顺序的存储器成本;以及
基于多个执行顺序中的每个执行顺序的存储器成本,从多个执行顺序中确定执行顺序。
3.根据权利要求2的***,其中从多个执行顺序中确定执行顺序包括确定多个执行顺序中具有最低存储器成本的一个。
4.根据权利要求2所述的***,其中基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序包括:
确定多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线,
其中所确定的多个执行顺序不包括多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线。
5.根据权利要求1的***,其中确定执行顺序包括:
为多个查询执行流水线中的每个查询执行流水线并且基于一个或多个优先关系,确定查询执行流水线所属的最长流水线路径;以及
基于多个查询执行流水线中的每个查询执行流水线所属的最长流水线路径来确定执行顺序。
6.根据权利要求5的***,其中确定执行顺序包括:
基于多个查询执行流水线中的每个查询执行流水线所属的最长流水线路径来确定第一执行顺序;
基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序;
基于所估计的执行成本和所估计的中间结果基数来确定第一执行顺序的存储器成本;
基于所估计的执行成本和所估计的中间结果基数来确定多个执行顺序中的每个执行顺序的存储器成本,其中,如果多个执行顺序中的一个执行顺序的存储器成本将超过第一执行顺序的存储器成本,则确定多个执行顺序中的一个执行顺序的存储器成本终止;以及
基于多个执行顺序中的每个执行顺序的存储器成本,从多个执行顺序中确定执行顺序。
7.根据权利要求6所述的***,其中基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序包括:
确定多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线,
其中所确定的多个执行顺序不包括多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线。
8.一种计算机实现的方法,包括:
接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划;
确定多个查询执行流水线的一个或多个优先关系;
基于所估计的执行成本、所估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序;以及
向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
9.根据权利要求8所述的方法,其中确定执行顺序包括:
基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序;
基于所估计的执行成本和所估计的中间结果基数来确定多个执行顺序中的每个执行顺序的存储器成本;以及
基于多个执行顺序中的每个执行顺序的存储器成本,从多个执行顺序中确定执行顺序。
10.根据权利要求9所述的方法,其中从多个执行顺序中确定执行顺序包括确定多个执行顺序中具有最低存储器成本的一个。
11.根据权利要求9所述的方法,其中基于一个或多个优先关系来确定所述多个查询执行流水线的多个执行顺序包括:
确定多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线,
其中所确定的多个执行顺序不包括多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线。
12.根据权利要求8所述的方法,其中确定执行顺序包括:
为多个查询执行流水线中的每个查询执行流水线并且基于一个或多个优先关系,确定查询执行流水线所属的最长流水线路径;以及
基于多个查询执行流水线中的每个查询执行流水线所属的最长流水线路径来确定执行顺序。
13.根据权利要求12所述的方法,其中确定执行顺序包括:
基于多个查询执行流水线中的每个查询执行流水线所属的最长流水线路径来确定第一执行顺序;
基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序;
基于所估计的执行成本和所估计的中间结果基数来确定第一执行顺序的存储器成本;
基于所估计的执行成本和所估计的中间结果基数来确定多个执行顺序中的每个执行顺序的存储器成本,其中,如果多个执行顺序中的一个执行顺序的存储器成本将超过第一执行顺序的存储器成本,则确定多个执行顺序中的一个执行顺序的存储器成本终止;以及
基于多个执行顺序中的每个执行顺序的存储器成本,从多个执行顺序中确定执行顺序。
14.根据权利要求13所述的方法,其中基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序包括:
确定多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线,
其中所确定的多个执行顺序不包括多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线。
15.一种存储处理器可执行程序代码的非暂时性介质,所述程序代码可由计算***执行以使该计算***:
接收与多个查询执行流水线、估计的执行成本和估计的中间结果基数相关联的查询执行计划;
确定多个查询执行流水线的一个或多个优先关系;
基于所估计的执行成本、所估计的中间结果基数和一个或多个优先关系来确定多个查询执行流水线的执行顺序;以及
向查询执行引擎提供多个查询执行流水线的执行顺序和查询执行计划。
16.根据权利要求15的介质,其中确定执行顺序包括:
基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序;
基于所估计的执行成本和所估计的中间结果基数来确定多个执行顺序中的每个执行顺序的存储器成本;以及
基于多个执行顺序中的每个执行顺序的存储器成本,从多个执行顺序中确定执行顺序。
17.根据权利要求15所述的介质,其中基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序包括:
确定多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线,
其中所确定的多个执行顺序不包括多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线。
18.根据权利要求15的介质,其中确定执行顺序包括:
为多个查询执行流水线中的每个查询执行流水线并且基于一个或多个优先关系,确定查询执行流水线所属的最长流水线路径;以及
基于多个查询执行流水线中的每个查询执行流水线所属的最长流水线路径来确定执行顺序。
19.根据权利要求18的介质,其中确定执行顺序包括:
基于多个查询执行流水线中的每个查询执行流水线所属的最长流水线路径来确定第一执行顺序;
基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序;
基于所估计的执行成本和所估计的中间结果基数来确定第一执行顺序的存储器成本;
基于所估计的执行成本和所估计的中间结果基数来确定多个执行顺序中的每个执行顺序的存储器成本,其中,如果多个执行顺序中的一个执行顺序的存储器成本将超过第一执行顺序的存储器成本,则确定多个执行顺序中的一个执行顺序的存储器成本终止;以及
基于多个执行顺序中的每个执行顺序的存储器成本,从多个执行顺序中确定执行顺序。
20.根据权利要求18所述的介质,其中基于一个或多个优先关系来确定多个查询执行流水线的多个执行顺序包括:
确定多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线,
其中所确定的多个执行顺序不包括多个查询执行流水线中具有低于阈值的存储器成本的一个查询执行流水线。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163263703P | 2021-11-08 | 2021-11-08 | |
US63/263,703 | 2021-11-08 | ||
US17/674,313 | 2022-02-17 | ||
US17/674,313 US11874835B2 (en) | 2021-11-08 | 2022-02-17 | Scheduling of query pipeline execution |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089487A true CN116089487A (zh) | 2023-05-09 |
Family
ID=83996767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211318584.8A Pending CN116089487A (zh) | 2021-11-08 | 2022-10-26 | 查询流水线执行的调度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11874835B2 (zh) |
EP (1) | EP4177767A1 (zh) |
JP (1) | JP2023070105A (zh) |
CN (1) | CN116089487A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995080B1 (en) * | 2023-07-25 | 2024-05-28 | Snowflake Inc. | Runtime join pruning to improve join performance for database tables |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6920454B1 (en) * | 2000-01-28 | 2005-07-19 | Oracle International Corporation | Techniques for DLM optimization with transferring lock information |
US7574424B2 (en) * | 2004-10-13 | 2009-08-11 | Sybase, Inc. | Database system with methodology for parallel schedule generation in a query optimizer |
US7574425B2 (en) | 2004-12-03 | 2009-08-11 | International Business Machines Corporation | System and method for query management in a database management system |
CN101741715B (zh) * | 2008-11-20 | 2013-03-20 | 华为技术有限公司 | 发送消息的方法、接入路由节点设备和数据缓存*** |
US8832111B2 (en) * | 2010-12-30 | 2014-09-09 | Facebook, Inc. | Distributed cache for graph data |
US10521430B1 (en) * | 2016-11-06 | 2019-12-31 | Tableau Software, Inc. | Dynamic selection of query execution operators |
US10372707B2 (en) | 2016-11-29 | 2019-08-06 | Sap Se | Query execution pipelining with pump operators |
WO2020220216A1 (en) * | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11574249B2 (en) * | 2020-06-02 | 2023-02-07 | International Business Machines Corporation | Streamlining data processing optimizations for machine learning workloads |
US11934679B2 (en) * | 2020-10-21 | 2024-03-19 | EMC IP Holding Company, LLC | System and method for segmenting volumes across a multi-node storage system |
-
2022
- 2022-02-17 US US17/674,313 patent/US11874835B2/en active Active
- 2022-10-25 EP EP22203587.5A patent/EP4177767A1/en active Pending
- 2022-10-26 CN CN202211318584.8A patent/CN116089487A/zh active Pending
- 2022-10-26 JP JP2022171471A patent/JP2023070105A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4177767A1 (en) | 2023-05-10 |
JP2023070105A (ja) | 2023-05-18 |
US11874835B2 (en) | 2024-01-16 |
US20230141462A1 (en) | 2023-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11580070B2 (en) | Utilizing metadata to prune a data set | |
CN106484875B (zh) | 基于molap的数据处理方法及装置 | |
US8386463B2 (en) | Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table | |
US8732163B2 (en) | Query optimization with memory I/O awareness | |
US9449115B2 (en) | Method, controller, program and data storage system for performing reconciliation processing | |
US10223437B2 (en) | Adaptive data repartitioning and adaptive data replication | |
US20090307329A1 (en) | Adaptive file placement in a distributed file system | |
US9471657B1 (en) | Range query capacity allocation | |
US9330158B1 (en) | Range query capacity allocation | |
CN108763536A (zh) | 数据库访问方法及装置 | |
CN116089487A (zh) | 查询流水线执行的调度 | |
US10095737B2 (en) | Information storage system | |
CN112632157B (zh) | 一种分布式***下的多条件分页查询方法 | |
CN110737432A (zh) | 一种基于词根表的脚本辅助设计方法及装置 | |
CN116756150B (zh) | 一种Mpp数据库大表关联加速方法 | |
US8548980B2 (en) | Accelerating queries based on exact knowledge of specific rows satisfying local conditions | |
CN116089414B (zh) | 基于海量数据场景的时序数据库写入性能优化方法及装置 | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和*** | |
Mullangi et al. | SCISSOR: scalable and efficient reachability query processing in time-evolving hierarchies | |
JP2018081603A (ja) | Kvデータ構造変換装置、kvデータ構造変換方法、および、kvデータ構造変換プログラム | |
CN115803731A (zh) | 用于关系图数据库的图视图选择的数据库管理***和方法 | |
CN105518664A (zh) | 管理数据库节点 | |
CN111949439B (zh) | 基于数据库的数据文件更新方法和装置 | |
CN111597146B (zh) | 视频文件处理方法及装置、存储介质、电子装置 | |
US11392572B2 (en) | Selectivity estimation using non-qualifying tuples |
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 |