CN103365885B - 用于数据库查询优化的方法和系统 - Google Patents

用于数据库查询优化的方法和系统 Download PDF

Info

Publication number
CN103365885B
CN103365885B CN201210092036.8A CN201210092036A CN103365885B CN 103365885 B CN103365885 B CN 103365885B CN 201210092036 A CN201210092036 A CN 201210092036A CN 103365885 B CN103365885 B CN 103365885B
Authority
CN
China
Prior art keywords
predicate
inquiry
query statement
complicated
infrastructure cost
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
CN201210092036.8A
Other languages
English (en)
Other versions
CN103365885A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201210092036.8A priority Critical patent/CN103365885B/zh
Priority to US13/846,019 priority patent/US9110946B2/en
Publication of CN103365885A publication Critical patent/CN103365885A/zh
Application granted granted Critical
Publication of CN103365885B publication Critical patent/CN103365885B/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

Abstract

本发明涉及用于数据库查询优化的方法和系统。所述方法包括以下步骤:从查询语句提取复杂谓词,所述查询语句包括至少两个复杂谓词;执行与所述查询语句相关联的查询;获取每一复杂谓词的相应的执行结构成本(ΔTi);根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本;以及选择具有最低总体执行结构成本的排列以用于数据库查询优化。所述方法还包括存储历史反馈信息。

Description

