数据库查询的方法和系统的制作方法

文档序号:6433055阅读:949来源:国知局
专利名称:数据库查询的方法和系统的制作方法
技术领域
本发明一般涉及数据库管理系统,更具体地,涉及一种数据库查询的方法和系统。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。关系数据库是目前常用的数据库类型,对关系型数据库中的数据,目前使用结构化查询语言(SQL)进行查询。SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。SQL集成实现了数据库生命周期中的全部操作。SQL提供了与关系数据库进行交互的方法,它可以与标准的编程语言一起工作。 数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。现有的关系型数据库管理系统包括IBM的DB2、Oracle、Informix、Sybase、SQL Server 等。数据库管理系统的查询引擎(Query ExecutionRuntime)都支持SQL语言的查询功能。用户或者应用程序可以使用SQL语言,通过数据库管理系统的查询引擎对其管理的数据库进行查询。查询的结果一般包含多个记录,一般称返回第一条满足查询条件数据的时间为查询响应时间(response time),而返回所有满足查询条件的数据结果集的时间称为查询总时间(total time)。目前的数据库管理系统接收到查询请求时,会默认尽可能使用最小查询总时间运行查询,数据库管理系统会产生一个查询访问计划,该计划能够以最有效的方式返回给用户或者发出查询的应用程序完整的查询结果。有时,发出查询的应用程序或用户倾向于尽快得到开始的几个查询结果,而不关注完成整个查询所经过的时间,这种应用可以使用语句“OPTIMIZED FOR FIRST N ROW”来通知数据库管理系统的查询引擎优化器以最小查询响应时间而不是最小查询总时间来执行查询。然而,许多应用需要同时以最小查询响应时间和最小查询总时间来执行查询。当一个发出查询的应用发出查询请求,它需要尽快从数据库中得到响应,然后得到初始的几个查询结果,以便可以判断是否进行后续的查询或者其它商业逻辑。当前的数据库管理系统只能或者提供以最小查询响应时间的查询计划,或者提供以最小查询总时间的查询计划,这些查询计划都没有办法能同时减少查询响应时间和查询总时间。

发明内容
因此,需要一种新的数据库查询方法,该方法使得用户或应用程序在查询数据库时,能够同时以最小查询响应时间和最小查询执行时间来执行该查询,从而满足用户或应用程序的数据库查询要求。根据本发明的一个方面,提供了一种数据库查询的方法,包括响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;在以最小查询总时间为目标的查询计划 执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果。根据本发明的另一个方面,提供了一种数据库查询的系统,包括获得装置,被配置为响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;执行装置,被配置为执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;控制装置,被配置为检测以最小查询总时间为目标的查询计划是否执行到指定占.输出装置,被配置为输出查询结果;其中,在所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点之前,所述输出装置输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点,所述执行装置继续执行以最小查询总时间为目标的查询计划以使所述输出装置输出剩余查询结果。


