CN102968420B - 数据库查询的方法和系统 - Google Patents
数据库查询的方法和系统 Download PDFInfo
- Publication number
- CN102968420B CN102968420B CN201110270208.1A CN201110270208A CN102968420B CN 102968420 B CN102968420 B CN 102968420B CN 201110270208 A CN201110270208 A CN 201110270208A CN 102968420 B CN102968420 B CN 102968420B
- Authority
- CN
- China
- Prior art keywords
- inquiry
- plan
- target
- total time
- inquiry 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.)
- Expired - Fee Related
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/2455—Query execution
-
- 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
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
本发明公开了一种数据库查询的方法和系统,该方法包括:响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果。该查询方法和系统能同时减少查询响应时间和查询总时间。
Description
技术领域
本发明一般涉及数据库管理系统,更具体地,涉及一种数据库查询的方法和系统。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。关系数据库是目前常用的数据库类型,对关系型数据库中的数据,目前使用结构化查询语言(SQL)进行查询。SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。SQL集成实现了数据库生命周期中的全部操作。SQL提供了与关系数据库进行交互的方法,它可以与标准的编程语言一起工作。
数据库管理系统(databasemanagementsystem)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。现有的关系型数据库管理系统包括IBM的DB2、Oracle、Informix、Sybase、SQLServer等。数据库管理系统的查询引擎(QueryExecutionRuntime)都支持SQL语言的查询功能。用户或者应用程序可以使用SQL语言,通过数据库管理系统的查询引擎对其管理的数据库进行查询。查询的结果一般包含多个记录,一般称返回第一条满足查询条件数据的时间为查询响应时间(responsetime),而返回所有满足查询条件的数据结果集的时间称为查询总时间(totaltime)。
目前的数据库管理系统接收到查询请求时,会默认尽可能使用最小查询总时间运行查询,数据库管理系统会产生一个查询访问计划,该计划能够以最有效的方式返回给用户或者发出查询的应用程序完整的查询结果。有时,发出查询的应用程序或用户倾向于尽快得到开始的几个查询结果,而不关注完成整个查询所经过的时间,这种应用可以使用语句“OPTIMIZEDFORFIRSTNROW”来通知数据库管理系统的查询引擎优化器以最小查询响应时间而不是最小查询总时间来执行查询。
然而,许多应用需要同时以最小查询响应时间和最小查询总时间来执行查询。当一个发出查询的应用发出查询请求,它需要尽快从数据库中得到响应,然后得到初始的几个查询结果,以便可以判断是否进行后续的查询或者其它商业逻辑。当前的数据库管理系统只能或者提供以最小查询响应时间的查询计划,或者提供以最小查询总时间的查询计划,这些查询计划都没有办法能同时减少查询响应时间和查询总时间。
发明内容
因此,需要一种新的数据库查询方法,该方法使得用户或应用程序在查询数据库时,能够同时以最小查询响应时间和最小查询执行时间来执行该查询,从而满足用户或应用程序的数据库查询要求。
根据本发明的一个方面,提供了一种数据库查询的方法,包括:
响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;
响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果。
根据本发明的另一个方面,提供了一种数据库查询的系统,包括:
获得装置,被配置为响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
执行装置,被配置为执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
控制装置,被配置为检测以最小查询总时间为目标的查询计划是否执行到指定点;
输出装置,被配置为输出查询结果;
其中,在所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点之前,所述输出装置输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点,所述执行装置继续执行以最小查询总时间为目标的查询计划以使所述输出装置输出剩余查询结果。
附图说明
通过对附图中本发明示例实施例方式的更详细描述,本发明的上述、以及其它目的、特征和优势将变得更加明显,其中,相同的参考标号通常代表本发明示例实施例方式中的相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2示出一个示例性的查询请求及其对应的两张表;
图3示出了哈希连接的工作方式;
图4示出了本发明提出的新的数据库查询方法的方法步骤;以及
图5示出了本发明提出的数据库查询的系统的结构框图。
具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
在数据库的应用中,数据一般存在于多个相关联的表中,基本上没有数据只存在于一张表的情况。小的应用系统的数据集有十几张表,大型系统数据集有上千张表。因此,用户和数据库应用程序经常要做的就是在多个表的大数据集中进行数据查询。也就是使用数据库多表关联查询,多表关联查询一般使用表连接技术,这种查询最为耗时。因此,一般来说,只有这种多表关联查询才会有同时以最小查询响应时间和最小查询总时间来执行该查询的必要性,单张表的查询一般来说响应是非常快的,如果用户或应用程序有上述要求,使用最小查询总时间来运行查询即可。
以查询的连接操作是对数据库中的两个表进行的操作为例,多表的关联操作可以认为是若干组两张表关联的组合,图2示出一个示例性的查询请求及其对应的两张表,以下的叙述中,以此为实例,讲述本发明的方法及各种实现方式。查询的连接操作也可以是对数据库中的多个查询中间结果集、或表与查询中间结果集进行的操作,因此,本领域技术人员可以知道,表T1和表T2之一或全部也可以是查询结果的中间集。图2中,包含了两张表,其共同的列为Product_id,查询语句为:Select*fromT1,T2whereT1.Product_id=T2.Product_id。
多表关联查询一般使用的表连接技术包括嵌套循环连接(nestedloopjoin)、哈希连接(hashjoin)以及排序合并连接(mergejoin)等。
嵌套循环连接的工作方式是这样的:首先选择一张表作为连接的驱动表,例如图2的表T1,然后提取驱动表T1中符合条件的记录,与被驱动表,例如图2的表T2的连接列进行关联查询,得到符合条件的记录。在这个过程中,首先提取驱动表T1中符合条件的第一条记录,再与被驱动表T2的连接列进行关联查询,得到相应的记录行。在关联查询的过程中,会持续提取驱动表T1中其它符合条件的记录与被驱动表T2关联查询,不需要等到全部流程结束再返回结果集,而是不断地将查询出来的结果集返回。在这种情况下,终端用户将会快速地得到返回的首批记录。因此嵌套循环连接返回前几条记录的速度是非常快的。嵌套循环连接适用于查询的选择性强、约束性高并且仅返回小部分记录的结果集。
图3示出了哈希连接的工作方式,根据图3,哈希连接的工作方式分为两个阶段:首先是构建阶段:查询引擎优化器首先选择一张表,例如图2的表T2,运用哈希函数对表T2的连接列(即表T2中的Product_id列),进行计算产生一张哈希表;然后是探测阶段:查询引擎优化器对另外一张表(例如图2的表T1)的每条记录的连接列(即表T1中的Product_id列)运用同样的哈希函数计算得到哈希值并在生成的哈希表中查找是否存在匹配的哈希值。对于数据量比较大的表T2,哈希连接的构建阶段需要花费比较长的时间进行哈希表的初始化;而对于分布式数据库环境下,若数据还需要从远端提取,该构造时间还将进一步延长。因此,哈希连接存在较长的查询响应时间。但是,一旦哈希表建立完毕,能够快速获得全部的查询结果集,因此,哈希连接比较适用于要求查询总时间小并且返回大数据量结果集的查询。
排序合并连接的方法比较简单。排序合并连接的工作方式也分为两个阶段,类似于哈希连接:首先是构建阶段:查询引擎优化器对两张表中大的表按照连接列进行排序,即图2的表T2按照Product_id列进行排序,排序需要较长的时间;然后是运行阶段:首先对两张表中另外一张表,即图2的表T1,也按照Productid列进行排序,由于该表较小,排序时间短,查询引擎优化器对两张排序后的表直接进行合并连接,提取符合条件的记录,就可以得到查询结果。一旦排序结束,能够快速获得全部查询结果,因此,相比嵌套循环连接,排序合并连接比较适用于要求查询总时间小并且返回大数据量结果的查询。
现有技术中,对于大数据集的连接查询,数据库管理系统的查询引擎优化器通常为了得到更好的查询总时间,通常会选择哈希连接或者排序合并连接。在强制数据库管理系统的查询引擎优化器得到更好查询响应时间时,查询引擎优化器会选择嵌套循环连接。
以下表1比较了这三种连接方式,由表1可见,不同的连接类型具有不同的优势,根据这样的优势,可以将连接类型分为两类,一类是查询总时间最小的连接,一类是查询响应时间最小的连接。相应地,查询引擎优化器可以输出以查询总时间最小的连接建立的查询总时间最小的查询计划和以查询响应时间最小的连接建立的查询总时间最小的查询计划。
表1三种连接方式的比较
连接类型 | 优势 | 大数据集 |
排序合并连接 | 查询总时间小 | 快 |
哈希连接 | 查询总时间小 | 快 |
嵌套循环连接 | 查询响应时间小 | 慢 |
本发明根据上述分析,提出了一种新的数据库查询方法,该方法能够同时确保查询总时间最小以及查询响应时间最小。
图4示出了本发明提出的新的数据库查询方法的方法步骤,根据图4,在步骤S401,响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;在步骤S402,开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;在步骤S403,在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;在步骤S404,响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果。
在图4所示的方法中,这种关联查询可能是来自于用户,也可能来自于应用程序,甚至是数据库内部的查询请求-即数据库查询引擎内部为了完成复杂的查询请求,而对查询的中间结果所作的联合查询,因此,这种查询对应的连接操作是可以对数据库中的两个表、或两个查询中间结果集、或表与查询中间结果集进行的。
在一种实施方式中,响应于以最小查询总时间为目标的查询计划执行到指定点,可以停止执行以最小查询响应时间为目标的查询计划,以节省CPU时间,也可以不停止执行以最小查询响应时间为目标的查询计划,但是不采用其后续的查询结果。
在一种实施方式中,以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用哈希连接的查询计划。在这种实施方式中,使用嵌套循环连接的查询计划执行中可以快速提供初始的查询结果,具体来说,对于图2的示例,如果表T2比较大,可以选择表T1做为嵌套循环连接的驱动表,同时又作为哈希连接的构建阶段的另一张表。在这种实施方式中,嵌套循环连接的查询计划对于表T1的每条记录,逐一与表T2中的连接列进行关联查询,得到相应的记录行,即判断是否匹配,如果匹配,则说明该纪录是输出结果中的记录,可以输出;如果不匹配,就忽略该记录,继续匹配下一条记录。同时,哈希连接对表T2的Product_id列的每个数据项利用哈希函数计算哈希值,生成一张哈希表。一旦哈希表生成,说明哈希连接构建阶段结束,这里,以最小查询总时间为目标的查询计划执行到指定点中的指定点是指哈希连接构建阶段结束的点,对于哈希连接构建阶段结束的点可以在数据库查询引擎内部反复查询,直至该点达到;也可以在哈希连接内部使用事件的方式,一旦哈希连接相关的程序执行到该点,通知查询引擎。然后查询引擎可以停止以最小查询响应时间为目标的查询计划的执行;并且继续执行哈希连接计划,输出剩余的查询结果。
在一种继续执行哈希连接计划,输出剩余的查询结果的实施方式中,对驱动表T1中已经执行过嵌套循环连接计划的记录不再执行哈希连接,因此,哈希连接是从表T1中第一个未执行嵌套循环连接的记录开始继续执行的,即执行使用哈希连接的查询计划的探测阶段的操作,对该记录利用相同的哈希函数计算该记录的连接列的哈希值,然后和从表T2中得到的哈希表进行匹配,如果存在匹配值,说明该记录是输出结果,可以输出,否则,继续对表T1的下一个记录执行上述过程。
在另一种实施方式中,以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用排序合并连接的查询计划。在这种实施方式中,使用嵌套循环连接的查询计划执行中可以快速提供初始的查询结果,具体来说,对于图2的示例,如果表T2比较大,可以选择表T1做为嵌套循环连接的驱动表,在这种实施方式中,嵌套循环连接的查询计划对于表T1的每条记录,逐一与表T2中的连接列进行关联查询相应的记录行,即判断是否匹配,如果匹配,则说明该纪录是输出结果中的记录,可以输出给用户;如果不匹配,就忽略该记录,继续匹配下一条记录。同时,在所述排序合并连接的构建阶段,对非驱动表的另外一张表,即表T2按照Product_id列进行排序,得到另外一张表的排序表,可以使用临时表存储。一旦表T2的排序结束,说明排序合并连接的构建阶段结束,这里,以最小查询总时间为目标的查询计划执行到指定点中的指定点是指排序合并连接构建阶段结束的点,对于排序合并连接构建阶段结束的点可以在查询引擎内部反复查询,直至该点达到;也可以在排序合并连接内部使用事件的方式,一旦该点到达,通知查询引擎。然后查询引擎可以停止以最小查询响应时间为目标的查询计划的执行,并且继续执行排序合并连接计划,输出剩余的查询结果。
在一种继续执行排序合并连接计划,输出剩余的查询结果的实施方式中,对驱动表T1中已经执行过嵌套循环连接计划的记录不再执行排序合并连接,也就是说,对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作。这种方式中,包含三个步骤,首先对所述驱动表去除已经执行过嵌套循环连接查询计划的记录后,按照连接列进行排序,得到剩余驱动表的排序表;然后,对剩余驱动表的排序表和另外一张表的排序表进行合并连接操作,得到所述剩余查询结果。
在另一种继续执行以最小查询总时间为目标的查询计划,输出剩余查询结果的实施方式中,包含以下三个步骤:首先存储所述初始查询结果;然后,存储以最小查询总时间为目标的查询计划的全部查询结果;最后,将全部查询结果中去除初始查询结果,得到剩余查询结果。上述实施方式可以有多种变种,例如,可以采用一个临时表存储以最小查询响应时间为目标的查询计划执行后得到初始查询结果,当获得以最小查询总时间为目标的查询计划的执行结果后,可以使用另一张临时表存储该结果,然后对两个表进行合并,删除重复项,就得到最后应该输出的查询结果;也可以使用该结果与临时表进行比较,将执行结果中包含的临时表的数据项除去,就可以得到最后应该输出的查询结果。还可以在以最小查询总时间为目标的查询计划的执行过程中,每获得一个以最小查询总时间为目标的查询计划执行的查询结果,就与临时表中的数据项进行比较,如果比较结果相同,就不输出该数据项;如果比较结果不同,就输出该数据项。这里还有很多种等同的实施方式,例如,获得临时表的数据项的个数,每获得一个以最小查询总时间为目标的查询计划执行的查询结果,就与临时表中的数据项进行比较,如果比较结果相同,就不输出该数据项,并且使用计数器计数;如果比较结果不同,就输出该数据项,当计数器的计数结果与临时表的数据项的个数相同,就不再进一步比较,直接输出后续的全部查询结果,这样可以进一步减少查询总时间。
在另外一种实施方式中,上述的以最小查询响应时间为目标的查询计划执行后得到初始查询结果也可以不采用临时表进行存储,而是直接存储在内存或者高速缓存中,或者其它存储部件中,使用与上述方法类似的方法获得最后应该输出的查询结果。
在又一种实施方式中,可以使用当前数据库查询引擎优化器的基于代价模型对这两个表或两个查询中间结果集或表与查询中间结果集的连接代价进行评估,判断使用哈希连接还是排序合并连接所花费的代价小,从而选择合适的最小总时间查询计划。即该实施方式的步骤为:首先对以最小查询总时间为目标的查询计划使用哈希连接的查询计划以及使用排序合并连接的查询计划进行评估,其中,所述评估使用数据库查询引擎优化器的代价模型;然后选择上述二者中代价小的查询计划作为以最小查询总时间为目标的查询计划。这里,代价模型是数据库根据当前的系统资源,连接表的统计信息,索引信息等,对多个可能的执行计划分别计算出所需代价,然后从其中选择代价最小的执行计划去执行SQL语句。现有的数据库中已经支持该模型,因此这里不再赘述该模型的原理和使用方式。
在同一个发明构思下,本发明还公开了一种数据库查询的系统,图5示出了该系统的结构,根据图5,该系统包括:获得装置501,被配置为响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;502执行装置,被配置为执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;控制装置504,被配置为检测以最小查询总时间为目标的查询计划是否执行到指定点;输出装置503,被配置为输出查询结果;其中,在所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点之前,所述输出装置输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点,所述执行装置继续执行以最小查询总时间为目标的查询计划以使所述输出装置输出剩余查询结果。图5所示的数据库查询系统可以嵌入在当前数据库查询引擎中。
在一种实施方式中,以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用哈希连接的查询计划,所述指定点是哈希连接的构建阶段结束的点。其中所述执行装置继续执行以最小查询总时间为目标的查询计划包括:执行装置从使用嵌套循环连接的查询计划的驱动表中的第一个未执行嵌套循环连接查询计划的记录开始,执行使用哈希连接的查询计划的探测阶段的操作。
在另外一种实施方式中,以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用排序合并连接的查询计划,所述指定点是排序合并连接的构建阶段结束的点。其中所述执行装置继续执行以最小查询总时间为目标的查询计划包括:执行装置对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作。对于该执行装置,在一种具体的实时方式中,该执行装置包括:去除装置,被配置为对所述驱动表去除已经执行过嵌套循环连接查询计划的记录后,按照连接列进行排序,得到剩余驱动表的排序表;以及合并连接装置,被配置为对剩余驱动表的排序表和另外一张表的排序表进行合并连接操作,得到所述剩余查询结果。
在又一种实施方式中,所述执行装置还包括:初始查询结果存储装置,被配置为存储所述初始查询结果;全部查询结果存储装置,被配置为存储以最小查询总时间为目标的查询计划的全部查询结果;以及剩余查询结果获得装置,被配置为将全部查询结果中去除初始查询结果,得到剩余查询结果。
在本发明的系统中,所述查询请求是对数据库中的以下至少一个进行的:多个表、多个查询中间结果集、或者表与查询中间结果集。
在再一种实施方式中,该系统还包括(图5未示出)评估装置,被配置为对以最小查询总时间为目标的查询计划使用哈希连接的查询计划以及使用排序合并连接的查询计划进行评估,其中,所述评估使用数据库查询引擎优化器的代价模型;以及选择装置,被配置为选择上述二者中代价小的查询计划作为以最小查询总时间为目标的查询计划。
本发明可以采取硬件实施方式、软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。
而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行系统、装置或设备使用或与其结合使用。
介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的系统(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适合于存储/或执行程序代码的数据处理系统将包括至少一个处理器,其直接地或通过系统总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/O控制器耦合到系统。
网络适配器也可以耦合到系统,以使得数据处理系统能够通过中间的私有或公共网络而耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。
从上述描述应当理解,在不脱离本发明真实精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。
Claims (12)
1.一种数据库查询的方法,包括:
响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;以及
响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果;
其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用哈希连接的查询计划,所述指定点是哈希连接的构建阶段结束的点;
其中所述继续执行以最小查询总时间为目标的查询计划包括:从使用嵌套循环连接的查询计划的驱动表中的第一个未执行嵌套循环连接查询计划的记录开始,执行使用哈希连接的查询计划的探测阶段的操作。
2.根据权利要求1所述的方法,其中所述继续执行以最小查询总时间为目标的查询计划,输出剩余查询结果包括:
存储所述初始查询结果;
存储以最小查询总时间为目标的查询计划的全部查询结果;
将全部查询结果中去除初始查询结果,得到剩余查询结果。
3.根据权利要求1所述的方法,其中所述查询请求是对数据库中的以下至
少一个进行的:
多个表;
多个查询中间结果集;
表与查询中间结果集。
4.根据权利要求1所述的方法,其中在获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划之前还包括:
利用数据库查询引擎优化器的代价模型评估以最小查询总时间为目标的查询计划使用哈希连接的查询计划以及使用排序合并连接的查询计划;
选择上述二者中代价小的查询计划作为以最小查询总时间为目标的查询计划。
5.一种数据库查询的方法,包括:
响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;以及
响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果;
其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用排序合并连接的查询计划,所述指定点是排序合并连接的构建阶段结束的点;并且其中,在所述排序合并连接的构建阶段中对使用嵌套循环连接的查询计划的驱动表之外的另外一张表按照连接列进行排序,得到另外一张表的排序表;并且其中所述继续执行以最小查询总时间为目标的查询计划包括:对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作。
6.根据权利要求5所述的方法,其中对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作包括:
对所述驱动表去除已经执行过嵌套循环连接查询计划的记录后,按照连接列进行排序,得到剩余驱动表的排序表;
对剩余驱动表的排序表和另外一张表的排序表进行合并连接操作,得到所述剩余查询结果。
7.一种数据库查询的系统,包括:
获得装置,被配置为响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
执行装置,被配置为执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
控制装置,被配置为检测以最小查询总时间为目标的查询计划是否执行到指定点;
输出装置,被配置为输出查询结果;
其中,在所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点之前,所述输出装置输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点,所述执行装置继续执行以最小查询总时间为目标的查询计划以使所述输出装置输出剩余查询结果;
其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用哈希连接的查询计划,所述指定点是哈希连接的构建阶段结束的点;
其中所述执行装置继续执行以最小查询总时间为目标的查询计划包括:执行装置从使用嵌套循环连接的查询计划的驱动表中的第一个未执行嵌套循环连接查询计划的记录开始,执行使用哈希连接的查询计划的探测阶段的操作。
8.根据权利要求7所述的系统,其中所述执行装置还包括:
初始查询结果存储装置,被配置为存储所述初始查询结果;
全部查询结果存储装置,被配置为存储以最小查询总时间为目标的查询计划的全部查询结果;
剩余查询结果获得装置,被配置为将全部查询结果中去除初始查询结果,得到剩余查询结果。
9.根据权利要求7所述的系统,其中所述查询请求是对数据库中的以下至少一个进行的:
多个表;
多个查询中间结果集;
表与查询中间结果集。
10.根据权利要求7所述的系统,其中还包括:
评估装置,被配置为利用数据库查询引擎优化器的代价模型评估以最小查询总时间为目标的查询计划使用哈希连接的查询计划以及使用排序合并连接的查询计划;
选择装置,被配置为选择上述二者中代价小的查询计划作为以最小查询总时间为目标的查询计划。
11.一种数据库查询的系统,包括:
获得装置,被配置为响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
执行装置,被配置为执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;
控制装置,被配置为检测以最小查询总时间为目标的查询计划是否执行到指定点;
输出装置,被配置为输出查询结果;
其中,在所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点之前,所述输出装置输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点,所述执行装置继续执行以最小查询总时间为目标的查询计划以使所述输出装置输出剩余查询结果;
其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用排序合并连接的查询计划,所述指定点是排序合并连接的构建阶段结束的点;
其中在所述排序合并连接的构建阶段中对使用嵌套循环连接的查询计划的驱动表之外的另外一张表按照连接列进行排序,得到另外一张表的排序表;并且其中所述执行装置继续执行以最小查询总时间为目标的查询计划包括:执行装置对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作。
12.根据权利要求11所述的系统,其中所述执行装置包括:
去除装置,被配置为对所述驱动表去除已经执行过嵌套循环连接查询计划的记录后,按照连接列进行排序,得到剩余驱动表的排序表;
合并连接装置,被配置为对剩余驱动表的排序表和另外一张表的排序表进行合并连接操作,得到所述剩余查询结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110270208.1A CN102968420B (zh) | 2011-08-31 | 2011-08-31 | 数据库查询的方法和系统 |
US13/597,389 US8812485B2 (en) | 2011-08-31 | 2012-08-29 | Database query |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110270208.1A CN102968420B (zh) | 2011-08-31 | 2011-08-31 | 数据库查询的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102968420A CN102968420A (zh) | 2013-03-13 |
CN102968420B true CN102968420B (zh) | 2016-05-04 |
Family
ID=47745120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110270208.1A Expired - Fee Related CN102968420B (zh) | 2011-08-31 | 2011-08-31 | 数据库查询的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8812485B2 (zh) |
CN (1) | CN102968420B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9229983B2 (en) * | 2012-11-30 | 2016-01-05 | Amazon Technologies, Inc. | System-wide query optimization |
CN103399921B (zh) * | 2013-08-01 | 2016-08-10 | 天津火星科技有限公司 | 一种基于Oracle数据库的一致点捕获方法 |
CN104679757B (zh) * | 2013-11-27 | 2018-10-12 | 华为技术有限公司 | 数据处理方法及设备 |
CN103823834B (zh) * | 2013-12-03 | 2017-04-26 | 华为技术有限公司 | 一种哈希连接算子间数据传递的方法及装置 |
US9870396B2 (en) | 2014-03-12 | 2018-01-16 | International Business Machines Corporation | Immediate join spilling scheme for a database |
CN107735781B (zh) * | 2015-01-14 | 2020-03-10 | 华为技术有限公司 | 存储查询结果的方法和装置、计算设备 |
CN104599181A (zh) * | 2015-02-11 | 2015-05-06 | 中国农业银行股份有限公司 | 一种货币类产品的查询方法及装置 |
CN104731729B (zh) * | 2015-03-23 | 2018-07-13 | 华为技术有限公司 | 一种基于异构系统的表连接优化方法、cpu和加速器 |
US20160342646A1 (en) * | 2015-05-20 | 2016-11-24 | International Business Machines Corporation | Database query cursor management |
CN107193813B (zh) * | 2016-03-14 | 2021-05-14 | 阿里巴巴集团控股有限公司 | 数据表连接方式处理方法及装置 |
CN106250567A (zh) * | 2016-08-31 | 2016-12-21 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统中表连接数据分布方式的选择方法及装置 |
US10599649B2 (en) | 2016-12-20 | 2020-03-24 | Microsoft Technology Licensing, Llc | Real time query planner statistics with time based changing |
CN107357825A (zh) * | 2017-06-15 | 2017-11-17 | 中工国际工程股份有限公司 | 一种基于数据库的项目文档管理系统 |
CN109241093B (zh) * | 2017-06-30 | 2021-06-08 | 华为技术有限公司 | 一种数据查询的方法、相关装置及数据库系统 |
CN109696506B (zh) * | 2017-10-23 | 2021-04-06 | 中国石油化工股份有限公司 | 一种用于对样品进行分子识别的方法 |
US11003662B2 (en) * | 2017-10-30 | 2021-05-11 | Salesforce.Com, Inc. | Trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures |
US11138266B2 (en) * | 2019-02-21 | 2021-10-05 | Microsoft Technology Licensing, Llc | Leveraging query executions to improve index recommendations |
CN110008238B (zh) * | 2019-03-12 | 2021-04-27 | 北京东方国信科技股份有限公司 | Nlj改进表连接方法及基于该改进方法的数据查询方法 |
CN111666279B (zh) * | 2020-04-14 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
US20220058179A1 (en) * | 2020-08-24 | 2022-02-24 | International Business Machines Corporation | Executing database transactions |
CN112685444A (zh) * | 2020-12-24 | 2021-04-20 | 江苏苏宁云计算有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
US20240126756A1 (en) * | 2022-10-12 | 2024-04-18 | Oracle International Corporation | One-hot encoder using lazy evaluation of relational statements |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812996A (en) * | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
CN101923551A (zh) * | 2009-06-12 | 2010-12-22 | Sap股份公司 | 信息值驱动的接近实时的决策支持 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1146821C (zh) * | 2000-02-21 | 2004-04-21 | 国际商业机器公司 | 面向用户的数据库查询方法及系统 |
CA2409276A1 (en) * | 2000-05-26 | 2001-12-06 | Computer Associates Think, Inc. | System and method for automatically generating database queries |
US7146360B2 (en) | 2002-12-18 | 2006-12-05 | International Business Machines Corporation | Method and system for improving response time for database query execution |
US7574424B2 (en) * | 2004-10-13 | 2009-08-11 | Sybase, Inc. | Database system with methodology for parallel schedule generation in a query optimizer |
US20060288030A1 (en) * | 2005-06-09 | 2006-12-21 | Ramon Lawrence | Early hash join |
US8402469B2 (en) | 2008-04-08 | 2013-03-19 | Infosys Limited | Allocating resources for parallel execution of query plans |
CN102081678B (zh) * | 2011-03-14 | 2013-07-03 | 华中科技大学 | 一种数据库查询中最优执行计划的搜索方法 |
-
2011
- 2011-08-31 CN CN201110270208.1A patent/CN102968420B/zh not_active Expired - Fee Related
-
2012
- 2012-08-29 US US13/597,389 patent/US8812485B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812996A (en) * | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
CN101923551A (zh) * | 2009-06-12 | 2010-12-22 | Sap股份公司 | 信息值驱动的接近实时的决策支持 |
Non-Patent Citations (2)
Title |
---|
Goetz Graefe.Query Evaluation Techniques for Large Databases.《ACM Computing Surveys》.1993,第25卷(第2期),73,105-107,123. * |
Query Execution Algorithm in Web Environment with Limited Availability of Statistics;Juliusz Jezierski et al.;《Computational Science-ICCS2004》;20040606;第3036卷;532-536 * |
Also Published As
Publication number | Publication date |
---|---|
US20130054568A1 (en) | 2013-02-28 |
CN102968420A (zh) | 2013-03-13 |
US8812485B2 (en) | 2014-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968420B (zh) | 数据库查询的方法和系统 | |
US10922313B2 (en) | Implementing composite custom indices in a multi-tenant database | |
US20200012663A1 (en) | Index Mechanism for Report Generation | |
US8732163B2 (en) | Query optimization with memory I/O awareness | |
US7548903B2 (en) | Method and apparatus for automatic recommendation and selection of clustering indexes | |
US7356524B2 (en) | Query runtime estimation using statistical query records | |
US8712972B2 (en) | Query optimization with awareness of limited resource usage | |
US20080195578A1 (en) | Automatically determining optimization frequencies of queries with parameter markers | |
US20100057796A1 (en) | Index selection in a database system | |
US20110145210A1 (en) | System and Method for Managing One or More Databases | |
CN101178727A (zh) | 用于搜索数据库的方法和系统 | |
US8538988B2 (en) | Selective storing of mining models for enabling interactive data mining | |
CN103299267A (zh) | 用于执行多租户存储中的交叉存储连接的方法和系统 | |
US20030088546A1 (en) | Collecting and/or presenting demographics information in a database system | |
CN102411600B (zh) | 一种基于蕴涵规则的数据质量自动检测方法 | |
WO2010120465A2 (en) | Testing efficiency and stability of a database query engine | |
CN103631842A (zh) | 用于检测多列复合键列集合的方法和系统 | |
CN100367278C (zh) | 历史数据归档和查询装置及方法 | |
CN110637292B (zh) | 用于查询资源高速缓存的系统和方法 | |
US20070106671A1 (en) | Computer-readable recording medium storing data collection program and data collection apparatus | |
US8392359B2 (en) | Trend analysis based upon derived state tables | |
Castro Fernandez et al. | A demo of the data civilizer system | |
CN108197187A (zh) | 查询语句的优化方法、装置、存储介质和计算机设备 | |
US8577902B1 (en) | Data organization and indexing related technology | |
KR101030250B1 (ko) | 데이터 처리방법 및 데이터 처리 프로그램 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160504 Termination date: 20200831 |
|
CF01 | Termination of patent right due to non-payment of annual fee |