用于数据库查询优化的方法和系统
技术领域
本发明总体上涉及用于数据库的方法和系统,特别涉及用于数据库查询优化的方法和系统。
背景技术
现今,主流的数据库系统提供了关系数据服务(RDS)。RDS处理过程对数据库查询语句(以下简称查询语句)进行解析(parse),并根据解析进行查询语句语义变换(QST)。在此,还对查询语句进行重写(rewrite)。然后,RDS处理过程根据QST处理的查询进行访问路径选择(即,APS估算),并生成访问路径描述语言(Access Specific Language),以供执行结构产生器来生成执行结构。数据库引擎(或其执行模块)将根据该执行结构执行该查询以获得查询结果。
现有技术中提供了一些针对简单谓词查询的重写技术,例如谓词再分布技术、实时统计改进(refine)技术、以及利用UNION,IN等的重写技术等,然而其或是针对简单谓词查询或是不涉及谓词处理,而皆未考虑对复杂谓词的重写优化。
在此,将谓词其中以顺序包含自变量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、或分句的谓词称作简单谓词。而将其他类谓词称作复杂谓词,例如,复杂谓词可以包含变量、函数、表达式、分句等等。在数据库语言中,所述关系运算符或逻辑运算符可以包括“=”、“>”、“>=”、“<”、“<=”、“NOT”、“IN”、“LIKE”、“BETWEEN”等。典型的简单谓词的例子可以包括但不限于:
COL op value
COL IS NULL
COL IS NOT NULL
COL BETWEEN value1 AND value2
COL<>value
COL NOT BETWEEN value1 AND value2
等等,其中,op表示“=”、“>”、“>=”、“<”、“<=”,value、value1、value2为常量。
并且,现有技术在某类或者某个或某些查询语句被以较大几率重复执行(例如,不在缓存池中)时,其执行效率将是不理想的。特别是,在这些语句中具有相同的主干而例如仅部分谓词不同时,现有技术的方案将是效率较差的。
至少针对现有技术中的至少部分上述问题,提出了本发明。
发明内容
本发明的一个实施例的目的在于提供一种用于数据库查询优化的方法,包括以下步骤:(a)从查询语句提取复杂谓词,所述查询语句包括至少两个复杂谓词;(b)执行与所述查询语句相关联的查询;(c)获取每一复杂谓词的相应的执行结构成本(ΔTi);(d)根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本;以及(e)选择具有最低总体执行结构成本的排列以用于数据库查询优化。
本发明的另一实施例的目的在于提供一种用于数据库查询优化的系统,包括:提取装置,被配置用于从查询语句提取复杂谓词,所述查询语句包括至少两个复杂谓词;执行装置,被配置用于执行与所述查询语句相关联的查询;执行结构成本获取装置,被配置用于获取每一复杂谓词的执行结构成本(ΔTi);计算装置,被配置用于根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本;以及选择装置,被配置用于选择具有最低总体执行结构成本的排列以用于数据库查询优化的装置。
根据本发明,可以在执行查询时提供实时反馈信息。并且可以在数据引擎内部或外部收集实施反馈信息,从而提供了相当的灵活性。另外,本发明可以根据历史反馈信息对查询语句进行优化,增强了查询语句重写的灵活性,减小了查询的响应时间。此外,本发明还提供了根据实时反馈的对查询语句的重写,而无需重新绑定。
附图说明
以下通过结合附图阅读参考下述对说明性实施例的详细描述,将更好地理解本发明本身、实施方式、其它目的及其优点。在附图中:
图1示出了根据本发明一个实施例的方法的流程图;
图2示出了用于说明根据本发明一个实施例的方法的一种更具体的实现方式的示例;
图3示出了用于说明根据本发明一个实施例的方法的另一种更具体的实现方式的示例;
图4示出了用于说明根据本发明实施例的复杂谓词矩阵的示例;
图5示出了用于说明根据本发明实施例的执行结构成本矢量;
图6和7示出了用于说明根据本发明实施例的计算总体执行结构成本的示例;
图8示出了用于说明根据本发明的数据库查询语句的示例;
图9示出了针对图8的示例应用本发明的方法的视图;
图10示出了针对图8的示例的查询语句的优化(重写);
图11示出了根据本发明又一个实施例的方法的示意性流程图;
图12示出了根据本发明实施例的用于数据库优化的系统;以及
图13示意性地示出了适于用来实现本发明实施方式的示例性计算系统100的框图。
现在参照附图描述优选方法和系统,其中,在附图中相同的附图标号用来指相同的部件。在下面的描述中,为了解释的目的,阐述大量特定的细节,以便帮助完全了解系统及方法等。在其它的例子中,为了简化描述,以框图的形式示出常用的结构和装置。对于本领域技术人员来说,可以想到很多修改和其它实施例,同时拥有在说明书和附图中所教导的益处。因此,应该理解,本发明不局限于所公开的特定实施例,另外可选的实施例应当包含在本发明的范围和范例发明构思内。虽然本文采用了一些特定术语,但是仅仅为了一般的描述意义而非限制目的使用它们。
具体实施方式
下面将参考附图说明本发明的优选实施例。
下列讨论中,提供大量具体的细节以帮助彻底了解本发明。然而,很显然对于本领域技术人员来说,即使没有这些具体细节,并不影响对本发明的理解。并且应该认识到,使用如下的任何具体术语仅仅是为了方便描述,因此,本发明不应当局限于只用在这样的术语所表示和/或暗示的任何特定应用中。
图1示出了根据本发明一个实施例的方法的流程图。根据本发明的方法,在步骤S101中,从接收的数据库查询语句(以下,称查询语句或第一查询语句)提取复杂谓词。图2示出了查询语句的示例Q1:
Select(*)from Tab
Where Cpred1 and Cpred2 and Cpred3
and Cpred4 and Cpred5
其中,Cpred1至Cpred5表示复杂谓词。
在此,查询语句中提取了复杂谓词后的剩余部分被作为“主干”。对于前面所示的该查询语句,主干即为“Select(*)from Tab”。本领域技术人员将理解,主干中还可以包括例如简单谓词、其他的条件语句、子查询(subquery)等等。
这里,作为示例,复杂谓词Cpred1至Cpred5被示出为彼此之间具有逻辑与的关系。然而,应当理解,本发明并不限于此。另外,应当理解,这里所说的查询语句可以是原始的查询语句,或者是与原始的查询语句等效的语义变换的语句或其一部分,只要其具有至少两个复杂谓词即可。本发明特别适用于具有之间为逻辑与关系的两个或更多个复杂谓词的查询语句。然而,本发明并不限于此。在本发明中,在未作特别说明的情况下,所针对的复杂谓词之间的逻辑关系即为与。在其他情况下,在步骤S101还提取复杂谓词之间的逻辑关系。
在步骤S102中,执行与所述第一查询语句相关联的查询。根据本发明的一个实施例,可以针对所述主干以及针对每一复杂谓词分别与所述主干的结合执行查询,如图2中所示。例如,可以通过数据库引擎外部的工具(例如,程序或者模块)生成与所述主干以及针对每一复杂谓词分别与所述主干的结合对应的查询语句,对其进行查询。图2中还示意性地示出了相应的查询结果。例如,与主干Select(*)from Tab对应的查询结果为“1,2,3,4,5,6,7,8”。也就是说,该语句所针对的数据库对象(表)Tab具有1至8共8个数据记录(例如,表中的行)。将主干分别与复杂谓词Cpred1至Cpred5结合,得到了相应的查询结果,如图2中所示。
根据本发明的另一实施例,可以针对所述所述第一查询语句自身执行查询。该查询可以例如在数据库引擎内部中进行。在一个实施方案中,可以对所述数据库对象的每一个数据记录(行)应用该第一查询语句。图3(稍后将详细说明)中示出了根据该实施例的示意性的示例。
在步骤S103中,获取每一复杂谓词(Cpredi)的相应的执行结构成本(ΔTi)。这里,所述执行结构成本ΔTi是对于查询语句所针对的特定数据库对象(例如,表)中的一项数据记录(也称作行或元组)应用该复杂谓词Cpredi的响应时间。本领域技术人员将理解,所述响应时间可以包括:取出或复制该项数据记录、判断它是否满足该复杂谓词等所需的时间等。这里,对于前述的查询语句Q1,i为1至5。该执行结构成本也可被称为原子成本。
根据本发明的一个实施例,可以基于用于所述查询的执行结构来估算所述执行结构成本。例如,本领域技术人员将理解,数据库引擎可以根据由执行结构生成模块针对查询语句所生成的执行结构进行分析,来得到与每一谓词对应的执行结构成本。也即,该估算离线(off-line)地进行,即,在绑定时(bind time)进行。
替代地,可以基于步骤S102中所述的查询的执行来得到所述执行结构成本,也即执行时的实际响应时间。也即,在线(on-line)地进行,即,在执行时(executing time)进行。
因此,尽管这里步骤S103被示出为在步骤S102中的执行查询之后,然而本发明并不限于此。
在步骤S104中,可以根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本(其也可被称为分子成本)。也就是说,针对例如前述示例中的复杂谓词Cpred1至Cpred5的每一排列顺序计算对应的总体执行结构成本。这里,所述查询的结果包括所述第一查询语句所针对的数据对象(例如,表)中的满足所述查询的所有数据记录(行)。
在本发明的一个具体实施方式中,可以根据查询的结果,与复杂谓词关联地生成复杂谓词位图矩阵(B)。并且可以根据所述执行结构成本和所述复杂谓词位图矩阵,计算复杂谓词的每一排列的总体执行结构成本。
更具体地,例如,对于前述的针对所述主干以及针对每一复杂谓词分别与所述主干的结合执行查询的示例,可以通过将每一复杂谓词与所述主干的结合的查询结果相对于所述主干的查询结果进行验证,来生成所述复杂谓词位图矩阵中的与该复杂谓词对应的第一维度向量(Bfi),如下面将参考图2具体说明的。
对于图2的查询语句Q1,其主干的对应查询结果为“1,2,3,4,5,6,7,8”。其主干与复杂谓词Cpred1的结合的对应查询结果为“2,3,4,6,8”。注意,主干与复杂谓词Cpredi的结合的对应查询结果的集合可以等同于或者被包含于主干的对应查询结果。因此,优选地,可以将两者的查询结果进行对齐,以利于后续操作和运算。例如,由于在“1,2,3,4,5,6,7,8”中,“2,3,4,6,8”被主干与复杂谓词Cpred1的结合查询到(也即,被验证(qualified),而“1,5,7”未被查询到,从而生成与该复杂谓词Cpred1对应的行向量Bfi=[0 1 1 1 0 1 0 1]。其中,该行向量的每一成员对应于主干的一项查询结果(也即,数据库对象(表)中的一项数据记录(行)),其具有0或1的值(也即,每一成员具有1比特)。在一些实施方式中,值1被定义来表示与其所在的列对应的所述主干的查询结果中的成员被以与其所在的行所对应的复杂谓词查询到;值0被定义来表示与其所在的列对应的所述主干的查询结果中的成员未被以与其所在的行所对应的复杂谓词查询到。尽管这里以值1来表示被查询到,然而也可以以0来表示被查询到,而1表示被过滤掉(未被查询到)。另外,尽管这里以行和列进行了说明,但应理解,行和列是可以互换的,因此,可以将其分别称作第一维度和第二维度。
类似的,得到了图2中所示的与其他的复杂谓词Cpred2至Cpred5对应的行向量。从而生成了与这些复杂谓词对应的复杂谓词位图矩阵(B),如图4中所示。矩阵B中的行向量的顺序对应于复杂谓词的顺序。从而对于复杂谓词的不同排列(也即,不同的顺序)只需对矩阵进行行向量的变换即可与其对应。
替代地,对于前述的针对所述第一查询语句自身执行查询(也即,对所述数据库对象的每一个数据记录(行)应用该第一查询语句)的示例,可以通过根据满足所述主干的每一数据记录是否满足各复杂谓词,来生成所述复杂谓词位图矩阵中的与该数据记录对应的第二维度向量(Bsi),如下面将参考图3具体说明的。
对于图3所示的查询语句Q2,其对应的查询Select(*)from Tab说明,表中的数据记录为“0,1,2,3,4,5,6,7,8,9”这十项。主干的对应查询结果为“1,2,3,4,5,6,7,8”。在操作中,对于第一行(“0”)应用该查询语句Q2,可知该行不满足主干,被过滤掉。接着,对于第二行(“1”),该行满足主干,于是判断该第二行是不是满足各复杂谓词Cpred1至Cpred5,从而得到该第二行满足复杂谓词Cpred2至Cpred4,而不满足复杂谓词Cpred1和Cpred5。由此,得到与该行(表中的第二行,却是满足主干的行中的第一行)对应的复杂谓词位图矩阵B的列(第二维度)向量Bs1
Bs 1 = 0 1 1 1 0
如此重复进行,得到复杂谓词位图矩阵B的各列(第二维度)向量Bsj,从而得到该复杂谓词位图矩阵B,如图4中所示。
可以根据所述执行结构成本ΔTi和所述复杂谓词位图矩阵B,来计算复杂谓词的每一排列的总体执行结构成本T。为了表述的方便,图5示出了各谓词的执行结构成本的矢量ΔT:
ΔT=[ΔT1 ΔT2 ΔT3 ΔT4 ΔT5]。
从而,可以根据所述执行结构成本ΔTi和所述复杂谓词位图矩阵B,来计算复杂谓词的每一排列的总体执行结构成本。
如图6中所示的,对于上面的示例中所示的复杂谓词的排列例如[Cpred1 andCpred2 and Cpred3 and Cpred4 and Cpred5](在该示例中,其间的关系是逻辑与),存在如下情形。
复杂谓词Cpred1的对应的行向量Bf1为(其是矩阵B中的第一个行向量)[0 1 1 1 01 0 1],其作为图6中的中间结果矩阵C中的第一行向量C1。在主干的查询结果中,有5个数据记录(行)被复杂谓词Cpred1查询到。在该行向量中存在对应的5个具有预定值(1)的成员。从而,与复杂谓词Cpred1对应的结构成本为5×ΔT1。。
复杂谓词Cpred2的对应的行向量Bf2(其是矩阵B中的第二个行向量)为[1 1 0 1 10 1 1]。因此,主干与复杂谓词Cpred1和Cpred2的结合的对应查询结果为“2,4,8”,也即,对应于行向量Bf2和中间结果矩阵C中的第一行向量C1的逻辑与(其也等效于行向量Bf2和行向量Bf1的逻辑与)的结果向量(中间结果矩阵C中的第二行向量C2)[0 1 0 1 0 0 0 1],如图6上部中间位置的中间结果矩阵所示。这也就是说,在主干和复杂谓词Cpred1的查询结果中,有3个数据记录(行)被复杂谓词Cpred2查询到。从而与复杂谓词Cpred2对应的结构成本为3×ΔT2
对应地,得到行向量Bf3和中间结果矩阵C中的第二行向量C2的逻辑与(其也等效于行向量Bf3、行向量Bf2、和行向量Bf1的逻辑与)的结果向量(中间结果矩阵C中的第三行向量C3)[0 1 0 1 0 0 0 1]。相应地,与复杂谓词Cpred3对应的结构成本为3×ΔT3
如此这般,得到中间结果矩阵C中的第四和第五行向量C4和C5。相应地,与复杂谓词Cpred4对应的结构成本为2×ΔT4,与复杂谓词Cpred5对应的结构成本为1×ΔT5
也就是说,针对当前排列的从第二个复杂谓词开始的每一复杂谓词,根据该复杂谓词与该复杂谓词之前的所有复杂谓词的逻辑关系,对与该复杂谓词与该复杂谓词之前的所有复杂谓词相应的第一维度向量执行对应的逻辑操作,以得到对应的结果向量。
在此将第一个所述第一维度向量中的以及与相应的复杂谓词所对应的结果向量中具有预定值(例如,1)的数目分别定义为σi
从而,可以计算执行结构成本(ΔTi)和相应的具有预定的值的成员的数量(σi)的积的总和。这里不用说,i对应于一个复杂谓词,且为1到复杂谓词的总数之间的自然数(含端值)。如此,可以得到与该排列对应的总体执行结构成本(T)。为了说明的方便,如图7中所示,将该过程描述为:
T = &Delta;T &CenterDot; &sigma; = &Delta;T 1 &Delta; T 2 &Delta;T 3 &Delta;T 4 &Delta; T 5 &CenterDot; &sigma; 1 &sigma; 2 &sigma; 3 &sigma; 4 &sigma; 5
然而,应当理解,本发明并不限于矢量运算。在本发明的某些实施方式中,可以在计算所述具有预定的值的成员的数量(σi)的同时,计算已生成的σi和相应的ΔTi的积的总和。在此过程中,如果所计算的已生成的σi和相应的ΔTi的积的总和大于先前计算的排列的总体执行结构成本(T),则停止后续的成员(σi+1...等等)的生成,并丢弃与该总和对应的排列。
这里,还应当理解,上述所示的计算σi的过程或方法并非是限制性的。例如,也可以针对每一第一维度向量(Bfi)进行Bfi·Bfi-1·...·Bf1运算,计算所得到的结果向量中具有预定的值的成员的数量(σi),其中·表示两个向量的逻辑与运算。
根据上述的步骤,可以得到与复杂谓词的每一排列对应的执行结构成本。本领域技术人员将理解,根据本发明的公开计算复杂谓词的每一排列对应的总体执行结构成本的方式将是多样的,而并不限于上述说明。
在步骤S105中,选择具有最低总体执行结构成本T的排列以用于数据库查询优化。根据本发明的更具体的实施方式,可以将所述具有最低总体执行结构成本的排列,以及(可选的)与其对应的复杂谓词位图矩阵、各复杂谓词之间的逻辑关系、各复杂谓词执行结构成本中的一个或多个作为与所述第一查询语句关联的历史反馈信息的至少一部分。
另外,可以将所述历史反馈信息存储在存储器中。该存储器可以位于数据库内部,或者位于数据外部并与数据库引擎操作耦接。这里,需要说明的是,即使对于一百万项的中间数据记录(例如,主干的检索结果),也仅仅需要100k的存储空间来存储复杂谓词位图矩阵。因此,根据本发明可以以最小化的成本实现查询效率的提高。
根据本发明,由于该历史反馈信息至少包含了复杂谓词的具有最低执行结构成本的排列等,因此可以利用该反馈信息对所述第一查询语句进行重写,从而实现查询语句的优化,降低执行成本。例如,前述的外部工具可以根据本发明的方法生成重写优化了的第一查询语句以供数据库引擎执行。又例如,对于数据库引擎执行第一查询语句自身的查询情形,可以对所述第一查询语句的重写直接应用于用于所述第一查询语句的执行结构,从而不经再次绑定,得到优化后的执行结构。这在某些情况下也是有利的,例如,最新执行的第一查询语句及其执行结构以及对应的页(page)可能存储在数据库引擎的缓存池中。从而,在再次接收到第一查询语句时,可以利用优化的执行结构执行查询,从而降低了执行成本。
尽管这里矢量ΔT被示出为行向量,然而本发明并不限于此。另外,这里示出的矢量运算仅是为了描述的方便,本发明也并不限于矢量运算。
图8示出了用于说明根据本发明的数据库查询语句的示例。其中,复杂谓词Cpred1为YEAR(HIREDATE)<=2005,而复杂谓词Cpred2为FIRSTNME>LASTNME。
图9示出了针对图8的示例应用本发明的方法的视图。对于该示例查询语句,与复杂谓词Cpred1对应的执行结构成本为0.15ms,而与复杂谓词Cpred2对应的执行结构成本为0.03ms。在依次执行Cpred1和Cpred2(Cped1→Cped2,即排列1)的情况下, &sigma; 1 &RightArrow; 2 = &sigma; 1 &sigma; 2 = 1000 10 , 而在依次执行Cpred2和Cpred1(Cped2→Cped1,即排列2)的情况下, &sigma; 2 &RightArrow; 1 = &sigma; 2 &sigma; 1 = 10 1000 . 因此,计算所得的与排列1和2分别对应的总体执行结构成本分别为: T 1 &RightArrow; 2 = &Delta;T 1 &Delta;T 2 &CenterDot; &sigma; 1 &sigma; 2 = 1.5003 s , T 2 &RightArrow; 1 = &Delta;T 2 &Delta;T 1 &CenterDot; &sigma; 2 &sigma; 1 = 0.0045 s . 从而排列2(Cped2→Cped1)具有最低的执行成本,该排列及其对应其他反馈信息(例如,复杂谓词位图矩阵等)可以作为历史反馈信息的至少一部分,以用于进行优化。图10示出了对该查询语句的优化结果。
图11示出了根据本发明又一个实施例的方法的示意性流程图。根据本发明,还可以接收下一查询语句(例如,第二查询语句)。在步骤S1101中,判断是否存在与该第二查询语句对应的历史反馈信息。例如,在一个具体实施方式中,如果所述第二查询语句的主干与先前已经执行过的查询语句的主干一致,并且所述第二查询语句的复杂谓词与先前已经执行过的查询语句的复杂谓词一致或包含先前已经执行过的查询语句的复杂谓词,则确定存在与所述第二查询语句对应的历史反馈信息。如果确定存在与所述第二查询语句对应的历史反馈信息,则在步骤S1103中,应用该对应的历史反馈信息进行优化,例如,重写该第二查询语句。而如果确定不存在与所述第二查询语句对应的历史反馈信息,则可以对该第二查询语句执行前述针对第一查询语句的方法。
将理解,对于第二查询语句与历史反馈信息所对应的先前已经执行过的查询语句(例如,第一查询语句)一致(或者,考虑到语义上的变换,等同)的情形,也即,主干和复杂谓词都一致(等同)的情形,可以直接利用该排列来重写第二查询语句。
而主干一致而所述第二查询语句的复杂谓词包含先前已经执行过的查询语句的复杂谓词的情形,可以是例如,第二查询语句为Select(*)from Tab Where Cpred1 andCpred2 and Cpred3 and Cpred4 and Cpred5 and Cpred6。也就是说,相比前面的示例多了一个复杂谓词Cpred6的限制。对于这样的情形,例如,可以直接利用对应的排列来重写该语句,因为前五个复杂谓词的最佳排列根据对应的历史反馈信息已知。或者,也可以针对复杂谓词Cpred6执行前述方法,例如执行主干和Cpred6的结合的查询来得到对应的执行结构成本ΔT6和相应的位图矩阵的行向量Bf6,并结合对应的历史反馈信息中的位图矩阵B来获得与该第二查询语句对应的位图矩阵(其具有历史反馈信息中的位图矩阵B中的五个行向量和Bf6共计六个行向量),从而可以得到针对第二查询语句的六个复杂谓词的具有最低执行结构成本的排列。
图12示出了根据本发明实施例的用于数据库优化的系统1200。系统1200包括包括:提取装置1201,被配置用于用于从第一查询语句提取复杂谓词;执行装置1203,被配置用于执行与所述第一查询语句相关联的查询;执行结构成本获取装置1205,被配置用于获取每一复杂谓词的执行结构成本(ΔTi);计算装置1207,被配置用于根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本;以及选择装置1209,被配置用于选择具有最低总体执行结构成本的排列以用于数据库查询优化的装置。
优选地,所述查询语句包括至少两个复杂谓词。所述提取装置1201提取复杂谓词后所述查询语句的剩余部分被作为主干。所述执行装置1203可以被配置为执行下列中的任一项:针对所述主干以及针对每一复杂谓词分别与所述主干的结合执行查询;以及针对所述所述查询语句自身执行查询。所述执行结构成本获取装置1205可以被配置为适于执行下列中的任一项:基于用于与所述查询语句相关联的查询的执行结构估算所述执行结构成本;以及基于与所述查询语句相关联的查询的执行得到所述执行结构成本。所述计算装置1207可以被配置为适于:根据查询的结果与复杂谓词关联地生成复杂谓词位图矩阵(B),其中所述复杂谓词位图矩阵具有第一维度和第二维度;以及,根据所述执行结构成本和所述复杂谓词位图矩阵计算复杂谓词的每一排列的总体执行结构成本。所述系统还可以包括用于存储所述历史信息的存储装置。所述系统还可以包括根据所述历史反馈信息对所述查询语句进行重写的装置。所述系统还可以包括:接收下一查询语句的装置;判断是否存在与所述下一查询语句对应的历史反馈信息的装置;以及,在存在对应的历史反馈信息的情况下应用该对应的历史反馈信息重写该下一查询语句的装置。
图13示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
所属技术领域的技术人员知道,本发明的多个方面可以体现为系统、方法或计算机程序产品。因此,本发明的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明的多个方面还可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。
可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件的语境中,计算机可读存储介质可以是任何包含或存储程序的有形的介质,该程序被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可包括在基带中或者作为载波一部分传播的、其中体现计算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序的任何计算机可读介质。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者任何合适的上述组合。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如”C ”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (15)

1.一种用于数据库查询优化的方法,包括:
从查询语句提取复杂谓词,所述查询语句包括至少两个复杂谓词;
执行与所述查询语句相关联的查询;
获取每一复杂谓词的相应的执行结构成本(ΔTi);
根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本;以及
选择具有最低总体执行结构成本的排列以用于数据库查询优化,
其中所述优化包括:
根据历史反馈信息对所述查询语句进行重写,
其中,所述查询语句中提取复杂谓词后的剩余部分被作为主干,并且
根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本包括:
根据查询的结果,与复杂谓词关联地生成复杂谓词位图矩阵(B),其中所述复杂谓词位图矩阵具有第一维度和第二维度;
根据所述执行结构成本和所述复杂谓词位图矩阵,计算复杂谓词的每一排列的总体执行结构成本。
2.根据权利要求1所述的方法,其中,执行与所述查询语句相关联的查询包括下列中的任一项:
针对所述主干以及针对每一复杂谓词分别与所述主干的结合执行查询;
针对所述查询语句自身执行查询。
3.根据权利要求1所述的方法,其中,获取每一复杂谓词的相应的执行结构成本包括下列中的任一项:
基于用于与所述查询语句相关联的查询的执行结构估算所述执行结构成本;
基于与所述查询语句相关联的查询的执行得到所述执行结构成本。
4.根据权利要求1所述的方法,其中,执行与所述查询语句相关联的查询包括:
针对所述主干以及针对每一复杂谓词分别与所述主干的结合执行查询,并且
根据查询的结果,与复杂谓词关联地生成复杂谓词位图矩阵(B)进一步包括:
将每一复杂谓词与所述主干的结合的查询结果相对于所述主干的查询结果进行验证,来生成所述复杂谓词位图矩阵中的与该复杂谓词对应的第一维度向量(Bfi)。
5.根据权利要求1所述的方法,其中,执行与所述查询语句相关联的查询包括:
针对所述查询语句自身执行查询;并且
根据查询的结果,与复杂谓词关联地生成复杂谓词位图矩阵进一步包括:
根据满足所述主干的每一数据记录是否满足各复杂谓词,来生成所述复杂谓词位图矩阵中的与该数据记录对应的第二维度向量(Bsj)的各元素。
6.根据权利要求1所述的方法,其中,所述复杂谓词位图矩阵的每一成员具有0或1的值,其中值1表示与其所在的第二维度对应的主干查询结果中的成员被以与其所在的第一维度对应的复杂谓词查询到;值0表示与其所在的第二维度对应的主干查询结果中的成员未被以与其所在的第一维度对应的复杂谓词查询到。
7.根据权利要求1所述的方法,其中,
所述执行结构成本是对于特定数据库对象的一项数据记录应用该复杂谓词的响应时间。
8.根据权利要求4所述的方法,还包括:
将所述具有最低总体执行结构成本的排列所对应的复杂谓词位图矩阵作为与所述查询语句关联的历史反馈信息的至少一部分进行存储。
9.根据权利要求1或8所述的方法,还包括:
接收下一查询语句;
判断是否存在与所述下一查询语句对应的历史反馈信息;以及
在存在对应的历史反馈信息的情况下,应用该对应的历史反馈信息重写该下一查询语句。
10.一种用于数据库查询优化的系统,包括:
提取装置,被配置为从查询语句提取复杂谓词,所述查询语句包括至少两个复杂谓词;
执行装置,被配置为执行与所述查询语句相关联的查询;
执行结构成本获取装置,被配置为获取每一复杂谓词的执行结构成本(ΔTi);
计算装置,被配置为根据查询的结果和所述执行结构成本(ΔTi)计算与复杂谓词的每一排列对应的总体执行结构成本;以及
选择装置,被配置为选择具有最低总体执行结构成本的排列以用于数据库查询优化,
其中所述系统还包括:
重写装置,被配置为根据历史反馈信息对所述查询语句进行重写,
其中,所述提取装置提取复杂谓词后所述查询语句的剩余部分被作为主干,并且
所述计算装置被配置为:
根据查询的结果与复杂谓词关联地生成复杂谓词位图矩阵(B),其中所述复杂谓词位图矩阵具有第一维度和第二维度;以及
根据所述执行结构成本和所述复杂谓词位图矩阵计算复杂谓词的每一排列的总体执行结构成本。
11.根据权利要求10所述的系统,其中,所述执行装置被配置为执行下列中的任一项:
针对所述主干以及针对每一复杂谓词分别与所述主干的结合执行查询;
针对所述查询语句自身执行查询。
12.根据权利要求10所述的系统,其中,执行结构成本获取装置被配置为执行下列中的任一项:
基于用于与所述查询语句相关联的查询的执行结构估算所述执行结构成本;
基于与所述查询语句相关联的查询的执行得到所述执行结构成本。
13.根据权利要求10所述的系统,其中,所述复杂谓词位图矩阵的每一成员具有0或1的值,其中值1表示与其所在的第二维度对应的主干查询结果中的成员被以与其所在的第一维度对应的复杂谓词查询到;值0表示与其所在的第二维度对应的主干查询结果中的成员未被以与其所在的第一维度对应的复杂谓词查询到。
14.根据权利要求10所述的系统,还包括:
存储装置,被配置为将所述具有最低总体执行结构成本的排列所对应的复杂谓词位图矩阵作为与所述查询语句关联的历史反馈信息的至少一部分进行存储。
15.根据权利要求10所述的系统,还包括:
接收装置,被配置为接收下一查询语句;
判断装置,被配置为判断是否存在与所述下一查询语句对应的历史反馈信息;以及
重写装置,被配置为在存在对应的历史反馈信息的情况下,应用该对应的历史反馈信息重写该下一查询语句。
CN201210092036.8A 2012-03-30 2012-03-30 用于数据库查询优化的方法和系统 Active CN103365885B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210092036.8A CN103365885B (zh) 2012-03-30 2012-03-30 用于数据库查询优化的方法和系统
US13/846,019 US9110946B2 (en) 2012-03-30 2013-03-18 Database query optimization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210092036.8A CN103365885B (zh) 2012-03-30 2012-03-30 用于数据库查询优化的方法和系统

Publications (2)

Publication Number Publication Date
CN103365885A CN103365885A (zh) 2013-10-23
CN103365885B true CN103365885B (zh) 2016-12-14

Family

ID=49236478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210092036.8A Active CN103365885B (zh) 2012-03-30 2012-03-30 用于数据库查询优化的方法和系统

Country Status (2)

Country Link
US (1) US9110946B2 (zh)
CN (1) CN103365885B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152504B2 (en) 2009-03-11 2018-12-11 Actian Netherlands B.V. Column-store database architecture utilizing positional delta tree update system and methods
US9922090B1 (en) 2012-03-27 2018-03-20 Actian Netherlands, B.V. System and method for automatic vertical decomposition of a table for improving input/output and memory utilization in a database
US9449046B1 (en) * 2012-07-31 2016-09-20 Actian Netherlands B.V. Constant-vector computation system and method that exploits constant-value sequences during data processing
US11507574B1 (en) 2013-03-13 2022-11-22 Actian Netherlands B.V. Adaptive selection of a processing method based on observed performance for improved and robust system efficiency
US20150127323A1 (en) * 2013-11-04 2015-05-07 Xerox Corporation Refining inference rules with temporal event clustering
CN103678589B (zh) * 2013-12-12 2017-02-01 用友网络科技股份有限公司 一种基于等价类的数据库内核查询优化方法
CN107004034B (zh) * 2015-02-12 2021-01-29 华为技术有限公司 将列与函数关联以优化查询执行的方法和查询优化服务器
US10853367B1 (en) * 2016-06-16 2020-12-01 Intuit Inc. Dynamic prioritization of attributes to determine search space size of each term, then index on those sizes as attributes
CN107256267B (zh) * 2017-06-19 2020-07-24 北京百度网讯科技有限公司 查询方法和装置
CN110909014A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 优化建议生成及数据库查询方法、装置、设备及存储介质
CN109656946B (zh) * 2018-09-29 2022-12-16 创新先进技术有限公司 一种多表关联查询方法、装置及设备
US11550848B2 (en) 2020-01-30 2023-01-10 Adobe Inc. Query processing using matrix and reduced predicate statements
US11487758B2 (en) 2020-01-30 2022-11-01 Adobe Inc. Query processing using hybrid inverted index of predicates
US11354290B2 (en) * 2020-01-30 2022-06-07 Adobe Inc. Query processing using inverted index of predicate statements
US11321314B2 (en) 2020-05-22 2022-05-03 International Business Machines Corporation Query content-based data generation
US11593372B2 (en) * 2020-07-01 2023-02-28 International Business Machines Corporation Automated feedback and continuous learning for query optimization

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177557A1 (en) 2003-09-06 2005-08-11 Oracle International Corporation Automatic prevention of run-away query execution
US20050210023A1 (en) * 2004-03-18 2005-09-22 Renato Barrera Query optimizer using implied predicates
US8775413B2 (en) * 2008-06-30 2014-07-08 Teradata Us, Inc. Parallel, in-line, query capture database for real-time logging, monitoring and optimizer feedback
US8185508B2 (en) * 2008-08-08 2012-05-22 Oracle International Corporation Adaptive filter index for determining queries affected by a DML operation

Also Published As

Publication number Publication date
US9110946B2 (en) 2015-08-18
CN103365885A (zh) 2013-10-23
US20130262498A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
CN103365885B (zh) 用于数据库查询优化的方法和系统
De Koning et al. A rational reconstruction of Six‐Sigma's breakthrough cookbook
KR101688555B1 (ko) 데이터세트 요소의 매핑
CN104050202B (zh) 用于搜索数据库的方法和装置
CN104346366A (zh) 扩展测试数据的方法及设备
CN102023989A (zh) 一种信息检索方法及其系统
CN110008266A (zh) 数据交换文件解析方法和装置
CN108228187B (zh) 一种数值程序的全局优化方法
CN105868106A (zh) 超声设备可靠性的测试方法及测试系统
CN106843993B (zh) 一种逆向解析gpu指令的方法及系统
CN102043659A (zh) 消除内存访问冲突的编译装置及其实现方法
Liu Fast industrial product design method and its application based on 3D CAD system
CN111444220A (zh) 规则驱动和数据驱动相结合的跨平台sql查询优化方法
CN109146278A (zh) 一种基于机器学习的不动产评估方法
CN113064586A (zh) 一种基于抽象语法树增广图模型的代码补全方法
Mayr et al. Concept for an integrated product and process development of electric drives using a knowledge-based system
Sanyal et al. Simulation and big data challenges in tuning building energy models
CN104598374B (zh) 校正失效脚本的方法和设备
CN108874395A (zh) 一种组件化流处理过程中的硬编译方法及装置
Del Castillo The ASM Workbench: A Tool Environment for Computer-Aided Analysis and Validation of Abstract State Machine Models: Tool Demonstration
US20050223353A1 (en) Symbolic model checking of software
JP5887811B2 (ja) コンパイル装置、コンパイル方法、コンパイルプログラム、記録媒体
Adedayo et al. Schema reconstruction in database forensics
Iyenghar et al. End-to-end path delay estimation in embedded software involving heterogeneous models
Busch et al. A cross-disciplinary language for change propagation rules

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant