CN113157736B - 分布式数据库中的查询计划优化方法及系统 - Google Patents

分布式数据库中的查询计划优化方法及系统 Download PDF

Info

Publication number
CN113157736B
CN113157736B CN202110467942.0A CN202110467942A CN113157736B CN 113157736 B CN113157736 B CN 113157736B CN 202110467942 A CN202110467942 A CN 202110467942A CN 113157736 B CN113157736 B CN 113157736B
Authority
CN
China
Prior art keywords
condition
constant correlation
reference table
conditions
query
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.)
Active
Application number
CN202110467942.0A
Other languages
English (en)
Other versions
CN113157736A (zh
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.)
Beijing Great Opensource Software Co ltd
China Unicom WO Music and Culture Co Ltd
Original Assignee
Beijing Great Opensource Software Co ltd
China Unicom WO Music and Culture 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 Beijing Great Opensource Software Co ltd, China Unicom WO Music and Culture Co Ltd filed Critical Beijing Great Opensource Software Co ltd
Priority to CN202110467942.0A priority Critical patent/CN113157736B/zh
Publication of CN113157736A publication Critical patent/CN113157736A/zh
Application granted granted Critical
Publication of CN113157736B publication Critical patent/CN113157736B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/2471Distributed 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

本申请涉及一种分布式数据库中的查询计划优化方法及系统。所述方法包括:基于查询计划中的每个表的常量相关条件数量来选择基准表;基于基准表中的一个或多个当前常量相关条件,评估基准表中不具有常量相关条件的一个或多个列的常量相关条件;针对基准表,基于当前常量相关条件和所评估的常量相关条件,生成常量相关条件组合;以及将常量相关条件组合传递给查询计划中与基准表相关联的一个或多个其它表以扩展每个表的查询条件。

Description

