CN116501761A - 查询优化方法、设备及存储介质 - Google Patents

查询优化方法、设备及存储介质 Download PDF

Info

Publication number
CN116501761A
CN116501761A CN202310360161.0A CN202310360161A CN116501761A CN 116501761 A CN116501761 A CN 116501761A CN 202310360161 A CN202310360161 A CN 202310360161A CN 116501761 A CN116501761 A CN 116501761A
Authority
CN
China
Prior art keywords
statistical information
node
data source
logic
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
Application number
CN202310360161.0A
Other languages
English (en)
Inventor
王彬
马云雷
顾汉杰
王桢
屈岳
范阿冬
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202310360161.0A priority Critical patent/CN116501761A/zh
Publication of CN116501761A publication Critical patent/CN116501761A/zh
Pending legal-status Critical Current

Links

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
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • 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/248Presentation of query results
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种查询优化方法、设备及存储介质。优化器获取查询语句的逻辑执行计划后,从收集到的数据源的统计信息中,获取逻辑执行计划中的逻辑计划节点的统计信息,并可根据逻辑计划节点的统计信息,对逻辑执行计划执行基于代价的优化操作。其中,数据源的统计信息,包括由执行器执行指定查询语句的物理执行计划时从数据源收集到的统计信息,降低了对数据源自行收集的统计信息的依赖。进而,可在对多种不同类型的数据源进行查询时,灵活地获取逻辑计划节点的统计信息,从而有利于适应对多种不同数据源进行查询的场景,提升了查询优化方法的普适性。

Description