通过对附图中本发明示例实施例方式的更详细描述,本发明的上述、以及其它目的、特征和优势将变得更加明显,其中,相同的参考标号通常代表本发明示例实施例方式中的相同部件。图I示出了适于用来实现本发明实施方式的示例性计算系统100的框图;图2示出一个示例性的查询请求及其对应的两张表;图3示出了哈希连接的工作方式;图4示出了本发明提出的新的数据库查询方法的方法步骤;以及图5示出了本发明提出的数据库查询的系统的结构框图。
具体实施例方式将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。图I示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算机系统100可以包括CPU(中央处理单元)101、RAM(随机存取存储器)102、R0M(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU 10URAM 102, ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图I所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。在数据库的应用中,数据一般存在于多个相关联的表中,基本上没有数据只存在于一张表的情况。小的应用系统的数据集有十几张表,大型系统数据集有上千张表。因此,用户和数据库应用程序经常要做的就是在多个表的大数据集中进行数据查询。也就是使用数据库多表关联查询,多表关联查询一般使用表连接技术,这种查询最为耗时。因此,一般来说,只有这种多表关联查询才会有同时以最小查询响应时间和最小查询总时间来执行该查询的必要性,单张表的查询一般来说响应是非常快的,如果用户或应用程序有上述要求,使用最小查询总时间来运行查询即可。
·
以查询的连接操作是对数据库中的两个表进行的操作为例,多表的关联操作可以认为是若干组两张表关联的组合,图2示出一个示例性的查询请求及其对应的两张表,以下的叙述中,以此为实例,讲述本发明的方法及各种实现方式。查询的连接操作也可以是对数据库中的多个查询中间结果集、或表与查询中间结果集进行的操作,因此,本领域技术人员可以知道,表Tl和表T2之一或全部也可以是查询结果的中间集。图2中,包含了两张表,其共同的列为 Product_id,查询语句为Select * from Tl, T2where Tl. Product_id =T2. Product_id0多表关联查询一般使用的表连接技术包括嵌套循环连接(nested loop join)、哈希连接(hash join)以及排序合并连接(merge join)等。嵌套循环连接的工作方式是这样的首先选择一张表作为连接的驱动表,例如图2的表Tl,然后提取驱动表Tl中符合条件的记录,与被驱动表,例如图2的表T2的连接列进行关联查询,得到符合条件的记录。在这个过程中,首先提取驱动表Tl中符合条件的第一条记录,再与被驱动表T2的连接列进行关联查询,得到相应的记录行。在关联查询的过程中,会持续提取驱动表Tl中其它符合条件的记录与被驱动表T2关联查询,不需要等到全部流程结束再返回结果集,而是不断地将查询出来的结果集返回。在这种情况下,终端用户将会快速地得到返回的首批记录。因此嵌套循环连接返回前几条记录的速度是非常快的。嵌套循环连接适用于查询的选择性强、约束性高并且仅返回小部分记录的结果集。图3示出了哈希连接的工作方式,根据图3,哈希连接的工作方式分为两个阶段首先是构建阶段查询引擎优化器首先选择一张表,例如图2的表T2,运用哈希函数对表T2的连接列(即表T2中的Productjd列),进行计算产生一张哈希表;然后是探测阶段查询引擎优化器对另外一张表(例如图2的表Tl)的每条记录的连接列(即表Tl中的ProdUCt_id列)运用同样的哈希函数计算得到哈希值并在生成的哈希表中查找是否存在匹配的哈希值。对于数据量比较大的表T2,哈希连接的构建阶段需要花费比较长的时间进行哈希表的初始化;而对于分布式数据库环境下,若数据还需要从远端提取,该构造时间还将进一步延长。因此,哈希连接存在较长的查询响应时间。但是,一旦哈希表建立完毕,能够快速获得全部的查询结果集,因此,哈希连接比较适用于要求查询总时间小并且返回大数据量结果集的查询。排序合并连接的方法比较简单。排序合并连接的工作方式也分为两个阶段,类似于哈希连接首先是构建阶段查询引擎优化器对两张表中大的表按照连接列进行排序,即图2的表T2按照PiOductjd列进行排序,排序需要较长的时间;然后是运行阶段首先对两张表中另外一张表,即图2的表Tl,也按照Product id列进行排序,由于该表较小,排序时间短,查询引擎优化器对两张排序后的表直接进行合并连接,提取符合条件的记录,就可以得到查询结果。一旦排序结束,能够快速获得全部查询结果,因此,相比嵌套循环连接,排序合并连接比较适用于要求查询总时间小并且返回大数据量结果的查询。现有技术中,对于大数据集的连接查询,数据库管理系统的查询引擎优化器通常为了得到更好的查询总时间,通常会选择哈希连接或者排序合并连接。在强制数据库管理系统的查询引擎优化器得到更好查询响应时间时,查询引擎优化器会选择嵌套循环连接。 以下表I比较了这三种连接方式,由表I可见,不同的连接类型具有不同的优势,根据这样的优势,可以将连接类型分为两类,一类是查询总时间最小的连接,一类是查询响应时间最小的连接。相应地,查询引擎优化器可以输出以查询总时间最小的连接建立的查询总时间最小的查询计划和以查询响应时间最小的连接建立的查询总时间最小的查询计划。表I三种连接方式的比较
权利要求
1.一种数据库查询的方法,包括 响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划; 开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划; 在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果; 响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果。
2.根据权利要求I所述的方法,其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用哈希连接的查询计划,所述指定点是哈希连接的构建阶段结束的点。
3.根据权利要求2所述的方法,其中所述继续执行以最小查询总时间为目标的查询计划包括 从使用嵌套循环连接的查询计划的驱动表中的第一个未执行嵌套循环连接查询计划的记录开始,执行使用哈希连接的查询计划的探测阶段的操作。
4.根据权利要求I所述的方法,其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用排序合并连接的查询计划,所述指定点是排序合并连接的构建阶段结束的点。
5.根据权利要求4所述的方法,其中,所述在排序合并连接的构建阶段中对使用嵌套循环连接的查询计划的驱动表之外的另外一张表按照连接列进行排序,得到另外一张表的排序表;并且其中所述继续执行以最小查询总时间为目标的查询计划包括对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作。
6.根据权利要求5所述的方法,其中对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作包括 对所述驱动表去除已经执行过嵌套循环连接查询计划的记录后,按照连接列进行排序,得到剩余驱动表的排序表; 对剩余驱动表的排序表和另外一张表的排序表进行合并连接操作,得到所述剩余查询结果。
7.根据权利要求2或4所述的方法,其中所述继续执行以最小查询总时间为目标的查询计划,输出剩余查询结果包括 存储所述初始查询结果; 存储以最小查询总时间为目标的查询计划的全部查询结果; 将全部查询结果中去除初始查询结果,得到剩余查询结果。
8.根据权利要求I所述的方法,其中所述查询请求是对数据库中的以下至少一个进行的 多个表;多个查询中间结果集; 表与查询中间结果集。
9.根据权利要求I所述的方法,其中在获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划之前还包括 利用数据库查询引擎优化器的代价模型评估以最小查询总时间为目标的查询计划使用哈希连接的查询计划以及使用排序合并连接的查询计划; 选择上述二者中代价小的查询计划作为以最小查询总时间为目标的查询计划。
10.一种数据库查询的系统,包括 获得装置,被配置为响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划; 执行装置,被配置为执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划; 控制装置,被配置为检测以最小查询总时间为目标的查询计划是否执行到指定点; 输出装置,被配置为输出查询结果; 其中,在所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点之前,所述输出装置输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于所述控制装置检测到以最小查询总时间为目标的查询计划执行到指定点,所述执行装置继续执行以最小查询总时间为目标的查询计划以使所述输出装置输出剩余查询结果。
11.根据权利要求10所述的系统,其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用哈希连接的查询计划,所述指定点是哈希连接的构建阶段结束的点。
12.根据权利要求11所述的系统,其中所述执行装置继续执行以最小查询总时间为目标的查询计划包括 执行装置从使用嵌套循环连接的查询计划的驱动表中的第一个未执行嵌套循环连接查询计划的记录开始,执行使用哈希连接的查询计划的探测阶段的操作。
13.根据权利要求10所述的系统,其中以最小查询响应时间为目标的查询计划是使用嵌套循环连接的查询计划,以最小查询总时间为目标的查询计划是使用排序合并连接的查询计划,所述指定点是排序合并连接的构建阶段结束的点。
14.根据权利要求13所述的系统,其中在所述排序合并连接的构建阶段中对使用嵌套循环连接的查询计划的驱动表之外的另外一张表按照连接列进行排序,得到另外一张表的排序表;并且其中所述执行装置继续执行以最小查询总时间为目标的查询计划包括 执行装置对使用嵌套循环连接的查询计划的驱动表中的已经执行过嵌套循环连接查询计划的记录,不再执行使用排序合并连接的查询计划的执行阶段的操作。
15.根据权利要求14所述的系统,其中所述执行装置包括 去除装置,被配置为对所述驱动表去除已经执行过嵌套循环连接查询计划的记录后,按照连接列进行排序,得到剩余驱动表的排序表; 合并连接装置,被配置为对剩余驱动表的排序表和另外一张表的排序表进行合并连接操作,得到所述剩余查询结果。
16.根据权利要求11或13所述的系统,其中所述执行装置还包括初始查询结果存储装置,被配置为存储所述初始查询结果; 全部查询结果存储装置,被配置为存储以最小查询总时间为目标的查询计划的全部查询结果; 剩余查询结果获得装置,被配置为将全部查询结果中去除初始查询结果,得到剩余查询结果。
17.根据权利要求10所述的系统,其中所述查询请求是对数据库中的以下至少一个进行的 多个表; 多个查询中间结果集; 表与查询中间结果集。
18.根据权利要求10所述的系统,其中还包括 评估装置,被配置为利用数据库查询引擎优化器的代价模型评估以最小查询总时间为目标的查询计划使用哈希连接的查询计划以及使用排序合并连接的查询计划; 选择装置,被配置为选择上述二者中代价小的查询计划作为以最小查询总时间为目标的查询计划。
全文摘要
本发明公开了一种数据库查询的方法和系统,该方法包括响应于查询请求,获得该查询请求的以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;开始执行以最小查询响应时间为目标的查询计划以及以最小查询总时间为目标的查询计划;在以最小查询总时间为目标的查询计划执行到指定点之前,输出以最小查询响应时间为目标的查询计划执行得到的初始查询结果;响应于以最小查询总时间为目标的查询计划执行到指定点,继续执行以最小查询总时间为目标的查询计划以输出剩余查询结果。该查询方法和系统能同时减少查询响应时间和查询总时间。
文档编号G06F17/30GK102968420SQ201110270208
公开日2013年3月13日 申请日期2011年8月31日 优先权日2011年8月31日
发明者张广舟, 雷尚顺, 赵胜, 孙云峰, 陈奇 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1