分布式数据库中的查询计划优化方法及系统
技术领域
本申请涉及SQL查询优化,尤其涉及一种分布式数据库中的查询计划优化方法及系统。
背景技术
在实际的数据库应用中,经常需要从多个数据表中读取或查询数据,这通常可以通过使用结构化查询语言(StructuredQueryLanguage,SQL)语句中的连接(JOIN)来实现。
数据库针对数据表连接的查询计划通常会先判定一个驱动表,接着基于SQL语句条件对该驱动表进行数据筛选,然后基于针对该驱动表的筛选后的数据通过连接方式(例如,嵌套循环连接(nest-loop)或哈希连接(hash join))与后续的表进行数据关联,以完成高效的连接。
然而,上述方式在计算节点与存储节点分离的分布式数据库架构中存在一些弊端:(1)上述连接方式的验证依赖全局统计信息的准确性,例如需要根据全局统计信息来判定一个最优的驱动表。然而在分布式数据库中,由于计算节点与存储节点分离,从而在生成查询计划的计算节点层可以获得的数据统计信息相对较少或可能需要高昂的代价来在分布式网络环境中维护一个相对准确的统计信息;(2)查询计划没有充分考虑分布式环境下数据节点跨网络进行数据传递所需的开销。在分布式数据库中,相关联的两个表可能在物理上并不在一起或相邻,因此需要将这两个表跨越网络进行传递后才能进行连接(例如嵌套循环连接或哈希连接)。在数据库查询中,跨网络传递数据量的大小在很大程度上会影响SQL语句的执行效率。
因此,在数据库查询中,尤其是在分布式数据库查询中,存在对于减少在分布式网络间传递数据量的需求。
发明内容
提供本发明内容以便介绍一组概念,这组概念将在以下的具体实施方式中做进一步描述。本发明内容并非旨在标识所保护主题的关键特征或必要特征,也不旨在用于限制所保护主题的范围。
为了达到上述目的,本申请提供一种用于分布式数据库中的查询计划优化的方法及系统。该方法包括:基于查询计划中的每个表的常量相关条件数量来选择基准表;基于所述基准表中的一个或多个当前常量相关条件,评估所述基准表中不具有常量相关条件的一个或多个列的常量相关条件;针对所述基准表,基于所述当前常量相关条件和所评估的常量相关条件,生成常量相关条件组合;以及将所述常量相关条件组合传递给所述查询计划中与所述基准表相关联的一个或多个其它表以扩展所述每个表的查询条件。
在一些例子中,所述一个或多个其它表与所述基准表之间存在等值条件列。
在一些例子中,所述评估操作进一步包括:提取所述基准表中的一个或多个当前常量相关条件;以及基于所提取的一个或多个当前常量相关条件,确定所述不具有常量相关条件的一个或多个列的每个列的最大值和最小值。
在一些例子中,所述生成操作进一步包括拼接针对所述基准表的所述当前常量相关条件和所评估的常量相关条件。
在一些例子中,所述选择操作进一步包括:将所述查询计划中具有最多数量的常量相关条件的表选择为所述基准表。
此外,该方法还包括:对所述查询计划中的所有表按照所述常量相关条件数量进行降序排序;以及以迭代方式将经降序排序的所有表依次分别选择作为所述基准表。
此外,该方法还包括:基于扩展的每个表的查询条件,执行SQL join语句。
为了达到上述目的,本申请公开了一种用于分布式数据库中的查询计划优化的系统,该系统中包括:选择模块,用于基于查询计划中的每个表的常量相关条件数量来选择基准表;评估模块,用于基于所述基准表中的一个或多个当前常量相关条件,评估所述基准表中不具有常量相关条件的一个或多个列的常量相关条件;生成模块,用于针对所述基准表,基于所述当前常量相关条件和所评估的常量相关条件,生成常量相关条件组合;以及传递模块,用于将所述常量相关条件组合传递给所述查询计划中与所述基准表相关联的一个或多个其它表以扩展所述每个表的查询条件。在一些例子中,所述一个或多个其它表与所述基准表之间存在等值条件列。
在一些例子中,所述评估模块进一步用于提取所述基准表中的一个或多个当前常量相关条件,以及基于所提取的一个或多个当前常量相关条件,确定所述不具有常量相关条件的一个或多个列的每个列的最大值和最小值。
在一些例子中,所述生成模块进一步用于拼接针对所述基准表的所述当前常量相关条件和所评估的常量相关条件。
在一些例子中,所述选择模块还用于将所述查询计划中具有最多数量的常量相关条件的表选择为所述基准表。
此外,该系统还包括:排序模块,用于对查询计划中的所有表按照常量相关条件数量进行降序排序;以及所述选择模块进一步用于以迭代方式将经降序排序的所有表依次分别选择作为所述基准表。
此外,该系统还包括:执行模块,用于基于扩展的每个表的查询条件,执行SQLjoin语句。
按照本发明实施例的一种用于分布式数据库中的查询计划优化的装置,包括:处理器;以及存储器,用于存储可执行指令,其中,所述可执行指令当被执行时使得所述处理器执行前述的方法。
按照本发明实施例的一种机器可读介质,其上存储有可执行指令,其中,所述可执行指令当被执行时,使得机器执行前述的方法。
与现有技术相比,本申请可以获得的技术效果包括:
(1)无需精确的全局统计信息:本申请无需依赖精确的全局统计信息,而是直接基于SQL语句语义与现有查询条件自动进行查询条件的自启发扩展;且后端数据节点进行数据条件过滤与查询时,只需依赖每个数据节点的本地统计信息即可,从而本申请能够大幅降低全局统计信息的维护成本;
(2)提前应用后置表的数据筛选条件:由于可以将连接语句中的后置表的潜在数据筛选条件提前应用到前置表中,所以可以预先利用后续的筛选条件对前置表进行筛选,大幅减少需要跨网络移动的数据量,提升查询效率;
(3)任意表的查询条件都可以使SQL查询计划的语句中其他关联表的数据筛选能力增强:只需要对SQL语句中任意表的查询条件进行扩展或完善,就可以通过自启发技术将SQL语句中任意表的扩展查询条件自动传递到所有相关联的其它表,以增强其它表的数据筛选能力,减少需要在网络间传递的数据量。
应当注意,以上一个或多个方面包括以下详细描述以及在权利要求中具体指出的特征。下面的说明书及附图详细阐述了所述一个或多个方面的某些说明性特征。这些特征仅仅指示可以实施各个方面的原理的多种方式,并且本公开内容旨在包括所有这些方面和其等同变换。
附图说明
以下将结合附图描述所公开的多个方面,这些附图被提供用以说明而非限制所公开的多个方面。
图1示出了根据本申请的实施例的SQL查询架构的逻辑框图;
图2示出了根据本申请的实施例的用于分布式数据库中的查询计划优化的方法的流程示意图;
图3示出了根据本申请的实施例的用于分布式数据库中的查询计划优化的另一方法的流程示意图;
图4示出了根据本申请的实施例的用于分布式数据库中的查询计划优化的系统的结构示意图;
图5示出了根据本申请的实施例的用于分布式数据库中的查询计划优化的装置的示意图。
具体实施方式
现在将参考多种示例性实施方式来讨论本公开内容。应当理解,这些实施方式的讨论仅仅用于使得本领域技术人员能够更好地理解并从而实施本公开内容的实施例,而并非教导对本公开内容的范围的任何限制。
在数据库查询中,在对查询计划中的两个或更多表进行连接时,需要尽可能提前对驱动表或前置表进行数据筛选,哪怕前置表的相关筛选条件需要依赖后置表;然而在传统算法中目前难以实现依赖后置表的查询条件对前置表进行数据筛选的技术。针对传统的集中式强统计信息查询计划优化算法在计算节点与存储节点分离的分布式架构下存在的问题,本申请提出了一种基于弱统计信息(例如本地统计信息)的查询条件自启发数据库查询计划优化算法,其可以基于SQL语句语义与现有查询条件自动进行查询条件的自启发扩展,从而无需强统计信息,并且基于查询计划中各关联表之间的关联条件,将后置表的潜在数据筛选提前应用到前置表中。在本文中,强统计信息指的是对应数据全局层面的各类查询计划所需的统计信息,例如表的预估行数、平均行长度、表索引离散度的统计、列的值分布直方图等。这些强统计信息都是需要进行复杂采样计算并需要全局更新维护的。此处的弱统计信息与强统计信息最大的区别是不要求全局层面的统计信息,可以是各个数据节点的本地统计信息且只需在本地加以维护。
下面将结合附图详细描述本发明的各个实施例。
图1示出了根据本申请的实施例的SQL查询架构的逻辑框图100。在图1中,客户端设备110可以是能够连接到网络120、访问网络120上的服务器或网站、处理数据或信号等的任何类型的电子计算设备。例如,客户端设备110可以是台式计算机、笔记本电脑、平板电脑、智能电话等。需要理解的是,尽管在图1中仅示出了一个客户端设备110,但是可以有任意数量的客户端设备连接到网络120。网络120被用于在客户端设备110、SQL服务器130和/或数据库140之间进行互连。网络120可以是能够对网络实体进行互连的任何类型的网络,其可以是单个网络或各种网络的组合。
客户端设备110的用户可以通过网络120向SQL服务器130发送对数据库140中的数据的查询请求,例如使用SQL查询语句向SQL服务器130发送查询请求。SQL服务器130中的获取器132可以获取用户通过客户端设备110输入的SQL查询语句,并将其传送给解析器134。解析器134对获取的SQL查询语句进行解析,例如进行词法和语法分析,以将其变换为查询结构(例如查询树或查询计划树)。优化器136从解析器134获取查询树并进行查询计划优化,如常量条件传递、等值关系列条件传递等等,从而生成经优化的查询计划或执行计划以传送给执行器138。执行器138可以基于收到的优化的查询计划来高效地执行SQL语句。虽然未示出,但SQL服务器130中可以包括缓存器,用于缓存在查询计划优化中产生或创建的各种条件映射表和/或记录表。
数据库140可以存储和管理可被访问的大量数据或数据集合,例如表格形式的数据集合。
应当理解,图1中所示的所有实体都是示例性的,根据具体的应用需求,SQL查询架构的逻辑框图100可以涉及任何其它实体。
下面以第一实施例对本申请方法的实现作进一步说明。图2示出了根据本申请的实施例的用于分布式数据库中的查询计划优化的方法200的流程示意图。
该方法200包括:在框202,根据查询计划中的每个表的常量相关条件数量来选择基准表。在本文中,基准表是用于对查询计划中的其它关联表的常量相关条件进行扩展的表。在一些例子中,可以将查询计划中具有最多数量的常量相关条件的表选择为基准表。在另一些例子中,可以将查询计划中具有第二多数量的常量相关条件的表选择为基准表,依此类推。在又一些例子中,可以对查询计划中的所有表按照常量相关条件数量进行降序排序,以及以迭代方式将经降序排序的所有表依次分别选择作为基准表。
在框204,至少基于基准表中的一个或多个当前常量相关条件,评估或推断该基准表中当前不具有常量相关条件的一个或多个列的常量相关条件。在一些例子中,评估操作进一步包括:提取基准表中的一个或多个当前常量相关条件;以及基于所提取的当前常量相关条件,确定不具有常量相关条件的一个或多个列的每个列的最大值和最小值。
在框206,例如通过拼接上述当前常量相关条件和评估得到的常量相关条件(例如不具有常量相关条件的列的最大值和最小值),可以生成针对该基准表的常量相关条件组合。
在框208,将生成的常量相关条件组合传递给查询计划中与基准表相关联的一个或多个其它表以扩展每个表的查询条件。在一些例子中,这些其它表与基准表之间存在等值条件列。举例而言,假设基准表为表t1,相关联的其它表t2、t3与t1之间的关系可以通过等值条件列来体现,t1.ci=t2.cj和t1.ck=t3.cq,等等,此处的i、j、k、q指示表格中的列,其可以是相同或不同的正整数。
虽然图2中未示出,但该方法还可以包括基于扩展的每个表的查询条件来执行具体的结构化查询语言(SQL)语句,例如SQL Join(连接)语句。
下面以第二实施例对本申请方法的实现作进一步说明。图3示出了根据本申请实施例的用于分布式数据库中的查询计划优化的另一方法300的示意性流程图。在本实施例中,对用于SQL查询过程中的查询计划优化过程进行详细描述。
在框302,确定查询计划中每个表的常量相关条件数量。例如,通过在初始化的数据结构中识别在查询中涉及的每个表的常量相关条件来确定每个表的常量相关条件数量。
在框304,对查询计划中使用的所有表按照所确定的常量相关条件数量来进行降序排序,即,将包含最多数量的常量相关条件的列排在最前面或第一位,将包含第二多数量的常量相关条件的列排在第二位,依此类推。
在框306,选择第一个表作为基准表,该第一个表可以是降序排序中排在第一位的表,其具有最多数量的初始常量相关条件。
在框308,提取该基准表中的一个或多个当前常量相关条件,例如通过在初始化的数据结构中识别该基准表的一个或多个当前常量相关条件来进行提取。
在框310,识别该基准表中当前不具有常量相关条件的一个或多个列,例如,从初始化的数据结构中记录所有无对应常量相关条件的列的列表或清单中识别出该基准表的无对应常量相关条件的列。
在框312,基于该基准表中一个或多个当前常量相关条件来评估或推断所识别的无对应常量相关条件的一个或多个列中每个列的最大值和最小值。例如,基于当前常量相关条件来自启发其他无常量相关条件列的最大值和最小值。举例而言,假设该基准表具有4列c1、c2、c3、c4,其当前常量相关条件为ti.c1=8且ti.c2>10,则可以基于列c1和c2的取值或取值范围来分析或推断出ti表中不具有常量条件的列c3、c4的最大值和最小值,例如可以利用SQL语句“select max(ti.c3),min(ti.c3),max(ti.c4),min(ti.c4)from ti whereti.c1=8and ti.c2>10;”来实现。
在框314,通过拼接或组合该基准表中当前常量相关条件及评估的无常量相关条件列的最大值和最小值来得到针对该基准表的新的常量相关条件组合。例如,假设基于步骤312中的例子得到的列c3、c4的最大值和最小值分别为ti.c3>=5且ti.c3<=100以及ti.c4>=4且ti.c4<=10,则可以得出该基准表的新的常量相关条件组合为“ti.c1=8,ti.c2>10,ti.c3>=5,ti.c3<=100,ti.c4>=4,ti.c4<=10”。
在框316,将得到的针对基准表的新的常量相关条件组合传递给查询计划中与该基准表相关联的其它表。例如,与该基准表相关联的其它表可以是与该基准表之间存在等值条件列关系的表。举例而言,假设ti.c4=tj.c6,那么在给表ti添加或扩展了常量相关条件ti.c4>=4且ti.c4<=10之后,基于等值列关系,可以将表ti的新的常量相关条件组合(尤其是涉及ti.c4的评估或扩展的常量相关条件)传递给表tj,例如向表tj添加或扩展常量相关条件tj.c6>=4且tj.c6<=10。可选地,在框316的常量条件扩展和传递之后,可以执行SQL语句,例如SQL join运算,如框322所示。
在框318,可以选择第二个表作为基准表,该第二个表可以是降序排序中排在第二位的表,其具有第二多数量的初始常量相关条件。在选择了第二个表作为基准表之后,方法300可以转到框308,以针对基准表执行框308-316的操作,以及可选地,执行框322的操作。
类似地,可以依次选择降序排序中排在第三位、第四位等等的表作为基准表,且方法300可以转到框308针对基准表执行框308-316和可选的框322的操作。在框320,将降序排序中排在最后一位的表选择作为基准表,并针对该基准表执行框308-316和框322的操作。
在框322,基于扩展后的查询条件,执行SQL Join计算。
根据图3所示的实施例,可以基于查询计划中的每个表来扩展其它关联表的常量相关条件,例如,基于第一个表来扩展查询计划中与该第一个表相关联的所有其它表的常量相关条件,基于第二个表(其的当前常量相关条件可能是基于第一个表的查询条件而经过扩展的常量相关条件)来扩展查询计划中与其相关联的所有其它表(例如可包括与其相关联的第一个表)的常量相关条件,依此类推,从而可以以迭代的方式将经降序排序的所有表依次分别选择作为基准表来扩展查询计划中使用的所有表的常量相关条件。
基于图3的查询计划优化方法,下文列出用于实现本申请的实施例的一种示例性算法实现的伪代码:
1 struct table_invest
2{
3 table t;
4 set<Column>related_column;
5};
6
7 map<Column,condition>condition_map;
8 map<Column,list<Column>>equality_column;
9 list<table_invest>used_table_list;
10
11 fill_condition_map_from_sql(condition_map);
12 fill_equality_column_from_sql(equality_column);
13
14 for(table t in table_list_of_sql){
15 table_invest ti;
16 ti=init_table_invest_from_table(t);
17 ti.t=t;
18 used_table_list.push_back(ti);
19}
20
21 while(!empty(used_table_list)){
22 sort_used_table_by_condition_num(used_table_list,condition_map);
23
24 ti=used_table_list.pop_first();
25 list<Column>column_list1;
26 fill_non_constant_column(ti,column_list1,condition_map);
27
28 string invest_sql;
29 invest_sql=generate_invest_sql(ti,column_list1,condition_map);
30 execute_invest_sql_fill_condition_map(invest_sql,ti,condition_map);
31 expend_invest_condition(ti,condition_map,equality_column);
32}
33 do_join_according_to_condition_map(condition_map);
在上文的算法实现中,伪代码第1-10行定义了算法所需的数据结构,包括结构体table_invest、两个映射表或函数(condition_map和equality_column)、以及查询计划中所使用的表的清单或列表(used_table_list)(如伪代码第7、8、9行分别所示的)。在本文中,映射表condition_map用于将SQL语句中每个表的每个查询相关列的常量相关条件进行映射存储或记录,如伪代码第11行所示。举例而言,假设SQL语句中t1表的c1列具有条件c1=8,那么将其记录为condition_map[t1.c1]="c1=8"并存储或填充到condition_map中。另一个映射表equality_column用于将SQL语句中查询所包含的列与列之间的等值或相等条件关系进行映射存储或记录,如伪代码第12行所示。举例而言,假设SQL语句中存在t1.c1=t2.c11且t1.c1=t3.c21,那么将其记录为equality_column[t1.c1]=list(t2.c11,t3.c21)并存储或填充到equality_column中。
上述的伪代码第14到20行对算法所需的数据结构进行初始化。在本文的示例性算法实现中,基于每个表在查询中所涉及的列来初始化每个表的table_invest并将其添加到used_table_list中。上述的伪代码将查询计划中的表t的相关列初始化到table_invest.related_column中。假设SQL语句为“...where t1.c1=t2.c11 and t1.c2>10”,那么可以通过table_invest.related_column.add(t1.c1).add(t1.c2)进行相关列的初始化。
伪代码第21-24行将非空的used_table_list中记录的表进行排序,例如,基于每个表所包含的常量相关条件的数量进行逆序排序,也即,包含常量相关条件数量最多的表被排在最前面。举例而言,如果识别出表t1具有2个常量相关条件,例如t1.c1=5或t1.c1>10,且该表t1具有的常量相关条件数量为最多,则将该表t1排在第一位。
伪代码第25-28行将一个table_invest.related_column中所有无对应常量相关条件的列记录到column_list1中。
伪代码第29-32行用于进行查询条件的自启发扩展,其提取used_table_list中常量条件最多或排名最前的table_invest,基于当前的常量条件拼接invest_sql来自启发其它无常量相关条件列的最大值和最小值,并将拼接的常量条件列记录为新的常量条件列组合,从而通过equality_column传递给其他相关联的表中的查询列。利用迭代方式将used_table_list中的每个表都用作基准表来扩展其它关联表的查询条件,从而将连接运算中所有相关的表都进一步扩展其常量相关条件列,以尽可能减少查询所需要挪动或传递的数据量。
在一些例子中,伪代码第29行用于生成自启发SQL语句,其基于condition_map中的条件,提取ti表中的所有常量相关条件,例如t1.c1=8、t1.c2>10,利用拼接SQL语句来获取column_list1中每一个列的最大值和最小值,例如,利用SQL语句“select max(t1.c4),min(t1.c4),max(t1.c5),min(t1.c5)from t1 where t1.c1=8and t1.c2>10;”来实现。
伪代码第30行用于执行invest_sql,并且将column_list1中的每一个列的最大值和最小值拼接为col>=min和col<=max,并将其记录到condition_map中。
伪代码第31-32行用于执行常量相关条件传递以扩展其它关联表的常量相关条件,其基于equality_column函数,将表ti的当前常量相关条件及新生成或拼接的col>=min和col<=max传递给其他等值条件列。例如,假设t1.c4=t2.c44,那么在向表t1添加或扩展了常量相关条件t1.c4>=4且t1.c4<=10之后,基于等值列关系,同样向表t2添加或扩展常量相关条件t2.c44>=4且t2.c44<=10。
伪代码第33行基于查询计划中自启发扩展后的查询条件,继续进行SQL Join运算。
基于上述的示例性算法实现的实施例可减少执行查询计划所需要挪动的数据量。举例而言,在执行SQL join语句“select...from t1 join t2where t1.c1=t2.c2 andt2.c3>5;”之前,其中t1为驱动表,可以基于“t2.c3>5”的常量相关条件,提前分析t2.c2的常量相关条件(例如大致的取值范围)。假设分析出t2.c2的取值范围是[1,100],那么可以基于等值列关系“t1.c1=t2.c2”将这个取值范围自启发扩展为t1.c1的查询条件,即“t1.c1>=1and t1.c1<=100”。因此,这样就可以基于后置表t2的常量条件提前对驱动表t1的数据进行筛选,从而减小在分布式SQL连接场景下表t1需要挪动的数据量。
下面以另一实施例对本申请系统的实现作进一步说明。图4示出了根据本申请实施例的用于分布式数据库中的查询计划优化的系统400的示意性结构图。在一些例子中,系统400可以包括选择模块402、评估模块404、生成模块406和传递模块408。
在本文的实施例中,选择模块402用于基于查询计划中的每个表的常量相关条件数量来选择基准表。在一些例子中,选择模块402用于将查询计划中具有最多数量的常量相关条件的表选择为基准表。在另一些例子中,选择模块402还用于将查询计划中具有第二多数量的常量相关条件的表选择为基准表。在又一些例子中,该系统400可以包括排序模块,其用于对查询计划中的所有表按照常量相关条件数量(例如,每个表的初始常量相关条件数量)进行降序排序。该选择模块402可以进一步用于以迭代方式将经降序排序的所有表依次分别选择作为基准表,例如首先将排序在第一位(即具有最多数量的常量相关条件)的表选择为基准表,并将该基准表的当前常量相关条件和针对该基准表中当前不具有常量相关条件的列评估出的常量相关条件传递给其它关联表,以扩展该查询计划中的其它表的查询条件;接着将排序在第二位(即具有第二多数量的常量相关条件)的表选择为基准表,并基于该基准表执行上文所述的查询条件优化或扩展;然后将排序在第三位的表选择为基准表,并基于该基准表执行上文所述的查询条件优化或扩展;依此类推。以此种迭代方式可以将查询计划中的所有表都分别选择作为基准表并针对该基准表执行查询条件优化或扩展,从而使得查询计划中的每个表的查询条件都得到扩展。
评估模块404用于基于基准表中的一个或多个当前常量相关条件,评估基准表中当前不具有常量相关条件的一个或多个列的常量相关条件,例如该一个或多个列的最大值和最小值。在一些例子中,评估模块404还可以用于提取基准表中的一个或多个当前常量相关条件,以及基于所提取的一个或多个当前常量相关条件,确定该基准表中当前不具有常量相关条件的一个或多个列的每个列的最大值和最小值。
生成模块406可以用于针对基准表,基于当前常量相关条件和所评估的常量相关条件,生成常量相关条件组合。在一些例子中,可以通过拼接针对基准表的当前常量相关条件和所评估的常量相关条件来生成常量相关条件组合。
传递模块408可以用于将常量相关条件组合传递给查询计划中与基准表相关联的一个或多个其它表以扩展每个表的查询条件。在一些例子中,该一个或多个表与基准表之间存在等值关系列。
进一步地,虽然未示出,但图4的系统400还可以包括执行模块,其用于基于经扩展的每个表的查询条件来执行SQL语句(例如SQL Join语句)。
图5示出了按照本申请的一个实施例的用于分布式数据库中的查询计划优化的装置500的示意图。
如图5所示,装置500可以包括处理器502和存储器504,其中,存储器504用于存储可执行指令,所述可执行指令当被执行时使得处理器502执行上文所述的方法。
本发明实施例还提供一种机器可读介质,其上存储有可执行指令,当所述可执行指令被执行时,使得机器执行上述的方法。
应当理解,以上描述的方法中的所有操作都仅仅是示例性的,本公开并不限制于方法中的任何操作或这些操作的顺序,而是应当涵盖在相同或相似构思下的所有其它等同变换。
还应当理解,以上描述的装置中的所有模块都可以通过各种方式来实施。这些模块可以被实施为硬件、软件、或其组合。此外,这些模块中的任何模块可以在功能上被进一步划分成子模块或组合在一起。上述用于处理分布式事务的方法、装置和机器可读介质均可以通过分布式数据库产品GreatDB Cluster来实现。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (14)