查询优化方法、设备及存储介质
技术领域
本申请涉及数据库技术领域,尤其涉及一种查询优化方法、设备及存储介质。
背景技术
通常,为提高查询效率,在数据库中采用基于代价的优化器对查询语句对应的逻辑执行计划进行优化。在一种查询优化过程中,需获取数据源的统计信息,并结合统计信息确定逻辑执行计划的查询代价。但是,现有的获取数据源的统计信息的方式,对数据源的依赖性较高,若数据源不具有信息统计能力,则无法执行基于代价的优化操作,灵活性和普适性较差。因此,有待提出一种新的解决方案。
发明内容
本申请的多个方面提供一种查询优化方法、设备及存储介质,用以灵活地获取逻辑计划节点的统计信息,降低对数据源的依赖,从而有利于适应多种不同查询场景。
本申请实施例提供一种查询优化方法,包括:获取第一查询语句的逻辑执行计划;所述逻辑执行计划包含至少一个逻辑计划节点;从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息;所述数据源的统计信息,包括:由执行器执行指定查询语句的物理执行计划时从数据源收集到的第一统计信息;根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作。
可选地,从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息之前,还包括:判断所述数据源的类型是否为具有统计能力的目标类型;若为否,则确定所述第一统计信息作为所述数据源的统计信息;若为是,则根据所述第一统计信息以及由所述数据源收集到的第二统计信息,确定所述数据源的统计信息。
可选地,根据数据表的统计信息中,获取所述至少一个逻辑计划节点的统计信息之前,还包括:针对所述指定查询语句中的任一第二查询语句,根据所述第二查询语句的逻辑执行计划,确定执行所述第二查询语句的查询操作所需扫描的目标数据源;在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息。
可选地,在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息,包括:判断所述第二查询语句的逻辑执行计划是否包含连接节点;若包含所述连接节点,则在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息。
可选地,从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息,包括:遍历所述第一查询语句对应的语法树,得到所述至少一个逻辑计划节点各自的逻辑表达式;根据所述至少一个逻辑计划节点各自的逻辑表达式,对所述数据源的统计信息进行计算,得到所述至少一个逻辑计划节点各自的统计信息。
可选地,根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作,包括以下至少一种:根据过滤节点对应的被过滤数据源的统计信息,确定所述过滤节点的计算代价;根据聚合节点的对应的被聚合数据源的统计信息,确定所述聚合节点的计算代价以及内存代价;根据连接节点对应的被连接数据源的统计信息以及连接操作的任务执行数,确定所述连接节点的计算代价以及内存代价;根据交互节点对应的被交互数据源的统计信息以及交互操作的任务执行数,确定交互节点的网络代价。
本申请实施例还提供一种查询优化方法,包括:在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息;将收集到的所述数据源的统计信息提供给优化器,以使优化器根据所述数据源的统计信息对接收到的查询语句的逻辑执行计划查询优化执行基于代价的优化操作。
可选地,在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息,包括:判断所述物理执行计划是否包含连接操作;若包含连接操作,则在执行所述物理执行计划时,收集所述数据源的统计信息。
本申请实施例还提供一种服务器,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本申请实施例提供的方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现本申请实施例提供的方法中的步骤。
本申请实施例中,优化器获取查询语句的逻辑执行计划后,从收集到的数据源的统计信息中,获取逻辑执行计划中的逻辑计划节点的统计信息,并可根据逻辑计划节点的统计信息,对逻辑执行计划执行基于代价的优化操作。其中,数据源的统计信息,包括由执行器执行指定查询语句的物理执行计划时从数据源收集到的统计信息,降低了对数据源自行收集的统计信息的依赖。进而,可在对多种不同类型的数据源进行查询时,灵活地获取逻辑计划节点的统计信息,从而有利于适应对多种不同数据源进行查询的场景,提升了查询优化方法的普适性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的查询优化方法的流程示意图;
图2为本申请另一示例性实施例提供的查询优化方法的流程示意图;
图3是又本申请一示例性实施例提供的查询优化方法的流程示意图;
图4为本申请一示例性实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
在数据库查询操作中,多表连接是较为重要且较为耗时的数据库算子之一。在分布式数据库中,往往采用分阶段的方式实现多表连接功能,即右表所在的右表节点将右表广播到所有左表所在的左表节点,并在左表执行哈希连接操作。当右表较大时,将消耗非常多的网络资源以及内存资源,极易造成右表节点内存不足的情况。考虑到数据库中的多数据源的连接操作较为频繁,通常采用基于代价的优化器(Cost-Based Optimization,CBO)对查询语句对应的逻辑执行计划进行优化,以降低查询代价。在查询优化过程中,需获取逻辑执行计划中的逻辑计划节点统计信息,并结合统计信息确定逻辑执行计划的查询代价。这种方式对数据源要求较高,需要数据源本身具有提供统计信息的能力,但并不是所有数据源都能够提供统计信息,因而无法灵活地应用在多种不同场景。
针对上述技术问题,在本申请一些实施例中,提供了一种解决方案,以下结合附图,详细说明本申请各实施例提供的技术方案。
图1是本申请一示例性实施例提供的查询优化方法的流程示意图,该方法由优化器执行时,可包括如图1所示的步骤:
步骤101、获取第一查询语句的逻辑执行计划;所述逻辑执行计划包含至少一个逻辑计划节点。
步骤102、从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息;所述数据源的统计信息,包括:由执行器执行指定查询语句的物理执行计划时从数据源收集到的第一统计信息。
步骤103、根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作。
本申请实施例的执行主体可以为优化器。该优化器,运行在数据库的服务端上,用于基于代价或者规则,对查询语句的逻辑执行计划进行优化。获取到优化后的逻辑执行计划后,可生成逻辑执行计划对应的物理执行计划,并由数据库服务端上的执行器执行该物理执行计划,以得到查询结果。
其中,第一查询语句,可以是数据库客户端接收到的任一查询语句。数据库客户端可将第一查询语句发送至数据库服务端。数据库服务端的分析器可对第一查询语句进行语法分析,得到抽象语法树(Abstract Syntax Tree,AST)。抽象语法树用于描述第一查询语句的查询逻辑,抽象语法树中的节点,称为逻辑计划节点。例如,逻辑节点可包括:连接节点(JoinNode)、半连接节点(SemiJoinNode)。其中,连接节点包括交叉连接(CrossJoin)、内连接(InnerJoin)、左连接(LeftJoin)、右连接(RightJoin)和全连接(FullJoin)功能,半连接节点包括半连接(SemiJoin)以及反链接(AntiJoin)功能。
其中,数据源,是指用于存储数据的对象,该数据源包括但不限于数据库、数据表、文本、文件体以及URL(Uniform Resource Locator,统一资源定位器)中的至少一种。第一查询语句,通常描述待查询的数据源的信息以及待查询的数据的信息,以期待从指定数据源中查询到特定信息。
数据源的统计信息,是用于描述数据源中的表、行、列的元数据信息的集合,用于反映从数据源中执行数据查询操作所需付出的代价,例如网络代价、内存代价以及计算代价等。任一数据源的统计信息可包括:从数据源中收集到的总数据量、行级别的统计信息以及列级别的统计信息中的一种。其中,行级别的统计信息,可包括数据源的总行数、行的平均长度以及数据在磁盘中的总页数等。列级别的统计信息可包括:列中的较大值、较小值、空值比例、平均行大小以及不同值总数中的至少一种。
在本实施例中,数据源的统计信息,包括:由执行器执行指定查询语句的物理执行计划时从数据源收集到的第一统计信息。其中,指定查询语句,可包括由用户指定的查询语句、包含特定查询操作(例如连接操作)的查询语句以及历史查询语句中的至少一种;其中,历史查询语句,是指在接收到第一查询语句之前的历史时间段内执行的查询语句。在执行历史查询语句对应的物理执行计划的过程中,执行器需访问执行计划对应的数据源,并可在访问数据源的过程中,对数据源的统计信息进行收集。例如,执行器可在扫描一数据表时,对数据表的统计信息进行收集。
基于此,本实施例中在获取第一查询语句对应的逻辑执行计划后,可从收集到的数据源的统计信息中,获取逻辑执行计划中的至少一个逻辑计划节点各自的统计信息。
其中,任一逻辑计划节点对应的统计信息,是指逻辑计划节点所需访问的数据源的统计信息。例如,逻辑计划节点为连接节点时,连接节点对应的统计信息,为被连接的多个数据表的统计信息。逻辑执行计划的节点为过滤节点时,过滤节点对应的统计信息,为被过滤的数据表的统计信息,不再赘述。
确定至少一个逻辑计划节点各自的统计信息后,可根据该至少一个逻辑计划节点各自的统计信息,对逻辑执行计划执行基于代价的优化操作。在这一过程中,可根据该至少一个逻辑计划节点各自的统计信息以及预设的优化规则,确定该至少一个逻辑节点的多种组合方式,并根据该至少一个逻辑计划节点的统计信息,计算多种组合方式的查询代价。确定多种组合方式的查询代价后,可从多种组合中选择执行代价较小的组合,作为最终的逻辑执行计划。其中,优化器可根据节点的不同类型,基于不同的优化规则对逻辑执行计划进行优化。以下将以连接节点和半连接节点为例,进行实例性说明。
其中,若连接节点包含内连接功能,优化器可确定内连接对应的多个表,并按照不同顺序对该多个表进行组合,得到多个内连接组合。优化器可根据该多个表各自的统计信息,确定该多个内连接组合各自的查询代价。确定该多个内连接组合各自的查询代价后,优化器可选择查询代价较小的内连接组合,作为优化后的内连接组合。在一些实施例中,为缩短执行时间,可设置内连接的表的数量阈值为3个。若内连接的表的数量大于3个,则不执行内连接的代价计算操作,并返回计算失败结果。
其中,针对连接节点,优化器可根据连接节点的左右表互换属性,判断连接节点执行时,是否可以互换左右表。若连接节点的语义不包含左连接、右连接等算子,则可确定连接节点执行时,可进行左右表互换。在这种实施方式中,优化器可确定被连接的多个表,并根据该多个表的统计信息确定分发类型;其中,分发类型包括:广播分发或者哈希分发。广播分发是指,发送节点将被分发的数据的全部行进行复制,并将复制结果发送至接收节点。哈希分发是指,发送节点在被分发的数据的行中的一个或者多个列上使用散列函数,并基于散列函数的计算结果将该行发送至接收节点。其中,考虑到网络代价以及内存代价,可在被分发的表的数据行数小于设定阈值(例如10万行)时,确定该表的分发类型为广播分发,反之则为哈希分发。即,针对能够左右表互换的连接节点,可根据被分发的表的统计信息对被分发的多个表进行组合,得到如下多个连接组合:右表广播分发、左表广播分发、右表哈希分发以及左表哈希分发。确定多个连接组合后,基于被连接的表的统计信息确定该多个连接组合各自的查询代价。进而,优化器可选择查询代价较小的连接组合,作为该连接节点对应的优化后的连接组合。
其中,针对无法进行左右表互换的半连接节点,优化器可确定被连接的多个表,并根据被分发的右表的统计信息确定分发类型。例如,可在右表的数据行数小于设定阈值(例如10万行)时,确定右表的分发类型为广播分发,反之则为哈希分发。即,针对无法左右表互换的半连接节点,可得到如下半连接组合:右表广播分发以及右表哈希分发。确定多个半连接组合后,基于左右表的统计信息确定该多个半连接组合各自的查询代价。进而,优化器可选择查询代价较小的半连接组合,作为该半连接节点对应的优化后的连接组合。
在本实施例中,优化器获取查询语句的逻辑执行计划后,从收集到的数据源的统计信息中,获取逻辑执行计划中的逻辑计划节点各自的统计信息,并可根据逻辑计划节点各自的统计信息,对逻辑执行计划执行基于代价的优化操作。其中,数据源的统计信息,包括由执行器执行指定查询语句的物理执行计划时从数据源收集到的统计信息,降低了对数据源自行收集的统计信息的依赖。进而,可在对多种不同类型的数据源进行查询时,灵活地获取逻辑计划节点的统计信息,从而有利于适应对多种不同数据源进行查询的场景,提升了查询优化方法的普适性。此外,优化器在对逻辑执行计划执行基于代价的优化操作时,可根据被连接的表的统计信息,动态地确定连接以及半连接的广播类型,并可根据被连接的表的统计信息确定多表的内连接顺序,有效降低了被连接的分布式节点的内存溢出风险,且有利于提升查询执行效率。
在一些示例性的实施例中,优化器在从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息之前,可进一步判断数据源的类型是否为具有统计能力的目标类型。若为否,则数据源不具备统计能力,优化器可确定前述记载的第一统计信息作为数据源的统计信息。第一统计信息是执行器在执行指定查询语句的物理执行计划时从数据源收集到的。
不依赖数据源的统计能力,适用于对多种不同数据源进行查询的场景。可选地,若为数据源的类型为具有统计能力的目标类型,则数据源具备统计能力,优化器可根据第一统计信息以及由数据源收集到的第二统计信息,确定数据源的统计信息。在这种实施方式中,数据源的统计信息,一部分由执行器采集得到,另一部分由数据源自身统计得到,使得统计数据更加准确,从而有利于提升优化得到的最终逻辑执行计划的执行效率。
在一些示例性的实施例中,在执行器执行所述指定查询语句中的任一查询语句时,优化器可确定该查询语句涉及的目标数据源,并在在执行器执行该查询语句对应的物理执行计划时,利用执行器收集目标数据源的统计信息。例如,优化器可向执行器发送收集目标数据源的统计信息的指令,以通过执行器完成对目标数据源的统计信息的收集操作。
在一些可选的实施例中,由于多表连接是较为重要且较为耗时的数据库算子之一,因此,可在逻辑执行计划包含多表连接相关算子时,启动对被连接的数据源进行统计信息的收集操作,以避免非必要的通信干扰。
在一些实施例A1中,在执行器执行查询语句对应的物理执行计划时,优化器可判断查询语句的逻辑执行计划是否包含连接节点;若包含连接节点,则优化器可在执行器执行查询语句对应的物理执行计划时,利用执行器收集所述目标数据源的统计信息。
在一些实施例A2中,执行器在获取查询语句对应的物理执行计划后,可判断该物理执行计划是否包含连接操作;若包含连接操作,则执行器可在执行该物理执行计划时,收集目标数据源的统计信息。
其中,收集到的目标数据源的统计信息,可存储在数据库服务端本地或者存在云端服务器上,以备后续使用。随着查询操作的数量不断提升,不同数据源的统计信息可不断完善,且可动态地根据数据源的实际情况进行更新,从而能够向优化器提供更加可靠的数据支持。
基于上述实施方式获取数据源的统计信息后,可在后续接收到查询请求时,生成查询请求对应的逻辑执行计划,并基于数据源的统计信息计算逻辑执行计划的查询代价。以下将继续以第一查询语句为例进行实例性说明。生成第一查询语句的逻辑执行计划后,优化器可从收集到的数据源的统计信息中,获取该逻辑执行计划中的至少一个逻辑计划节点各自的统计信息。可选地,优化器可遍历第一查询语句对应的语法树,得到该至少一个逻辑计划节点各自的逻辑表达式。优化器可根据该至少一个逻辑计划节点各自的逻辑表达式,对数据源的统计信息进行计算,得到该至少一个逻辑计划节点各自的统计信息。例如。根据过滤节点的过滤表达式及数据源的统计信息,预测过滤节点的统计信息。
确定逻辑节点各自的统计信息后,优化器可计算逻辑执行计划的查询代价。
可选地,优化器在根据该至少一个逻辑计划节点各自的统计信息,确定逻辑执行计划的查询代价时,可分别计算该至少一个逻辑计划节点各自的代价,并根据该至少一个逻辑计划节点各自的代价综合得到物理逻辑执行计划的查询代价。
其中,不同逻辑计划节点所需计算的代价不同,以下将进行示例性说明。
可选地,过滤节点为标量计算节点,需确定计算代价。优化器可根据过滤节点对应的被过滤数据源的统计信息(例如数据源的总数据量),确定过滤节点的计算代价。
可选地,聚合节点需缓存被聚合的数据并执行聚合计算。优化器可根据聚合节点的对应的被聚合数据源的统计信息(例如数据源的总数据量、行级别的统计信息以及列级别的统计信息),确定聚合节点的计算代价以及内存代价。
可选地,连接节点涉及数据计算、右表数据分发以及右表的数据缓存,且广播模式的右表哈希分发所需的内存代价与任务执行数相关。因此,优化器可根据连接节点对应的被连接数据源的统计信息以及连接操作的任务执行数,确定连接节点的计算代价以及内存代价。其中,任务执行数,与右表的行数对应。若右表包含N行数据,则需向左表所在的左表节点分别广播右表的N行数据,此时所需的任务执行数为N,N为正整数。在一些实施例中,为便于计算,可将任务执行数设为固定值,例如可设为20。
可选地,交互节点用于实现进程间的通信,优化器可根据交互节点对应的被交互数据源的统计信息以及交互操作的任务执行数,确定交互节点的网络代价。
基于上述实施方式确定逻辑执行计划中的至少一个逻辑计划节点各自的代价后,可根据该至少一个逻辑计划节点各自的代价进行加权求和,得到物理逻辑执行计划的查询代价。
图2对本申请实施例提供的查询优化方法进行了进一步示意,如图2,数据库服务端接收到查询语句后,可对查询语句进行语法解析,得到抽象语法树(AST),并根据抽象语法树生成逻辑执行计划。假设,逻辑执行计划包含:连接节点以及半连接节点。优化器可对逻辑执行计划执行基于代价的优化操作。优化器可判断被查询的数据源是否可以提供统计信息。若数据源能够提供统计信息,则将数据源提供的统计信息作为被扫描的表的统计信息。反之,将历史连接查询的统计信息作为被扫描的表的统计信息。
如图2所示,确定统计信息后,优化器可进行代价计算。若连接节点包含内连接功能,则判断内连接的表的数量是否大于指定数量(例如3个)。若大于指定数量,则跳过,不执行内连接的代价计算操作。若小于或者等于指定数量,则运行内连接的连接顺序规则,生成被连接的表的多种排序组合,并基于被连接的表的统计信息计算多种排序组合各自的代价。
针对连接节点,可运行连接的分发类型规则,根据连接节点的语义判断是否可进行左右表互换。若确定可进行左右表互换,则可根据左/右表的行级别的统计信息确定分发类型为广播分发或者哈希分发。例如,将右表分发给左表时,可根据右表的行级别的统计信息确定分发类型为广播分发或者哈希分发。例如,将左表分发给右表时,可根据左表的行级别的统计信息确定分发类型为广播分发或者哈希分发。确定分发类型后,可生成左表广播分发、右表广播分发、左表哈希分发、右表哈希分发等组合,并基于上述各组合中的表的统计信息,计算各组合的代价。
针对半连接节点,可根据右表的行级别的统计信息,确定右表的分发类型为广播分发或者哈希分发。确定分发类型后,可生成右表广播分发以及右表哈希分发等组合,并基于上述各组合中的表的统计信息,计算各组合的代价。
在上述代价计算的过程中,若能够获取被扫描的表各自具的统计信息,则可成功计算各连接节点的查询代价,并可选择代价较小的组合作为较佳执行计划。反之,若代价计算失败(例如左表缺失统计信息),则可根据右表行数确定最终执行计划。如图2所示,若右表行数小于指定行数,则确定广播分发类型的逻辑执行计划为较佳执行计划。若右表行数大于或等于指定行数,采用哈希分发类型的逻辑执行计划作为较佳执行计划,进而降低连接过程产生的内存代价以及网络代价,提升连接效率。
图3是本申请另一示例性实施例提供的查询优化方法的流程示意图,该方法在执行器一侧执行时,可包括如图3所示的步骤:
步骤301、在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息。
步骤302、将收集到的所述数据源的统计信息提供给优化器,以使优化器根据所述数据源的统计信息对接收到的查询语句的逻辑执行计划执行基于代价的优化操作。
本申请实施例的执行主体可以为执行器。该执行器,运行在数据库的服务端上,用于从优化器获取优化后的逻辑执行计划,将逻辑执行计划转换为物理执行计划,并基于物理执行计划,在数据源(例如磁盘等物理数据库)中执行查询操作,并向数据库客户端返回查询结果。
在这种实施方式中,执行器可在对数据源执行查询操作时,扫描数据源,并在扫描的过程中收集数据源的统计信息。例如,可扫描数据源的全部数据,以得到数据源的总数据量。例如,可逐行扫描数据源的行记录,得到数据源的行级别的统计信息。又例如,可逐列对数据源进行较大值、较小值以及空值的统计,得到数据源的列级别的统计信息,不再赘述。其中,收集到的统计信息,可存储在指定位置(例如数据库服务端或者云端服务器),以提供给优化器使用。
在一些可选的实施例中,执行器在物理执行计划时,可判断该物理执行计划是否包含连接操作,若包含连接操作,则执行器可在执行该物理执行计划时,收集数据源的统计信息。即,对操作较为频繁、且耗时的多表连接操作涉及到的数据源的统计信息进行收集。基于这种实施方式,执行器在确定查询语句包含分发类型的操作时启动信息统计操作,一方面有利于后续基于统计信息对较为耗时的连接操作进行优化,另一方面,可在当前查询过程中减少不必要的通信干扰,提升查询效率。
在这种实施方式中,执行器执行查询语句的物理执行计划时,从数据源收集统计信息以用于对后续查询计划执行基于代价的优化操作,降低了对数据源自行收集的统计信息的依赖。进而,可在对多种不同类型的数据源进行查询时,灵活地获取逻辑计划节点的统计信息,从而有利于适应对多种不同数据源进行查询的场景,提升了查询优化方法的普适性。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤104的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
图4示意了本申请一示例性实施例提供的服务器的结构示意图,该服务器适用于前述实施例提供的查询优化方法。如图4所示,该服务器包括:存储器401以及处理器402。
存储器401,用于存储计算机程序,并可被配置为存储其它各种数据以支持在服务器上的操作。这些数据的示例包括用于在服务器上操作的任何应用程序或方法的指令。
在一些示例性的实施例中,处理器402,与存储器401耦合,用于执行存储器401中的计算机程序,以用于:获取第一查询语句的逻辑执行计划;所述逻辑执行计划包含至少一个逻辑计划节点;从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息;所述数据源的统计信息,包括:由执行器执行指定查询语句的物理执行计划时从数据源收集到的第一统计信息;根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作。
可选地,处理器402在从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息之前,还用于:判断所述数据源的类型是否为具有统计能力的目标类型;若为否,则确定所述第一统计信息作为所述数据源的统计信息;若为是,则根据所述第一统计信息以及由所述数据源收集到的第二统计信息,确定所述数据源的统计信息。
可选地,处理器402在根据数据表的统计信息中,获取所述至少一个逻辑计划节的统计信息之前,还用于:针对所述指定查询语句中的任一第二查询语句,根据所述第二查询语句的逻辑执行计划,确定执行所述第二查询语句的查询操作所需扫描的目标数据源;在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息。
可选地,处理器402在在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息时,具体用于:判断所述第二查询语句的逻辑执行计划是否包含连接节点;若包含所述连接节点,则在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息。
可选地,处理器402在从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息时,具体用于:遍历所述第一查询语句对应的语法树,得到所述至少一个逻辑计划节点各自的逻辑表达式;根据所述至少一个逻辑计划节点各自的逻辑表达式,对所述数据源的统计信息进行计算,得到所述至少一个逻辑计划节点各自的统计信息。
可选地,处理器402在根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作时,具体用于执行以下至少一种操作:根据过滤节点对应的被过滤数据源的统计信息,确定所述过滤节点的计算代价;根据聚合节点的对应的被聚合数据源的统计信息,确定所述聚合节点的计算代价以及内存代价;根据连接节点对应的被连接数据源的统计信息以及连接操作的任务执行数,确定所述连接节点的计算代价以及内存代价;根据交互节点对应的被交互数据源的统计信息以及交互操作的任务执行数,确定交互节点的网络代价。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由服务器执行的各步骤。该计算机程序,可实现为运行在数据库服务器中的优化器应用程序。
在另一些示例性的实施例中,处理器402,与存储器401耦合,用于执行存储器401中的计算机程序,以用于:在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息;将收集到的所述数据源的统计信息提供给优化器,以使优化器根据所述数据源的统计信息对接收到的查询语句的逻辑执行计划查询优化执行基于代价的优化操作。
可选地,处理器402在在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息时,具体用于:判断所述物理执行计划是否包含连接操作;若包含连接操作,则在执行所述物理执行计划时,收集所述数据源的统计信息。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由服务器执行的各步骤。该计算机程序,可实现为运行在数据库服务器中的执行器应用程序。
进一步,如图4所示,该服务器还包括:通信组件403、电源组件404等其它组件。图4中仅示意性给出部分组件,并不意味着服务器只包括图4所示组件。
其中,存储器401可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
其中,通信组件403被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如Wi-Fi(无线网络通信技术),2G(如全球移动通信系统(Global System for Mobile Communications,GSM)等)、3G(如宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、4G(如长期演进(Long Term Evolution,LTE)等)、4G+(如升级版长期演进(LTE-Advanced,LTE-A)等)或5G(第五代移动通信技术(5th Generation Mobile Communication Technology)),或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(NFC)技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术和其他技术来实现。
其中,电源组件404,用于为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本实施例中,优化器获取查询语句的逻辑执行计划后,从收集到的数据源的统计信息中,获取逻辑执行计划中的逻辑计划节点各自的统计信息,并可根据逻辑计划节点各自的统计信息,对逻辑执行计划执行基于代价的优化操作。其中,数据源的统计信息,包括由执行器执行指定查询语句的物理执行计划时从数据源收集到的统计信息,降低了对数据源自行收集的统计信息的依赖。进而,可在对多种不同类型的数据源进行查询时,灵活地获取逻辑计划节点的统计信息,从而有利于适应对多种不同数据源进行查询的场景,提升了查询优化方法的普适性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种查询优化方法,包括:
获取第一查询语句的逻辑执行计划;所述逻辑执行计划包含至少一个逻辑计划节点;
从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息,所述数据源的统计信息,包括:由执行器执行指定查询语句的物理执行计划时从数据源收集到的第一统计信息;
根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作。
2.根据权利要求1所述的方法,从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息之前,还包括:
判断所述数据源的类型是否为具有统计能力的目标类型;
若为否,则确定所述第一统计信息作为所述数据源的统计信息;
若为是,则根据所述第一统计信息以及由所述数据源收集到的第二统计信息,确定所述数据源的统计信息。
3.根据权利要求1所述的方法,根据数据表的统计信息中,获取所述至少一个逻辑计划节点的统计信息之前,还包括:
针对所述指定查询语句中的任一第二查询语句,根据所述第二查询语句的逻辑执行计划,确定执行所述第二查询语句的查询操作所需扫描的目标数据源;
在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息。
4.根据权利要求3所述的方法,在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息,包括:
判断所述第二查询语句的逻辑执行计划是否包含连接节点;
若包含所述连接节点,则在所述执行器执行所述第二查询语句对应的物理执行计划时,利用所述执行器收集所述目标数据源的统计信息。
5.根据权利要求1所述的方法,从收集到的数据源的统计信息中,获取所述至少一个逻辑计划节点的统计信息,包括:
遍历所述第一查询语句对应的语法树,得到所述至少一个逻辑计划节点各自的逻辑表达式;
根据所述至少一个逻辑计划节点各自的逻辑表达式,对所述数据源的统计信息进行计算,得到所述至少一个逻辑计划节点各自的统计信息。
6.根据权利要求1-5任一项所述的方法,根据所述至少一个逻辑计划节点的统计信息,对所述逻辑执行计划执行基于代价的优化操作,包括以下至少一种:
根据过滤节点对应的被过滤数据源的统计信息,确定所述过滤节点的计算代价;
根据聚合节点的对应的被聚合数据源的统计信息,确定所述聚合节点的计算代价以及内存代价;
根据连接节点对应的被连接数据源的统计信息以及连接操作的任务执行数,确定所述连接节点的计算代价以及内存代价;
根据交互节点对应的被交互数据源的统计信息以及交互操作的任务执行数,确定交互节点的网络代价。
7.一种查询优化方法,包括:
在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息;
将收集到的所述数据源的统计信息提供给优化器,以使优化器根据所述数据源的统计信息对接收到的查询语句的逻辑执行计划查询优化执行基于代价的优化操作。
8.根据权利要求7所述的方法,在执行查询语句对应的物理执行计划时,收集被扫描的数据源的统计信息,包括:
判断所述物理执行计划是否包含连接操作;
若包含连接操作,则在执行所述物理执行计划时,收集所述数据源的统计信息。
9.一种服务器,包括:存储器和处理器;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令以用于:执行权利要求1-8任一项所述的方法中的步骤。
10.一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现权利要求1-8任一项所述的查询优化方法。
CN202310360161.0A 2023-03-31 2023-03-31 查询优化方法、设备及存储介质 Pending CN116501761A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310360161.0A CN116501761A (zh) 2023-03-31 2023-03-31 查询优化方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310360161.0A CN116501761A (zh) 2023-03-31 2023-03-31 查询优化方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116501761A true CN116501761A (zh) 2023-07-28

Family

ID=87323865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310360161.0A Pending CN116501761A (zh) 2023-03-31 2023-03-31 查询优化方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116501761A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737763A (zh) * 2023-08-16 2023-09-12 腾讯科技(深圳)有限公司 结构化查询语句执行方法、装置、计算机设备、存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737763A (zh) * 2023-08-16 2023-09-12 腾讯科技(深圳)有限公司 结构化查询语句执行方法、装置、计算机设备、存储介质
CN116737763B (zh) * 2023-08-16 2023-11-21 腾讯科技(深圳)有限公司 结构化查询语句执行方法、装置、计算机设备、存储介质

Similar Documents

Publication Publication Date Title
US10216793B2 (en) Optimization of continuous queries in hybrid database and stream processing systems
US8122008B2 (en) Joining tables in multiple heterogeneous distributed databases
US9152669B2 (en) System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables
CN110837585B (zh) 多源异构的数据关联查询方法及系统
US5864840A (en) Evaluation of existential and universal subquery in a relational database management system for increased efficiency
CN104620239A (zh) 自适应查询优化
US8370326B2 (en) System and method for parallel computation of frequency histograms on joined tables
US8812492B2 (en) Automatic and dynamic design of cache groups
CN111563101A (zh) 执行计划优化方法、装置、设备及存储介质
CN113836163A (zh) 数据的关联查询方法、装置、设备及存储介质
CN116501761A (zh) 查询优化方法、设备及存储介质
CN112559567A (zh) 适用于olap查询引擎的查询方法及装置
CN110968579A (zh) 执行计划的生成与执行方法、数据库引擎及存储介质
CN111125199B (zh) 一种数据库访问方法、装置及电子设备
CN115422205A (zh) 数据处理方法、装置、电子设备及存储介质
CN114860764A (zh) 分布式数据库查询的优化方法、系统及电子设备
CN110968594B (zh) 数据库查询优化方法、引擎及存储介质
CN116401277A (zh) 数据处理方法、装置、系统、设备及介质
US20200364226A1 (en) Methods and devices for dynamic filter pushdown for massive parallel processing databases on cloud
CN105589969A (zh) 一种数据处理方法及装置
CN115408384A (zh) 数据库访问方法、设备及存储介质
CN113239039B (zh) 动态数据的存储方法、查询方法、管理方法及管理系统
CN111221860A (zh) 基于大数据的混合查询优化方法及装置
CN112199401B (zh) 数据请求处理方法、装置、服务器、系统及存储介质
KR20180104498A (ko) 질의 처리 방법 및 장치

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