CN107251013A - 数据查询的方法、装置和数据库系统 - Google Patents
数据查询的方法、装置和数据库系统 Download PDFInfo
- Publication number
- CN107251013A CN107251013A CN201580005935.1A CN201580005935A CN107251013A CN 107251013 A CN107251013 A CN 107251013A CN 201580005935 A CN201580005935 A CN 201580005935A CN 107251013 A CN107251013 A CN 107251013A
- Authority
- CN
- China
- Prior art keywords
- predicate
- connection
- query plan
- rank
- recombination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
-
- 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
- G06F16/24545—Selectivity estimation or determination
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
一种数据查询的方法、装置和数据库系统。该方法包括:接收数据查询请求(S1110);根据该数据查询请求,生成原始查询计划(S1120);根据所述原始查询计划,获取候选查询计划集合(S1130);重组该原始查询计划中的连接谓词(S1140);确定该原始查询计划的重组后的连接谓词的基本信息(S1150);基于连接操作规则,确定该原始查询计划的重组后的连接谓词的约束条件(S1160);根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划(S1170);根据该原始查询计划的等价查询计划进行查询(S1180)。该数据查询的方法、装置和数据库系统能够提升数据查询性能。
Description
本发明涉及信息技术领域,并且更具体地,涉及数据查询的方法、装置和数据系统。
结构化查询语言(Structured Query Language,SQL)是关系数据库管理系统的标准语言。它是一种高级的描述性非过程化语言,即它允许用户在高层数据结构上获取所需要的数据,但是它不要求用户指定获取数据的方法,即通常所说的查询计划。查询计划可以表示为一颗树,树的叶子节点表示输入表,中间节点表示操作。一个SQL查询通常会有很多等价的查询计划,而且不同查询计划的执行时间会有差别,所以数据库系统会有一个查询优化器组件来选择最优(即执行时间最短)的查询计划。
查询优化器的主要功能是确定原始查询计划的等价查询计划并选择最优的查询计划。然而,现有技术中有些等价查询计划会被遗漏,从而影响查询性能。
发明内容
本发明实施例提供了一种数据查询的方法、装置和数据库系统,能够提升数据查询性能。
第一方面,本发明实施例提供了一种数据查询的方法,该方法由数据库系统执行,该数据库系统运行在计算机设备上,该方法包括:
接收数据查询请求;
根据该数据查询请求,生成原始查询计划;
重组该原始查询计划中的连接谓词;
确定该原始查询计划的重组后的连接谓词的基本信息;
基于连接操作规则,确定该原始查询计划的重组后的连接谓词的约束条件;
根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划;
根据该原始查询计划的等价查询计划进行查询。
本发明实施例根据谓词基本信息和基于连接操作规则得到的约束条件确定原始查询计划的等价查询计划,可以得到原始查询计划的较多的等价查询计划,从而能够提升数据查询性能。
在某些实现方式中,根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划,包括:
根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划集合;
根据该原始查询计划的等价查询计划进行查询,包括:
从该等价查询计划集合中选择查询计划进行查询。
在某些实现方式中,该方法还包括:
根据该原始查询计划,获取候选查询计划集合;
这里应获取尽可能多的原始查询计划的候选查询计划,优选的,可以使用查询计划枚举算法枚举原始查询计划的所有候选查询计划,可采用典型的枚举算法,如IBM System R中使用的动态规划算法。
根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划集合,包括:
根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,在该候选查询计划集合中确定该等价查询计划集合。
本发明实施例根据谓词基本信息和基于连接操作规则得到的约束条件在候选查询计划集合中确定原始查询计划的等价查询计划,可以得到原始查询计划的所有等价查询计划,从而能够进一步提升数据查询性能。
在某些实现方式中,重组该原始查询计划中的连接谓词,包括:
对于该原始查询计划中的内连接操作,将该内连接操作的所有连接谓词转化成合取范式并合并具有相同输入表的连接谓词;
对于该原始查询计划中的非内连接操作,将该非内连接操作的所有连接谓词合并成一个连接谓词。
在某些实现方式中,该连接谓词的基本信息包括该连接谓词的输入表,该连接谓词所在连接操作的左子树中包括的该连接谓词的输入表,该连接谓词所在连接操作的右子树中包括的该连接谓词的输入表和该连接谓词所在连接操作的连接类型。
在某些实现方式中,该连接操作规则包括操作级别的规则和谓词级别的规则,其中,该操作级别的规则包括操作级别的交换规则e1oa p12e2=e2oa p12e1、操作级别的结合规则(e1oa p12e2)ob p23e3=e1oa p12(e2ob p23e3)、操作级别的左置换规则(e1oa p12e2)ob p13e3=(e1ob p13e3)oa p12e2和操作级别的右置换规则e1oa p13(e2ob p23e3)=e2ob p23(e1oa p13e3),该谓词级别的规则包括谓词级别的结合规则(e1oa p12e2)ob p∧p23e3=e1oa p12∧p(e2ob p23e3)、谓词级别的左置换规则(e1oa p12e2)ob p13∧p e3=(e1ob p13e3)oa p12∧p e2和谓词级别的右置换规则e1oa p∧p13(e2ob p23e3)=e2ob p∧p23(e1oa p13e3),其中,ei为查询表达式,oa,ob为连接操作,pij为ei和ej之间的连接谓词。
在某些实现方式中,基于连接操作规则,确定该原始查询计划的重组后的连接谓词的约束条件,包括:
对于该原始查询计划中的每个连接操作节点oB,遍历以oB为根节点的子树中的每一个连接操作节点oA,
oA在以oB为根节点的子树的左子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第一约束条件,若oA和oB不满足操作级别的左置换规则和谓词级别的左置换规则,则为oB上的重组后的每个连接谓词添加第二约束条件;
oA在以oB为根节点的子树的右子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第二约束条件,若oA和oB不满足操作级别的右置换规则和谓词级别的右置换规则,则为oB上的重组后的每个连接谓词添加第一约束条件;
该第一约束条件为T(e2)->T(e1)∩T(pa1∧pa2∧…∧pan),该第二约束条件为T(e1)->T(e2)∩T(pa1∧pa2∧…∧pan),T(e1)表示以oA为根节点的子树的左子树e1包括的原始输入表,T(e2)表示以oA为根节点的子树的右子树e2包括的原始输入表,T(pa1∧pa2∧…∧pan)表示oA上的重组后的连接谓词pa1∧pa2∧…∧pan中包括的原始输入表,T1->T2表示若以T1->T2所约束的连接谓词所在的连接操作为根节点的第一子树包括T1中的任意一个输入表,则该第一子
树包括T2中的所有输入表。
在某些实现方式中,根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划,包括:
若第一候选查询计划P’满足以下条件,则确定P’为该原始查询计划P的等价查询计划:
P’的每个第一连接操作的连接类型是内连接,该第一连接操作为具有两个以上重组后的连接谓词的连接操作,且该两个以上重组后的连接谓词中的每个连接谓词在P中所对应的连接操作的连接类型是内连接;
对于P’中每个连接操作ob’上的每个连接谓词p,
在ob’不满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中的Tr(p)和P中的Tr(p)相等,其中,Tl(p)表示p所在连接操作的左子树中包括的p的输入表,Tr(p)表示p所在连接操作的右子树中包括的p的输入表,
在ob’满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中Tr(p)和P中的Tr(p)相等,或者P’中的Tl(p)和P中的Tr(p)相等且P’中的Tr(p)和P中的Tl(p)相等;
对于P’中每个连接操作ob’上的每个连接谓词p,p满足p在P中的约束条件。
在某些实现方式中,从该等价查询计划集合中选择查询计划进行查询,包括:
从该等价查询计划集合中选择代价最小的查询计划进行查询。
第二方面,本发明实施例提供了一种数据查询的装置。该装置包括执行第一方面的方法的模块。
第三方面,本发明实施例提供了一种数据查询的装置。该装置包括处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第一方面的方法。
第四方面,本发明实施例提供了一种数据库系统。该数据库系统包括第二方面或第三方面的数据查询的装置和数据库。
在某些实现方式中,原始查询计划的等价查询计划为通过四个操作级别
的规则和三个谓词级别的规则中的至少一个规则从该原始查询计划转化得到的查询计划。
在某些实现方式中,等价查询计划空间包括通过四个操作级别的规则和三个谓词级别的规则中的至少一个规则从原始查询计划转化得到的查询计划。
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a和图1b是本发明实施例的应用场景的示意图。
图1c是本发明实施例的连接操作的示例。
图2是本发明实施例的等价查询计划的示例。
图3是本发明实施例的操作级别的交换规则的示例。
图4是本发明实施例的操作级别的结合规则的示例。
图5是本发明实施例的操作级别的左置换规则的示例。
图6是本发明实施例的为操作级别的右置换规则的示例。
图7是本发明实施例的谓词级别的结合规则的示例。
图8是本发明实施例的谓词级别的左置换规则的示例。
图9是本发明实施例的谓词级别的右置换规则的示例。
图10是本发明实施例的等价查询计划的示例。
图11是本发明实施例的数据查询的方法的示意性流程图。
图12是本发明实施例的查询计划的示例。
图13是本发明实施例的确定原始查询计划中谓词约束条件的流程图。
图14是本发明实施例的添加约束条件的一个示意图。
图15是本发明实施例的添加约束条件的另一示意图。
图16是本发明实施例的确定等价查询计划的示例。
图17是本发明实施例的数据查询的装置的示意性框图。
图18是本发明实施例的数据库系统的示意性框图。
图19是本发明实施例的数据查询的装置的结构示意图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明实施例的技术方案可以应用于数据库系统中。图1a和图1b是本发明实施例的应用场景的示意图,其中,图1a为单服务器的数据库系统,图1b为分布式数据库系统。
如图1a所示,单服务器的数据库系统(即服务器)包括数据库管理系统和数据库,用于处理客户端的查询请求并向客户端返回查询结果,其中数据库管理系统包括查询优化器等管理组件,用于管理该数据库系统。针对该场景,本发明实施例的方法可以由服务器、或服务器中的数据库管理系统、或数据库管理系统中的查询优化器执行。
如图1b所示,分布式数据库系统包括多个服务器和分布式管理系统,用于处理客户端的查询请求并向客户端返回查询结果,其中每个服务器包括数据库管理系统和数据库,分布式管理系统包括查询优化器等管理组件,用于管理该分布式数据库系统。针对该场景,本发明实施例的方法可以由分布式数据库系统、或分布式数据库系统中的分布式管理系统、或分布式管理系统中的查询优化器执行。
为了便于理解本发明实施例,下面首先对数据库系统相关的术语进行说明。
在本发明的各种实施例中,连接操作也可以称之为操作或连接,连接操作将数据库中的两个或多个表组合成一个结果表。连接谓词也可以称之为谓词,连接谓词用来描述两个或多个表中列的关系。连接操作通过连接谓词将数据库中的表组合起来。
连接操作种类有内连接(inner join),左/右外连接(left/right outer join),全外连接(full outer join),左/右半连接(left/right semi-join)和左/右反连接(left/right anti-join)。
内连接(inner join)是数据库中最普通的连接操作。内连接基于连接谓词将两张表(如R和S)的列组合在一起,产生新的结果表。该操作会将R表的
每一行和S表的每一行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,R和S中匹配的行会按列组合(并排组合)成结果集中的一行。
左外连接(left outer join)是内连接的一个扩展,它与内连接的不同之处在于,若R和S两表进行左外连接,如果左表(即表R)中的一行在右表S未找到符合连接谓词的匹配行,不同于内连接会直接舍弃该记录,左外连接还是会返回一条记录,该记录保留了左表中所有的列值,但是所有来自于右表的每一列的值都为空(NULL)。右外连接(right outer join)类似于左外连接,唯一的不同之处在于如果右表中的一行在左表中没有找到匹配行,那么该操作返回的记录中所有来自于左表的每一列的值都为空。全外连接(full outer join)类似于左/右外连接,唯一的区别在于无论左表还是右表中的一行没有找到匹配行,该操作都会返回一个记录并且该记录中缺少匹配的表的列值都为空。
左半连接(left semi-join)只返回左表中那些能够在右表中找到匹配(即满足连接谓词)的行。右半连接(right semi-join)只返回右表中那些能在左表中找到匹配(即满足连接谓词)的行。
左反连接(left anti-join)只返回左表中那些未能在右表中找到匹配(即满足连接谓词)的行。右反连接(right anti-join)只返回右表中那些未能在左表中找到匹配(即满足连接谓词)的行。由半连接和反连接的定义可以看出,反连接和半连接是互为补集的关系。
图1c示出了上述各种连接操作的示例。在图1c中,以对表R和S进行连接操作为例,其中连接谓词为R.b=S.c,各种连接操作的结果如图1c所示。
图2示出了等价查询计划的示例。如图2所示,对于一个SQL查询R1∞p12R2∞p23R3,其中,R1、R2和R3表示输入表,∞表示内连接操作,p12和p23分别表示R1和R2的连接谓词和R2和R3的连接谓词,图2中两个查询计划都是该查询的等价查询计划。
在本发明各种实施例中,连接操作规则包括操作级别的规则和谓词级别的规则,其中,操作级别的规则包括操作级别的交换规则、操作级别的结合规则、操作级别的左置换规则和操作级别的右置换规则,谓词级别的规则包括谓词级别的结合规则、谓词级别的左置换规则和谓词级别的右置换规则。在以下说明中,各符号的意义如表1所示。
表1
操作级别的交换规则:e1oa p12e2=e2oa p12e1。图3为操作级别的交换规则的一个示例。表2为操作级别的交换规则的连接操作表,示出了各个连接操作是否满足操作级别的交换规则,其中,+表示满足,-表示不满足。应理解,由于右外连接,右半连接和右反连接可以转化成相对应的左连接操作,所以本说明书中只考虑左连接操作。
表2
操作级别的结合规则:(e1oa p12e2)ob p23e3=e1oa p12(e2ob p23e3)。图4为操作级别的结合规则的一个示例。表3为操作级别的结合规则的连接操作表,示出了任意两个连接操作是否满足操作级别的结合规则,其中,+表示满足,-表示不满足,含有上标的+表示条件满足,即只有满足了上标中的条件,对应的两个连接操作才满足该结合规则。
表3
内连接 | 左半连接 | 左反连接 | 左外连接 | 全外连接 | |
内连接 | + | + | + | + | - |
左半连接 | - | - | - | - | - |
左反连接 | - | - | - | - | - |
左外连接 | - | - | - | +1 | - |
全外连接 | - | - | - | +1 | +2 |
1p23rejects null on A(e2) 2p12and p23rejects null on A(e2)
操作级别的左置换规则:(e1oa p12e2)ob p13e3=(e1ob p13e3)oa p12e2。图5为操作级别的左置换规则的一个示例。表4为操作级别的左置换规则的连接操作表,示出了任意两个连接操作是否满足操作级别的左置换规则,其中,+表示满足,-表示不满足,含有上标的+表示条件满足,即只有满足了上标中的条件,对应的两个连接操作才满足该左置换规则。
表4
内连接 | 左半连接 | 左反连接 | 左外连接 | 全外连接 | |
内连接 | + | + | + | + | - |
左半连接 | + | + | + | + | - |
左反连接 | + | + | + | + | - |
左外连接 | + | + | + | + | +1 |
全外连接 | - | - | - | +2 | +3 |
1p12rejects null on A(e1) 2p13rejects null on A(e3)
3p12and p13rejects null on A(e1)
操作级别的右置换规则:e1oa p13(e2ob p23e3)=e2ob p23(e1oa p13e3)。图6为为操作级别的右置换规则的一个示例。表5为操作级别的右置换规则的连接操作表,示出了任意两个连接操作是否满足操作级别的右置换规则,其中,+表示满足,-表示不满足,含有上标的+表示条件满足,即只有满足了上标中的条件,对应的两个连接操作才满足该右置换规则。
表5
内连接 | 左半连接 | 左反连接 | 左外连接 | 全外连接 | |
内连接 | + | - | - | - | - |
左半连接 | - | - | - | - | - |
左反连接 | - | - | - | - | - |
左外连接 | - | - | - | - | - |
全外连接 | - | - | - | - | +1 |
1p13and p23rejects null on A(e3)
在上述操作级别的规则中,操作中的连接谓词与操作是绑定在一块的,
即连接谓词不能在操作间互相移动。区别于操作级别的规则,谓词级别的规则可以在操作间互相移动谓词。
谓词级别的结合规则:(e1oa p12e2)ob p∧p23e3=e1oa p12∧p(e2ob p23e3)。∧表示逻辑与操作,p代表除p23以外的连接谓词,并且p不为空。图7为谓词级别的结合规则的一个示例。
谓词级别的左置换规则:(e1oa p12e2)ob p13∧p e3=(e1ob p13e3)oa p12∧p e2。∧表示逻辑与操作,p代表除p13以外的连接谓词,并且p不为空。图8为谓词级别的左置换规则的一个示例。
谓词级别的右置换规则:e1oa p∧p13(e2ob p23e3)=e2ob p∧p23(e1oa p13e3)。∧表示逻辑与操作,p代表除p13以外的连接谓词,并且p不为空。图9为谓词级别的右置换规则的一个示例。
表6为谓词级别的规则的连接操作表,示出了任意两个连接操作是否满足谓词级别的规则,其中,+表示满足,-表示不满足。上述三个谓词级别的规则的连接操作表是一样的,即表6统一代表了三个谓词级别的规则的连接操作表。
表6
内连接 | 左半连接 | 左反连接 | 左外连接 | 全外连接 | |
内连接 | + | - | - | - | - |
左半连接 | - | - | - | - | - |
左反连接 | - | - | - | - | - |
左外连接 | - | - | - | - | - |
全外连接 | - | - | - | - | - |
在本发明实施例中,所有可以通过上述操作级别的规则或谓词级别的规则转化得到的查询计划为等价查询计划。也就是说,本发明实施例中的等价的查询计划空间为所有可以通过四个操作级别的规则和三个谓词级别的规则中的至少一个规则转化得到的查询计划。操作间是否满足某个规则可查询该规则的连接操作表。
相比于仅通过操作级别的规则转化得到的等价的查询计划空间,本发明实施例中的等价的查询计划空间更完整。也就是说,仅通过操作级别的规则进行转化并不能得到全部的等价查询计划。例如,如图10所示,相对于左
边的原始查询计划,右边的两个候选查询计划移动了操作间的连接谓词,所以他们并不能由左边的原始查询计划通过上述四个操作级别的规则转化得到,但是事实上右边的两个候选查询计划与左边的原始查询计划是等价的。
本发明实施例基于操作级别的规则和谓词级别的规则确定原始查询计划的等价查询计划,可以得到原始查询计划的所有等价查询计划。
图11示出了根据本发明实施例的数据查询的方法1100的示意性流程图。该方法1100由数据库系统执行,数据库系统运行在计算机设备上。具体的,该方法由运行在计算机上的数据查询的装置执行,其中数据查询的装置可以为数据库系统中的装置,例如查询优化器,也可以为数据库系统本身。
S1110,接收数据查询请求。
例如,该数据查询请求可以为用户以SQL语言输入的数据查询请求。
S1120,根据该数据查询请求,生成原始查询计划。
在接收到数据查询请求后,解析该数据查询请求,得到原始查询计划。
可选地,S1130,根据该原始查询计划,获取候选查询计划集合。
候选查询计划集合包括原始查询计划的所有候选查询计划。该步骤可以使用查询计划枚举算法枚举原始查询计划的所有候选查询计划。例如,典型的枚举算法有IBM System R中使用的动态规划算法。
在枚举原始查询计划的所有候选查询计划后,接下来可以在所有候选查询计划中确定原始查询计划的等价查询计划。
该步骤为可选步骤,也就是说,本发明实施例既可以通过下面的步骤直接从原始查询计划得到等价查询计划或等价查询计划集合,也可以通过下面的步骤从候选查询计划集合中得到等价查询计划集合。
S1140,重组该原始查询计划中的连接谓词。
具体地,对于该原始查询计划中的内连接操作,将该内连接操作的所有连接谓词转化成合取范式并合并具有相同输入表的连接谓词;对于该原始查询计划中的非内连接操作,将该非内连接操作的所有连接谓词合并成一个连接谓词。
换句话说,重组方式为遍历原始查询计划中的每一个连接操作节点,并根据该连接操作节点的连接类型分以下两种情况处理:
如果该连接操作是内连接,那么把该连接操作的所有的谓词转化成合取范式(conjunctive normal form,CNF),即p1∧p2∧…∧pn的形式,并把具有
相同输入表的谓词合并成一个谓词;
如果该连接操作不是内连接,把该连接操作中的所有谓词合并成一个谓词。
S1150,确定该原始查询计划的重组后的连接谓词的基本信息。
在本发明各种实施例中,连接谓词的基本信息包括该连接谓词的输入表,该连接谓词所在连接操作的左子树中包括的该连接谓词的输入表,该连接谓词所在连接操作的右子树中包括的该连接谓词的输入表和该连接谓词所在连接操作的连接类型。
具体地,对于谓词p,该谓词p的基本信息包括:
T(p):p包括的输入表;
Tl(p):p所在操作的左子树中包括的p的输入表;
Tr(p):p所在操作的右子树中包括的p的输入表;
O(p):p所在操作的连接类型。
例如,对于图12中所示的根节点的连接谓词p={R1.a+R2.b=R3.c},它的基本信息如下:
T(p):{R1,R2,R3};
Tl(p):{R1,R2};
Tr(p):{R3};
O(p):内连接。
S1160,基于连接操作规则,确定该原始查询计划的重组后的连接谓词的约束条件。
具体而言,对于该原始查询计划中的每个连接操作节点oB,遍历以oB为根节点的子树中的每一个连接操作节点oA,
oA在以oB为根节点的子树的左子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第一约束条件,若oA和oB不满足操作级别的左置换规则和谓词级别的左置换规则,则为oB上的重组后的每个连接谓词添加第二约束条件;
oA在以oB为根节点的子树的右子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第二约束条件,若oA和oB不满足操作级别的右置换规则和谓词级别的右置换规则,则为oB上的重组后的每个连接谓词添加第一约束条件;
该第一约束条件为T(e2)->T(e1)∩T(pa1∧pa2∧…∧pan),该第二约束条件为T(e1)->T(e2)∩T(pa1∧pa2∧…∧pan),T(e1)表示以oA为根节点的子树的左子树e1包括的原始输入表,T(e2)表示以oA为根节点的子树的右子树e2包括的原始输入表,T(pa1∧pa2∧…∧pan)表示oA上的重组后的连接谓词pa1∧pa2∧…∧pan中包括的原始输入表,T1->T2表示若以T1->T2所约束的连接谓词所在的连接操作为根节点的第一子树包括T1中的任意一个输入表,则该第一子树包括T2中的所有输入表。∩为交集符号。
例如,图13示出了确定原始查询计划中谓词约束条件的一个流程图。图13所示的流程包含两层遍历,外层遍历原始查询计划中的每一个操作节点oB(oB上重组后的谓词是pb1∧pb2∧…∧pbn),内层遍历以oB为根节点的查询子树中的每一个操作节点oA(oA上重组后的谓词是pa1∧pa2∧…∧pan),然后根据oA和oB的关系分以下两种情况为oB上每个谓词添加约束条件:
如果oA在oB左子树中,那么按照图14所示方法为oB上每一个谓词pbi添加约束条件;
如果oA在oB右子树中,那么按照图15所示方法为oB上每一个谓词pbi添加约束条件。
S1170,根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划。
可选地,可以根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划集合。该等价查询计划集合中的查询计划为该原始查询计划的等价查询计划。
在该步骤中,可选地,若已经通过枚举方式得到了原始查询计划的候选查询计划集合,则可以在候选查询计划集合中确定等价查询计划集合,即判断每个候选查询计划是否原始查询计划的等价查询计划;若没有候选查询计划集合,则可以每次从原始查询计划得到一个候选查询计划,同时判断该候选查询计划是否原始查询计划的等价查询计划。
具体地,若第一候选查询计划P’满足以下条件,则确定P’为该原始查询计划P的等价查询计划:
P’的每个第一连接操作的连接类型是内连接,该第一连接操作为具有两
个以上重组后的连接谓词的连接操作,且该两个以上重组后的连接谓词中的每个连接谓词在P中所对应的连接操作的连接类型是内连接(该条件可以称为连接类型一致性);
对于P’中每个连接操作ob’上的每个连接谓词p,
在ob’不满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中的Tr(p)和P中的Tr(p)相等,其中,Tl(p)表示p所在连接操作的左子树中包括的p的输入表,Tr(p)表示p所在连接操作的右子树中包括的p的输入表,
在ob’满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中Tr(p)和P中的Tr(p)相等,或者P’中的Tl(p)和P中的Tr(p)相等且P’中的Tr(p)和P中的Tl(p)相等(该条件可以称为输入表信息一致性);
对于P’中每个连接操作ob’上的每个连接谓词p,p满足p在P中的约束条件(该条件可以称为约束条件一致性)。如果前面已经得到了原始查询计划的候选查询计划集合,这里的第一候选查询计划P’可以是候选查询计划中的任一候选查询计划。
通过上述方式,可以得到原始查询计划的所有等价查询计划。也就是说,本发明实施例中得到的等价查询计划集合是最完整的。
S1180,根据该原始查询计划的等价查询计划进行查询。
可选地,可以从该等价查询计划集合中选择查询计划进行查询。即在前面得到的等价查询计划集合中选择查询计划进行查询。具体地,可以从该等价查询计划集合中选择代价最小的查询计划进行查询,并返回查询结果。
由于本发明实施例中的等价查询计划集合包括了原始查询计划的所有等价查询计划,因此本发明实施例能选到最优的查询计划。考虑到不同查询计划会有几十倍甚至几百倍的性能差异,本发明实施例的方法能显著提高数据查询性能。
因此,本发明实施例的数据查询的方法,根据谓词基本信息和基于连接操作规则得到的约束条件确定原始查询计划的等价查询计划,可以得到原始查询计划的所有等价查询计划,从而能够提升数据查询性能。
在本发明实施例中,等价查询计划集合包括所有可以通过四个操作级别的规则和三个谓词级别的规则中的至少一个规则从原始查询计划转化得到的查询计划。上述步骤S1140-S1170给出了确定原始查询计划的等价查询计
划的方法。下面结合具体的例子详细说明确定原始查询计划的等价查询计划的方法。应注意,这只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
图16示出了三个查询计划P,P’和P”,其中∞表示内连接操作,表示左反连接,P是原始查询计划,P’和P”是候选查询计划。可按照下述方式确定候选查询计划P’和P’是否和原始查询计划P等价。
1.重组原始查询计划P中的连接谓词并确定重组后的连接谓词的基本信息:P中一共包括三个连接操作(即∞p14∧p34, p23和∞p12)。对于连接操作∞p14∧p34,由于该连接操作是内连接,所以它的谓词需要被转化成合取范式(p14∧p34的合取范式就是它本身),由于p14和p34的输入表不相同,所以它们不能被合并成一个谓词。对于连接操作 p23,由于该连接操作不是内连接,所以它的谓词(即p23)被当成一个谓词。类似地,连接操作∞p12中的谓词进行重组后仍为p12。谓词重组之后,确定重组后谓词的基本信息。表7列出了P中重组后谓词的基本信息。
表7
p | T(p) | Tl(p) | Tr(p) | O(p) |
p14 | {R1,R4} | {R1} | {R4} | 内连接 |
p34 | {R3,R4} | {R3} | {R4} | 内连接 |
p23 | {R2,R3} | {R2} | {R3} | 左反连接 |
p12 | {R1,R2} | {R1} | {R2} | 内连接 |
2.确定重组后连接谓词的约束条件:对于操作∞p14∧p34,它有两个子孙操作(即∞p12和 p23),所以需要判断这两个子孙操作和该操作是否满足相应规则来获取谓词p14和p34的约束条件。对于子孙操作∞p12,它跟操作∞p14 ∧p34既满足操作级别的结合规则和谓词级别的结合规则,也满足操作级别的左置换规则和谓词级别的左置换规则,所以不需要添加任何约束规则。对于子孙操作 p2,它跟操作∞p14∧p34不满足操作级别的结合规则和谓词级别的结合规则,所以需要为p14和p34添加规则R3->R2。另外 p2跟操作∞p14∧p34不满足谓词级别的左置换规则,但是满足操作级别的左置换规则,所以不需要再添加约束规则。类似地,可以通过判断操作∞p12和 p23与其子孙操作是否满足相应规则来获取他们的谓词的约束条件。表8列出了原始查询P中重组后谓词的约束条件。
表8
p | 约束条件 |
p14 | R3->R2 |
p34 | R3->R2 |
p23 | 无 |
p12 | 无 |
3.根据谓词的基本信息和约束条件确定等价查询计划:对于候选查询计划P’,它跟原始查询计划P是不等价的,因为P’违反了连接类型一致性(P’的根节点操作包含了两个谓词,但是该节点的操作类型不是内连接,而且p23在P中所对应的操作的连接类型也不是内连接)。对于候选查询P”,因为它满足连接类型一致性(P”中的操作∞p12∧p34是内连接,并且p12和p34在原始查询P中所对应的操作也是内连接),输入表信息一致性(P”中谓词的输入表信息和表中谓词的输入表信息是一致的)和约束条件一致性(P”中的谓词满足表中所示的约束条件),所以P”跟原始查询计划P是等价的。
本发明实施例的确定等价查询计划的方法,能够得到原始查询计划的所有等价查询计划,从而能够提升数据查询的查询性能。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文详细描述了根据本发明实施例的数据查询的方法,下面将描述根据本发明实施例的数据查询的装置和数据库系统。该数据查询的装置和该数据库系统可以执行前述本发明实施例的数据查询的方法。
图17示出了根据本发明实施例的数据查询的装置1700的示意性框图。该装置1700可以为数据库系统中的装置,例如查询优化器。如图17所示,该装置1700包括:
接收模块1710,用于接收数据查询请求;
生成模块1720,用于根据该数据查询请求,生成原始查询计划;
重组模块1740,用于重组该原始查询计划中的连接谓词;
确定模块1750,用于确定该原始查询计划的重组后的连接谓词的基本信息;基于连接操作规则,确定该原始查询计划的重组后的连接谓词的约束条件;以及根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询
计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划;
查询模块1780,用于根据该原始查询计划的等价查询计划进行查询。
本发明实施例的数据查询的装置,根据谓词基本信息和基于连接操作规则得到的约束条件确定原始查询计划的等价查询计划,可以得到原始查询计划的所有等价查询计划,从而能够提升数据查询性能。
可选地,在本发明一个实施例中,该确定模块1750具体用于,根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,确定该原始查询计划的等价查询计划集合;
该查询模块1780具体用于,从该等价查询计划集合中选择查询计划进行查询。
可选地,在本发明一个实施例中,该装置1700还可以包括:
获取模块1730,用于根据该原始查询计划,获取候选查询计划集合;
在这种情况下,该确定模块1750具体用于,根据该原始查询计划的重组后的连接谓词的基本信息和该原始查询计划的重组后的连接谓词的约束条件,在该候选查询计划集合中确定该等价查询计划集合。
可选地,在本发明一个实施例中,该重组模块1740具体用于:
对于该原始查询计划中的内连接操作,将该内连接操作的所有连接谓词转化成合取范式并合并具有相同输入表的连接谓词;
对于该原始查询计划中的非内连接操作,将该非内连接操作的所有连接谓词合并成一个连接谓词。
可选地,在本发明一个实施例中,该连接谓词的基本信息包括该连接谓词的输入表,该连接谓词所在连接操作的左子树中包括的该连接谓词的输入表,该连接谓词所在连接操作的右子树中包括的该连接谓词的输入表和该连接谓词所在连接操作的连接类型。
可选地,在本发明一个实施例中,该连接操作规则包括操作级别的规则和谓词级别的规则,其中,该操作级别的规则包括操作级别的交换规则e1oa p12e2=e2oa p12e1、操作级别的结合规则(e1oa p12e2)ob p23e3=e1oa p12(e2ob p23e3)、操作级别的左置换规则(e1oa p12e2)ob p13e3=(e1ob p13e3)oa p12e2和操作级别的右置换规则e1oa p13(e2ob p23e3)=e2ob p23(e1oa p13e3),该谓词级别的规则包括谓词级别的结合规则(e1oa p12e2)ob p∧p23e3=e1oa p12∧p(e2ob p23e3)、谓词级别
的左置换规则(e1oa p12e2)ob p13∧p e3=(e1ob p13e3)oa p12∧p e2和谓词级别的右置换规则e1oa p∧p13(e2ob p23e3)=e2ob p∧p23(e1oa p13e3),其中,ei为查询表达式,oa,ob为连接操作,pij为ei和ej之间的连接谓词。
可选地,在本发明一个实施例中,该确定模块1750具体用于:
对于该原始查询计划中的每个连接操作节点oB,遍历以oB为根节点的子树中的每一个连接操作节点oA,
oA在以oB为根节点的子树的左子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第一约束条件,若oA和oB不满足操作级别的左置换规则和谓词级别的左置换规则,则为oB上的重组后的每个连接谓词添加第二约束条件;
oA在以oB为根节点的子树的右子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第二约束条件,若oA和oB不满足操作级别的右置换规则和谓词级别的右置换规则,则为oB上的重组后的每个连接谓词添加第一约束条件;
该第一约束条件为T(e2)->T(e1)∩T(pa1∧pa2∧…∧pan),该第二约束条件为T(e1)->T(e2)∩T(pa1∧pa2∧…∧pan),T(e1)表示以oA为根节点的子树的左子树e1包括的原始输入表,T(e2)表示以oA为根节点的子树的右子树e2包括的原始输入表,T(pa1∧pa2∧…∧pan)表示oA上的重组后的连接谓词pa1∧pa2∧…∧pan中包括的原始输入表,T1->T2表示若以T1->T2所约束的连接谓词所在的连接操作为根节点的第一子树包括T1中的任意一个输入表,则该第一子树包括T2中的所有输入表。
可选地,在本发明一个实施例中,该确定模块1750具体用于:
若第一候选查询计划P’满足以下条件,则确定P’为该原始查询计划P的等价查询计划:
P’的每个第一连接操作的连接类型是内连接,该第一连接操作为具有两个以上重组后的连接谓词的连接操作,且该两个以上重组后的连接谓词中的每个连接谓词在P中所对应的连接操作的连接类型是内连接;
对于P’中每个连接操作ob’上的每个连接谓词p,
在ob’不满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中的Tr(p)和P中的Tr(p)相等,其中,Tl(p)表示p所在连接操作的左子树中包括的p的输入表,Tr(p)表示p所在连接操作的右子树中包括的p的输入
表,
在ob’满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中Tr(p)和P中的Tr(p)相等,或者P’中的Tl(p)和P中的Tr(p)相等且P’中的Tr(p)和P中的Tl(p)相等;
对于P’中每个连接操作ob’上的每个连接谓词p,p满足p在P中的约束条件。
可选地,在本发明一个实施例中,该查询模块1780具体用于:
从该等价查询计划集合中选择代价最小的查询计划进行查询。
根据本发明实施例的数据查询的装置1700可对应于根据本发明实施例的数据查询的方法的执行主体,并且装置1700中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
图18示出了根据本发明实施例的数据库系统1800的示意性框图。如图18所示,该数据库系统1800包括前述本发明实施例的数据查询的装置1700和数据库1810。该数据库系统1800可以执行前述本发明实施例的数据查询的方法,在数据库1810中进行查询。
图19示出了本发明的又一实施例提供的数据查询的装置的结构,包括至少一个处理器1902(例如CPU),至少一个网络接口1905或者其他通信接口,存储器1906,和至少一个通信总线1903,用于实现这些装置之间的连接通信。处理器1902用于执行存储器1906中存储的可执行模块,例如计算机程序。存储器1906可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口1905(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
在一些实施方式中,存储器1906存储了程序19061,处理器1902执行程序19061,用于执行前述本发明实施例的数据查询的方法。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各
示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,
Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (20)
- 一种数据查询的方法,其特征在于,由数据库系统执行,所述数据库系统运行在计算机设备上,所述方法包括:接收数据查询请求;根据所述数据查询请求,生成原始查询计划;重组所述原始查询计划中的连接谓词;确定所述原始查询计划的重组后的连接谓词的基本信息;基于连接操作规则,确定所述原始查询计划的重组后的连接谓词的约束条件;根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划;根据所述原始查询计划的等价查询计划进行查询。
- 根据权利要求1所述的方法,其特征在于,所述根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划,包括:根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划集合;所述根据所述原始查询计划的等价查询计划进行查询,包括:从所述等价查询计划集合中选择查询计划进行查询。
- 根据权利要求2所述的方法,其特征在于,所述方法还包括:根据所述原始查询计划,获取候选查询计划集合;所述根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划集合,包括:根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,在所述候选查询计划集合中确定所述等价查询计划集合。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述重组所述原始查询计划中的连接谓词,包括:对于所述原始查询计划中的内连接操作,将所述内连接操作的所有连接谓词转化成合取范式并合并具有相同输入表的连接谓词;对于所述原始查询计划中的非内连接操作,将所述非内连接操作的所有连接谓词合并成一个连接谓词。
- 根据权利要求1至4中任一项所述的方法,其特征在于,所述连接谓词的基本信息包括所述连接谓词的输入表,所述连接谓词所在连接操作的左子树中包括的所述连接谓词的输入表,所述连接谓词所在连接操作的右子树中包括的所述连接谓词的输入表和所述连接谓词所在连接操作的连接类型。
- 根据权利要求1至5中任一项所述的方法,其特征在于,所述连接操作规则包括操作级别的规则和谓词级别的规则,其中,所述操作级别的规则包括操作级别的交换规则e1oa p12e2=e2oa p12e1、操作级别的结合规则(e1oa p12e2)ob p23e3=e1oa p12(e2ob p23e3)、操作级别的左置换规则(e1oa p12e2)ob p13e3=(e1ob p13e3)oa p12e2和操作级别的右置换规则e1oa p13(e2ob p23e3)=e2ob p23(e1oa p13e3),所述谓词级别的规则包括谓词级别的结合规则(e1oa p12e2)ob p∧p23e3=e1oa p12∧p(e2ob p23e3)、谓词级别的左置换规则(e1oa p12e2)ob p13∧pe3=(e1ob p13e3)oa p12∧pe2和谓词级别的右置换规则e1oa p∧p13(e2ob p23e3)=e2ob p∧p23(e1oa p13e3),其中,ei为查询表达式,oa,ob为连接操作,pij为ei和ej之间的连接谓词。
- 根据权利要求6所述的方法,其特征在于,所述基于连接操作规则,确定所述原始查询计划的重组后的连接谓词的约束条件,包括:对于所述原始查询计划中的每个连接操作节点oB,遍历以oB为根节点的子树中的每一个连接操作节点oA,oA在以oB为根节点的子树的左子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第一约束条件,若oA和oB不满足操作级别的左置换规则和谓词级别的左置换规则,则为oB上的重组后的每个连接谓词添加第二约束条件;oA在以oB为根节点的子树的右子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第二约束条件,若oA和oB不满足操作级别的右置换规则和谓词级别的右置换规则,则为oB上的重组后的每个连接谓词添加第一约束条件;所述第一约束条件为T(e2)->T(e1)∩T(pa1∧pa2∧…∧pan),所述第二约束 条件为T(e1)->T(e2)∩T(pa1∧pa2∧…∧pan),T(e1)表示以oA为根节点的子树的左子树e1包括的原始输入表,T(e2)表示以oA为根节点的子树的右子树e2包括的原始输入表,T(pa1∧pa2∧…∧pan)表示oA上的重组后的连接谓词pa1∧pa2∧…∧pan中包括的原始输入表,T1->T2表示若以T1->T2所约束的连接谓词所在的连接操作为根节点的第一子树包括T1中的任意一个输入表,则所述第一子树包括T2中的所有输入表。
- 根据权利要求1至7中任一项所述的方法,其特征在于,所述根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划,包括:若第一候选查询计划P’满足以下条件,则确定P’为所述原始查询计划P的等价查询计划:P’的每个第一连接操作的连接类型是内连接,所述第一连接操作为具有两个以上重组后的连接谓词的连接操作,且所述两个以上重组后的连接谓词中的每个连接谓词在P中所对应的连接操作的连接类型是内连接;对于P’中每个连接操作ob’上的每个连接谓词p,在ob’不满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中的Tr(p)和P中的Tr(p)相等,其中,Tl(p)表示p所在连接操作的左子树中包括的p的输入表,Tr(p)表示p所在连接操作的右子树中包括的p的输入表,在ob’满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中Tr(p)和P中的Tr(p)相等,或者P’中的Tl(p)和P中的Tr(p)相等且P’中的Tr(p)和P中的Tl(p)相等;对于P’中每个连接操作ob’上的每个连接谓词p,p满足p在P中的约束条件。
- 根据权利要求2所述的方法,其特征在于,所述从所述等价查询计划集合中选择查询计划进行查询,包括:从所述等价查询计划集合中选择代价最小的查询计划进行查询。
- 一种数据查询的装置,其特征在于,包括:接收模块,用于接收数据查询请求;生成模块,用于根据所述数据查询请求,生成原始查询计划;重组模块,用于重组所述原始查询计划中的连接谓词;确定模块,用于确定所述原始查询计划的重组后的连接谓词的基本信息;基于连接操作规则,确定所述原始查询计划的重组后的连接谓词的约束条件;以及根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划;查询模块,用于根据所述原始查询计划的等价查询计划进行查询。
- 根据权利要求10所述的装置,其特征在于,所述确定模块具体用于,根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,确定所述原始查询计划的等价查询计划集合;所述查询模块具体用于,从所述等价查询计划集合中选择查询计划进行查询。
- 根据权利要求11所述的装置,其特征在于,所述装置还包括:获取模块,用于根据所述原始查询计划,获取候选查询计划集合;所述确定模块具体用于,根据所述原始查询计划的重组后的连接谓词的基本信息和所述原始查询计划的重组后的连接谓词的约束条件,在所述候选查询计划集合中确定所述等价查询计划集合。
- 根据权利要求10至12中任一项所述的装置,其特征在于,所述重组模块具体用于:对于所述原始查询计划中的内连接操作,将所述内连接操作的所有连接谓词转化成合取范式并合并具有相同输入表的连接谓词;对于所述原始查询计划中的非内连接操作,将所述非内连接操作的所有连接谓词合并成一个连接谓词。
- 根据权利要求10至13中任一项所述的装置,其特征在于,所述连接谓词的基本信息包括所述连接谓词的输入表,所述连接谓词所在连接操作的左子树中包括的所述连接谓词的输入表,所述连接谓词所在连接操作的右子树中包括的所述连接谓词的输入表和所述连接谓词所在连接操作的连接类型。
- 根据权利要求10至14中任一项所述的装置,其特征在于,所述连接操作规则包括操作级别的规则和谓词级别的规则,其中,所述操作级别的 规则包括操作级别的交换规则e1oa p12e2=e2oa p12e1、操作级别的结合规则(e1oa p12e2)ob p23e3=e1oa p12(e2ob p23e3)、操作级别的左置换规则(e1oa p12e2)ob p13e3=(e1ob p13e3)oa p12e2和操作级别的右置换规则e1oa p13(e2ob p23e3)=e2ob p23(e1oa p13e3),所述谓词级别的规则包括谓词级别的结合规则(e1oa p12e2)ob p∧p23e3=e1oa p12∧p(e2ob p23e3)、谓词级别的左置换规则(e1oa p12e2)ob p13∧pe3=(e1ob p13e3)oa p12∧pe2和谓词级别的右置换规则e1oa p∧p13(e2ob p23e3)=e2ob p∧p23(e1oa p13e3),其中,ei为查询表达式,oa,ob为连接操作,pij为ei和ej之间的连接谓词。
- 根据权利要求15所述的装置,其特征在于,所述确定模块具体用于:对于所述原始查询计划中的每个连接操作节点oB,遍历以oB为根节点的子树中的每一个连接操作节点oA,oA在以oB为根节点的子树的左子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第一约束条件,若oA和oB不满足操作级别的左置换规则和谓词级别的左置换规则,则为oB上的重组后的每个连接谓词添加第二约束条件;oA在以oB为根节点的子树的右子树中时,若oA和oB不满足操作级别的结合规则和谓词级别的结合规则,则为oB上的重组后的每个连接谓词添加第二约束条件,若oA和oB不满足操作级别的右置换规则和谓词级别的右置换规则,则为oB上的重组后的每个连接谓词添加第一约束条件;所述第一约束条件为T(e2)->T(e1)∩T(pa1∧pa2∧…∧pan),所述第二约束条件为T(e1)->T(e2)∩T(pa1∧pa2∧…∧pan),T(e1)表示以oA为根节点的子树的左子树e1包括的原始输入表,T(e2)表示以oA为根节点的子树的右子树e2包括的原始输入表,T(pa1∧pa2∧…∧pan)表示oA上的重组后的连接谓词pa1∧pa2∧…∧pan中包括的原始输入表,T1->T2表示若以T1->T2所约束的连接谓词所在的连接操作为根节点的第一子树包括T1中的任意一个输入表,则所述第一子树包括T2中的所有输入表。
- 根据权利要求10至16中任一项所述的装置,其特征在于,所述确定模块具体用于:若第一候选查询计划P’满足以下条件,则确定P’为所述原始查询计划P的等价查询计划:P’的每个第一连接操作的连接类型是内连接,所述第一连接操作为具有 两个以上重组后的连接谓词的连接操作,且所述两个以上重组后的连接谓词中的每个连接谓词在P中所对应的连接操作的连接类型是内连接;对于P’中每个连接操作ob’上的每个连接谓词p,在ob’不满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中的Tr(p)和P中的Tr(p)相等,其中,Tl(p)表示p所在连接操作的左子树中包括的p的输入表,Tr(p)表示p所在连接操作的右子树中包括的p的输入表,在ob’满足操作级别的交换规则时,P’中的Tl(p)和P中的Tl(p)相等且P’中Tr(p)和P中的Tr(p)相等,或者P’中的Tl(p)和P中的Tr(p)相等且P’中的Tr(p)和P中的Tl(p)相等;对于P’中每个连接操作ob’上的每个连接谓词p,p满足p在P中的约束条件。
- 根据权利要求11所述的装置,其特征在于,所述查询模块具体用于:从所述等价查询计划集合中选择代价最小的查询计划进行查询。
- 一种数据查询的装置,其特征在于,所述装置包括处理器和存储器,其中,所述存储器用于存储指令,所述处理器用于执行所述指令,所述指令在被所述处理器执行时,使所述处理器执行根据权利要求1至9中任一项所述的方法。
- 一种数据库系统,其特征在于,包括根据权利要求10至18中任一项所述的数据查询的装置和数据库。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/095909 WO2017091925A1 (zh) | 2015-11-30 | 2015-11-30 | 数据查询的方法、装置和数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107251013A true CN107251013A (zh) | 2017-10-13 |
CN107251013B CN107251013B (zh) | 2020-02-14 |
Family
ID=58796008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580005935.1A Active CN107251013B (zh) | 2015-11-30 | 2015-11-30 | 数据查询的方法、装置和数据库系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10885034B2 (zh) |
EP (1) | EP3373154A1 (zh) |
JP (1) | JP6628455B2 (zh) |
KR (1) | KR102138627B1 (zh) |
CN (1) | CN107251013B (zh) |
BR (1) | BR112018010857B1 (zh) |
SG (1) | SG11201804544QA (zh) |
WO (1) | WO2017091925A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018177060A1 (zh) * | 2017-03-31 | 2018-10-04 | 华为技术有限公司 | 查询优化方法及相关装置 |
CN111151858A (zh) * | 2020-01-13 | 2020-05-15 | 吉利汽车研究院(宁波)有限公司 | 一种点焊焊接参数应用系统及设置方法 |
CN114168620A (zh) * | 2022-02-11 | 2022-03-11 | 北京奥星贝斯科技有限公司 | 执行计划的处理方法及装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6707797B2 (ja) * | 2017-03-29 | 2020-06-10 | 株式会社日立製作所 | データベース管理システム及びデータベース管理方法 |
US10885035B2 (en) * | 2019-04-26 | 2021-01-05 | Advanced New Technologies Co., Ltd. | Method and system for outer join of database tables |
CN111949686B (zh) * | 2019-05-14 | 2024-05-14 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置及设备 |
US20200409948A1 (en) * | 2019-06-26 | 2020-12-31 | International Business Machines Corporation | Adaptive Query Optimization Using Machine Learning |
CN111104426B8 (zh) * | 2019-11-22 | 2024-04-23 | 北京傲速科技有限公司 | 一种数据查询方法及系统 |
KR102125010B1 (ko) * | 2020-03-17 | 2020-06-19 | 김명훈 | 데이터베이스 전환 분석 시스템 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040220923A1 (en) * | 2002-06-29 | 2004-11-04 | Sybase, Inc. | System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm |
US8086598B1 (en) * | 2006-08-02 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Query optimizer with schema conversion |
US20130173528A1 (en) * | 2011-12-29 | 2013-07-04 | International Business Machines Corporation | Multi-fact query processing in data processing system |
CN104216891A (zh) * | 2013-05-30 | 2014-12-17 | 国际商业机器公司 | 关系型数据库中的查询语句的优化方法和设备 |
CN104285222A (zh) * | 2012-05-07 | 2015-01-14 | 国际商业机器公司 | 使用谓词映射器优化查询 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819255A (en) | 1996-08-23 | 1998-10-06 | Tandem Computers, Inc. | System and method for database query optimization |
JP4552242B2 (ja) * | 1999-10-06 | 2010-09-29 | 株式会社日立製作所 | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
JP3515050B2 (ja) | 2000-07-07 | 2004-04-05 | 三菱電機株式会社 | データベース演算処理装置 |
US6665663B2 (en) | 2001-03-15 | 2003-12-16 | International Business Machines Corporation | Outerjoin and antijoin reordering using extended eligibility lists |
US6598044B1 (en) * | 2002-06-25 | 2003-07-22 | Microsoft Corporation | Method for choosing optimal query execution plan for multiple defined equivalent query expressions |
US7546311B2 (en) * | 2006-11-30 | 2009-06-09 | Ianywhere Solutions, Inc. | Optimization of left and right outer join operations in database management systems |
CN101339551B (zh) | 2007-07-05 | 2013-01-30 | 日电(中国)有限公司 | 自然语言查询需求扩展设备及其方法 |
US8224806B2 (en) | 2009-07-31 | 2012-07-17 | Hewlett-Packard Development Company, L.P. | Selectivity-based optimized-query-plan caching |
CN103714058B (zh) * | 2012-09-28 | 2017-05-17 | Sap欧洲公司 | 用于数据库查询优化的方法以及使用该方法的系统 |
CN103678589B (zh) * | 2013-12-12 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于等价类的数据库内核查询优化方法 |
US9411806B2 (en) * | 2014-05-06 | 2016-08-09 | International Business Machines Corporation | Optimizing relational database queries with multi-table predicate expressions |
US10133778B2 (en) * | 2015-11-20 | 2018-11-20 | Sap Se | Query optimization using join cardinality |
-
2015
- 2015-11-30 SG SG11201804544QA patent/SG11201804544QA/en unknown
- 2015-11-30 CN CN201580005935.1A patent/CN107251013B/zh active Active
- 2015-11-30 EP EP15909443.2A patent/EP3373154A1/en not_active Ceased
- 2015-11-30 KR KR1020187017354A patent/KR102138627B1/ko active IP Right Grant
- 2015-11-30 BR BR112018010857-0A patent/BR112018010857B1/pt active IP Right Grant
- 2015-11-30 JP JP2018527925A patent/JP6628455B2/ja active Active
- 2015-11-30 WO PCT/CN2015/095909 patent/WO2017091925A1/zh active Application Filing
-
2018
- 2018-05-30 US US15/992,925 patent/US10885034B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040220923A1 (en) * | 2002-06-29 | 2004-11-04 | Sybase, Inc. | System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm |
US8086598B1 (en) * | 2006-08-02 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Query optimizer with schema conversion |
US20130173528A1 (en) * | 2011-12-29 | 2013-07-04 | International Business Machines Corporation | Multi-fact query processing in data processing system |
CN104285222A (zh) * | 2012-05-07 | 2015-01-14 | 国际商业机器公司 | 使用谓词映射器优化查询 |
CN104216891A (zh) * | 2013-05-30 | 2014-12-17 | 国际商业机器公司 | 关系型数据库中的查询语句的优化方法和设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018177060A1 (zh) * | 2017-03-31 | 2018-10-04 | 华为技术有限公司 | 查询优化方法及相关装置 |
CN111151858A (zh) * | 2020-01-13 | 2020-05-15 | 吉利汽车研究院(宁波)有限公司 | 一种点焊焊接参数应用系统及设置方法 |
CN114168620A (zh) * | 2022-02-11 | 2022-03-11 | 北京奥星贝斯科技有限公司 | 执行计划的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10885034B2 (en) | 2021-01-05 |
BR112018010857B1 (pt) | 2023-02-07 |
BR112018010857A2 (zh) | 2018-11-21 |
BR112018010857A8 (pt) | 2022-11-29 |
WO2017091925A1 (zh) | 2017-06-08 |
US20180276277A1 (en) | 2018-09-27 |
KR102138627B1 (ko) | 2020-07-28 |
JP6628455B2 (ja) | 2020-01-08 |
EP3373154A4 (en) | 2018-09-12 |
SG11201804544QA (en) | 2018-06-28 |
EP3373154A1 (en) | 2018-09-12 |
CN107251013B (zh) | 2020-02-14 |
JP2019504390A (ja) | 2019-02-14 |
KR20180083927A (ko) | 2018-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107251013A (zh) | 数据查询的方法、装置和数据库系统 | |
US9514188B2 (en) | Integrating map-reduce into a distributed relational database | |
US8943059B2 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
US9378269B1 (en) | Method and computing device for maintaining dependencies among reference elements | |
US7966315B2 (en) | Multi-query optimization | |
US10255263B2 (en) | Data storage and retrieval system and method for storing cell coordinates in a computer memory | |
CN103262062A (zh) | 用于执行嵌套连接操作的系统和方法 | |
CN102541631B (zh) | 以多线程不同驱动源执行计划处理查询的方法和系统 | |
US10831737B2 (en) | Method and device for partitioning association table in distributed database | |
US9870394B2 (en) | Query routing method, query routing server performing the same and storage medium storing the same | |
US11157496B2 (en) | Predictive data distribution for parallel databases to optimize storage and query performance | |
US10503823B2 (en) | Method and apparatus providing contextual suggestion in planning spreadsheet | |
US11599540B2 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
US20230126509A1 (en) | Database management system and method for graph view selection for a relational-graph database | |
US20150347507A1 (en) | Hierarchical query plans in an elastic parallel database management system | |
US10121177B2 (en) | Techniques for configurable part generation | |
US20170139982A1 (en) | Processing of Data Chunks Using a Database Calculation Engine | |
US11163764B2 (en) | Predictive data distribution for parallel databases to optimize storage and query performance | |
Chen et al. | Query grouping–based multi‐query optimization framework for interactive SQL query engines on Hadoop | |
CN117370381A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN113742346A (zh) | 资产大数据平台架构优化方法 | |
US20170075933A1 (en) | Aggregated columns and item reduction features |
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 |