1.一种用于分布式数据库中的查询计划优化的方法,包括以下操作:
基于查询计划中的每个表的常量相关条件数量来选择基准表;
基于所述基准表中的一个或多个当前常量相关条件,评估所述基准表中不具有常量相关条件的一个或多个列的常量相关条件,包括:
提取所述基准表中的一个或多个当前常量相关条件;以及
基于所提取的一个或多个当前常量相关条件,确定所述不具有常量相关条件的一个或多个列的每个列的最大值和最小值;
针对所述基准表,基于所述当前常量相关条件和所评估的常量相关条件,生成常量相关条件组合;以及
将所述常量相关条件组合传递给所述查询计划中与所述基准表相关联的一个或多个其它表以扩展所述每个表的查询条件。
2.根据权利要求1所述的方法,其特征在于,所述一个或多个其它表与所述基准表之间存在等值条件列。
3.根据权利要求1所述的方法,其特征在于,所述生成操作进一步包括拼接针对所述基准表的所述当前常量相关条件和所评估的常量相关条件。
4.根据权利要求1所述的方法,其特征在于,所述选择操作进一步包括:将所述查询计划中具有最多数量的常量相关条件的表选择为所述基准表。
5.根据权利要求1所述的方法,其特征在于,还包括:
对所述查询计划中的所有表按照所述常量相关条件数量进行降序排序;以及
以迭代方式将经降序排序的所有表依次分别选择作为所述基准表。
6.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:基于扩展的每个表的查询条件,执行SQL join语句。
7.一种用于分布式数据库中的查询计划优化的系统,包括:
选择模块,用于基于查询计划中的每个表的常量相关条件数量来选择基准表;
评估模块,用于基于所述基准表中的一个或多个当前常量相关条件,评估所述基准表中不具有常量相关条件的一个或多个列的常量相关条件,以及进一步提取所述基准表中的一个或多个当前常量相关条件,以及基于所提取的一个或多个当前常量相关条件,确定所述不具有常量相关条件的一个或多个列的每个列的最大值和最小值;
生成模块,用于针对所述基准表,基于所述当前常量相关条件和所评估的常量相关条件,生成常量相关条件组合;以及
传递模块,用于将所述常量相关条件组合传递给所述查询计划中与所述基准表相关联的一个或多个其它表以扩展所述每个表的查询条件。
8.根据权利要求7所述的系统,其特征在于,所述一个或多个其它表与所述基准表之间存在等值条件列。
9.根据权利要求7所述的系统,其特征在于,所述生成模块进一步用于拼接针对所述基准表的所述当前常量相关条件和所评估的常量相关条件。
10.根据权利要求7所述的系统,其特征在于,所述选择模块还用于将所述查询计划中具有最多数量的常量相关条件的表选择为所述基准表。
11.根据权利要求7所述的系统,还包括:
排序模块,用于对所述查询计划中的所有表按照所述常量相关条件数量进行降序排序;以及
所述选择模块进一步用于以迭代方式将经降序排序的所有表依次分别选择作为所述基准表。
12.根据权利要求7所述的系统,还包括:执行模块,用于基于扩展的每个表的查询条件,执行SQL join语句。
13.一种用于分布式数据库中的查询计划优化的装置,包括:
处理器;以及
存储器,用于存储可执行指令,其中,所述可执行指令当被执行时使得所述处理器执行权利要求1-6所述的方法。
14.一种机器可读介质,其上存储有可执行指令,其中,所述可执行指令当被执行时,使得机器执行权利要求1-6所述的方法。
CN202110467942.0A 2021-04-28 2021-04-28 分布式数据库中的查询计划优化方法及系统 Active CN113157736B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110467942.0A CN113157736B (zh) 2021-04-28 2021-04-28 分布式数据库中的查询计划优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110467942.0A CN113157736B (zh) 2021-04-28 2021-04-28 分布式数据库中的查询计划优化方法及系统

Publications (2)

Publication Number Publication Date
CN113157736A CN113157736A (zh) 2021-07-23
CN113157736B true CN113157736B (zh) 2024-01-05

Family

ID=76872027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110467942.0A Active CN113157736B (zh) 2021-04-28 2021-04-28 分布式数据库中的查询计划优化方法及系统

Country Status (1)

Country Link
CN (1) CN113157736B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099300A (ja) * 2001-09-21 2003-04-04 Bank Of Tokyo-Mitsubishi Ltd データベース管理装置、方法、プログラム及び記録媒体
CN103678621A (zh) * 2013-12-18 2014-03-26 上海达梦数据库有限公司 基于常量替换的sql语句优化方法
CN106844405A (zh) * 2015-12-07 2017-06-13 杭州海康威视数字技术股份有限公司 数据查询方法和装置
CN109947804A (zh) * 2019-03-20 2019-06-28 上海达梦数据库有限公司 数据集合查询的优化方法、装置、服务器和存储介质
JP2021005195A (ja) * 2019-06-26 2021-01-14 日本製鉄株式会社 工程支援装置、工程支援方法およびプログラム
CN112286964A (zh) * 2020-11-19 2021-01-29 上海达梦数据库有限公司 一种sql语句优化方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11386086B2 (en) * 2018-08-30 2022-07-12 International Business Machines Corporation Permutation-based machine learning for database query optimization

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099300A (ja) * 2001-09-21 2003-04-04 Bank Of Tokyo-Mitsubishi Ltd データベース管理装置、方法、プログラム及び記録媒体
CN103678621A (zh) * 2013-12-18 2014-03-26 上海达梦数据库有限公司 基于常量替换的sql语句优化方法
CN106844405A (zh) * 2015-12-07 2017-06-13 杭州海康威视数字技术股份有限公司 数据查询方法和装置
CN109947804A (zh) * 2019-03-20 2019-06-28 上海达梦数据库有限公司 数据集合查询的优化方法、装置、服务器和存储介质
JP2021005195A (ja) * 2019-06-26 2021-01-14 日本製鉄株式会社 工程支援装置、工程支援方法およびプログラム
CN112286964A (zh) * 2020-11-19 2021-01-29 上海达梦数据库有限公司 一种sql语句优化方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
research on query optimization technology in distributed database;Wu Bozhu;《advanced materials research》;全文 *
分布式数据库查询优化的研究与实现;聂小雄;中国优秀硕士学位论文全文数据库 信息科技辑(2020年第7期);全文 *

Also Published As

Publication number Publication date
CN113157736A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
US11775501B2 (en) Trace and span sampling and analysis for instrumented software
US7840592B2 (en) Estimating a number of rows returned by a recursive query
US8688682B2 (en) Query expression evaluation using sample based projected selectivity
US20140114952A1 (en) Optimizing queries of parallel databases
US7606827B2 (en) Query optimization using materialized views in database management systems
US20090327220A1 (en) Automated client/server operation partitioning
US20150310066A1 (en) Processing queries using hybrid access paths
CN106569896B (zh) 一种数据分发及并行处理方法和系统
US10726006B2 (en) Query optimization using propagated data distinctness
US8812492B2 (en) Automatic and dynamic design of cache groups
US10936606B2 (en) Method and system for processing data in a parallel database environment
US20160342652A1 (en) Database query cursor management
US20110179013A1 (en) Search Log Online Analytic Processing
CN108509453B (zh) 一种信息处理方法及装置
US10846291B2 (en) Transforming a user-defined table function to a derived table in a database management system
CN112970011A (zh) 记录查询优化中的谱系
US20230153286A1 (en) Method and system for hybrid query based on cloud analysis scene, and storage medium
CN113157736B (zh) 分布式数据库中的查询计划优化方法及系统
US11720563B1 (en) Data storage and retrieval system for a cloud-based, multi-tenant application
CN113625967B (zh) 数据存储方法、数据查询方法及服务器
US7725461B2 (en) Management of statistical views in a database system
CN111159213A (zh) 一种数据查询方法、装置、系统和存储介质
US8290935B1 (en) Method and system for optimizing database system queries
US20220164396A1 (en) Metadata indexing for information management
US11874830B2 (en) Efficient job writing for database member

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