用于为增强查询性能使用临时性能对象的方法和系统的制作方法

文档序号:6521322阅读:170来源:国知局
用于为增强查询性能使用临时性能对象的方法和系统的制作方法
【专利摘要】本发明提供一种用于为增强查询性能使用临时性能对象的方法和系统。本发明公开用于执行和使用用于在关系数据库管理系统中优化查询性能的技术的方法和装置,包括计算机程序产品。在关系数据库管理系统处接收查询。确定查询是否被期望是长期运行的查询。响应于确定查询被期望是长期运行的查询,启动完全表扫描以便从关系数据库管理系统中取得满足查询所需要的记录。与进行完全表扫描并行地,建立性能对象,其能够满足关系数据库管理系统中的查询。响应于在完成完全表扫描之前完成性能对象的构造,停止完全表扫描并且代之以使用新建立的性能对象来满足查询。
【专利说明】用于为增强查询性能使用临时性能对象的方法和系统
【技术领域】
[0001]本发明涉及信息管理领域,更具体地涉及在数据库管理系统中改善数据库查询的处理和优化。数据库有很多种。一种常见的形式是由NY,Armonk的国际商业机器公司制造的关系数据库管理系统(RDBMS),诸如DB2?系统。
【背景技术】
[0002]RDBMS负责处理对访问数据库的所有请求,其中数据本身被实际上存储,由此屏蔽用户任何特定硬件实现的细节。利用关系技术,RDBMS以通常由数据类型的一组列或属性和数据的一组行(即记录或多元组)定义的类似表的关系的形式存储、操纵并检索数据。列还可以包括对它们数据内容的限制(即有效域)并且可以被指定为用于关系的主关键字或唯一标识符或用于一个或多个其它关系的外关键字。
[0003]用于处理RDBMS的一种非常通用的语言是结构化查询语言(SQL)。SQL包括数据定义操作和数据操纵操作。为了维护数据独立性,查询(即,一组SQL命令)指示RDBMS做什么而不是如何做它。因此,RDBMS包括用于生成运行的各种查询计划并选择相对于运行费用最便宜的计划的查询处理器。由于关系表达式和各种实现技术的高级性质,自动查询优化是可能的并且常常为保证更高效的查询处理所必需。
[0004]常常,数据库应用可以需要对于给定关系或表中的数据创建“视图”。视图提供看一个或多个库表中的数据的可替换方式。例如,它可以包含仅仅从表中选择的列。物化查询表(MQT)是其定义是基于查询的结果的表。包含在MQT中的数据源自于物化查询表定义所基于的一个或多个表。思考MQT的一种方式是作为一种物化视图。基于查询定义视图和MQT 二者。每当参考视图时,运行视图所基于的查询;然而,MQT实际上将查询结果存储为数据,并且可能利用在MQT中的数据而不是在基础表中的数据工作。
[0005]物化查询表可以显著地改善查询的性能,特别是复杂的查询。如果优化器确定查询或查询的一部分可以利用MQT被解析,则查询可以被重写以利用MQT。因此,数据库查询优化器关于查询性能面临的当前困境是是使用现有的MQT,还是直接从缓冲高速缓存(如果可用)或任何其它高速缓存/非高速缓存对象取得数据或执行直接I/O以从盘中取得数据。如果报告要求需要从RDBMS和诸如RSS种子、扁平文件等等之类的外部非结构化数据中取得数据,则尤其没有容易的解决方案。
[0006]另一个选项将创建临时MQT,其可以满足在问题下的查询。利用现有的MQT或临时的MQT的选择之间的折衷可以被如下理解。现有的MQT没有启动时间来使用它,但利用现有的MQT可以导致长的读取时间,因为有关列表对象的额外的I/O —般必须被执行以确定哪些记录要丢弃和哪些返回到用户。
[0007]反之,临时的MQT具有建立的启动成本,但一旦建立,取得时间将更快速。对于临时的MQT,取得时间更快速,因为在临时的MQT中处理的每一记录是使人感兴趣的一个,并且因此没有时间浪费去用于将被立即丢弃的记录的表对象。此类决定不需要单独地基于DBMS内的信息做出。诸如日历事件、非结构化数据(Twitter、Facebook、博客、等等)之类的外部数据还可以被分析以预计查询发生的可能性。在简单示例中,如果气象数据指示飓风侵袭位置的可能性,则建立存储器(例如,Home D印ot)可能期望与以少于给定价格销售的特定存储器处可用的发生器有关的网络查询的数目的增加。可以由诸如MQT之类的性能对象改进答复此类查询的效率。因此,存在对用于在数据库管理系统中处理和优化数据库查询的改善的机制的需要。

【发明内容】

[0008]根据本发明的一个实施例,提供用于优化在关系数据库管理系统中的查询性能的方法和装置,包括计算机程序产品。在关系数据库管理系统处接收查询。确定查询是否被期望是长期运行的查询。响应于确定查询被期望是长期运行的查询,启动完全表扫描以便从关系数据库管理系统中取得满足查询所需的记录。与进行完全表扫描并行地,建立性能对象,其能够满足关系数据库管理系统中的查询。响应于在完成完全表扫描之前完成性能对象的构造,停止完全表扫描并且代之以使用新建的性能对象来满足查询。
[0009]在附图和以下说明书中阐述本发明的一个或多个实施例的细节。从说明书、附图、和权利要求书中,本发明的其它特征和优点将变得清晰。
【专利附图】

【附图说明】
[0010]图1显示根据一个实施例的用于优化查询性能的处理(100)。
[0011]图2显示根据一个实施例的用于建立性能对象的任务(200),其与图1的处理
(100)的至少一部分并行地运行。
[0012]图3显示根据一个实施例的从由处理(100)使用的原始查询计划到基于性能对象的新查询计划的切换。
[0013]图4显示根据一个实施例的包含分别利用原始查询计划和性能对象满足查询而检索的RowID (行ID)的两个表(400,402)的简略视图。
[0014]在各种附图中的类似的参考符号指示类似的元件。
【具体实施方式】
[0015]本发明的各种实施例提供用于通过结合来自于数据库和RDBMS外面的外部数据源的数据改善在RDBMS中的数据库查询的处理和优化的技术。以下参考MQT通过举例来呈现本发明的各种实施例。然而,应该了解到本发明适用于可用于改善输入查询的性能的任何类型的性能对象。如上所述,性能问题一般出现在复杂的数据情况中,其除包括RDBMS之夕卜,包括像社会媒介、RSS种子、结构化文件、等等的外部数据源。因此,本发明的各种实施例尤其可适用在此类情况中。
[0016]根据一个实施例,在考虑到各种性能含意之后创建临时MQT。为了更快速的查询性能并且对当前运行的查询和/或应用没有任何负面作用,然后执行到临时MQT的现场切换。当没有像现有的MQT、索引、存储器中高速缓存的数据等等一样的性能增强方法存在以改善在问题下的查询时,系统可以开始创建临时MQT,因为证实是它必须利用直接I/O从盘中取得数据。
[0017]利用现有的MQT的第一计划或在缓冲池或其它高速缓存位置中高速缓存的数据用于处理查询。与处理查询的第一计划同时地为查询建立临时的MQT索引。当建立临时的MQT时,停止利用第一计划处理查询并且提供到临时MQT的现场切换。然后利用临时的MQT的第二查询计划用来在利用第一查询计划停止处理的点处继续处理查询。
[0018]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0019]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0020]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0021]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0022]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0023]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0024]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0025]计算机程序指令也可以被加载在计算机、其它可编程的数据处理装置、或其它设备上,以使得在计算机、其它可编程序装置或其它设备上执行一系列操作步骤以产生计算机执行的处理以致在计算机或可编程序装置上执行的指令提供用于执行在流程图和/或方框图方块中指定的功能/动作的处理。
[0026]现在将通过举例和参考附图描述本发明的各种实施例。根据一个实施例,当不清楚利用现有的MQT或高速缓存的数据或索引或任何其它性能提高方法或创建临时的MQT是否将提供最大的查询效率时,查询优化器利用“最好”访问计划启动运行查询,同时在后台和并行地同时为查询建立临时的MQT。如果在建立临时的MQT前查询结束,则终止临时的MQT建立。然而,当在查询结束前建立临时的MQT时,将进行到临时的MQT的现场切换并且查询将在它在利用现有的访问计划处停止的点继续。
[0027]图1显示根据一个实施例的用于优化查询性能的处理(100)。如在图1中可以看见的,处理通过在RDBMS服务器处接收输入查询(Ql)开始(步骤102)。在一些实施例中,查询(Ql)可以需要使用RDBMS源,以及“非RDBMS源”,此处也称为外部源,以满足查询(Ql)。因此,可以还需要分析外部数据。用于执行此类分析的机制一般为本领域的普通技术人员所知,并且将依据外部源的特定类型改变。例如,可以在http://socialmediatoday.com/index.php?q=SMC/80437处找到用于分析在Twitter上的流的各种方法。
[0028]接下来,确定接收的查询(Ql)是否被规划以长期运行(步骤104)。例如,这可以通过将满足查询所需的估计时间与阈值进行比较来确定。阈值可以或者是用户定义的或者利用用于设置阈值的已知技术由系统自动地设置。
[0029]如果在步骤104中确定查询(Ql)没有被规划以长期运行,则处理结束。如果确定查询被规划以长期运行,则处理继续确定查询是否将利用MQT最佳运行(步骤106)。在做此确定中,一般考虑局部和外部因素二者。局部因素的一些示例包括局部系统资源使用,诸如CPU、RAM、1/0,等等。外部因素的示例包括访问共享设备上的共享文件的网络等待时间、互联网连接的速度(例如,在打开Facebook帐户时)等等。
[0030]如果在步骤106中确定查询(Ql)将不是利用MQT的最佳运行,则处理结束。如果确定查询将受益于利用MQT运行,则处理继续确定查询在其上运行的机器是否具有足够的诸如存储器、处理器速度、等等之类的资源以建立临时的MQT而不反面地影响当前运行的查询或应用(步骤108)。在一个实施例中,可以利用现有的RDBMS优化器,可能与非RDBMS工具一起做出确定,非RDBMS工具具有确定建立性能对象所需要的资源的最低量的能力。这些工具考虑当前资源利用和资源要求以创建和填充性能对象,诸如MQT。
[0031]如果在步骤108确定没有足够的机器资源,则处理结束。如果确定有足够的机器资源,则处理继续以确定是否有用于改善当前查询的任何现有的方法(步骤110)。可用于改善查询的方法的一些示例包括利用现有的MQT、在缓冲池中高速缓存数据、创建索引,等等。
[0032]如果在步骤110中确定没有用于改善查询的可用方法,则处理结束。如果确定有用于改善查询的方法,则处理继续以利用“最好”方法确定和建立访问计划(Al)(步骤112)。另外,处理产生任务(Tl)以开始建立可替换的性能对象,诸如创建临时的MQT,或如果一个已经被创建则继续以填充现有的MQT。此任务与处理的其余步骤并行运行,但将被参考图2解释,以便不必要地使本发明的说明变复杂。
[0033]接下来,处理开始取得如由查询计划(Al)指示的结果记录(Rl)(步骤114)。记录的取得继续直到在步骤116中确定查询被充分地执行,在该点处处理结束(Q1)。
[0034]现在转到用于建立可替换性能对象的并行处理(200),图2中所示,并行处理
(200)通过建立诸如临时的MQT之类的性能对象(Pl)开始(步骤202)。处理监控由查询计划(Al)对查询(Ql)的执行以确定查询是否完成(步骤204)。如果查询没有完成,则处理检查性能对象是否已经完成(步骤206)。如果性能对象没有完成,则处理使返回到步骤202并且继续建立性能对象。
[0035]当在步骤204中确定查询完成时,则不必继续建立性能对象,因此停止性能对象的建立(步骤208)并且丢弃性能对象(步骤210),其结束处理(200)。
[0036]现在返回到步骤206,如果确定性能对象的建立已经完成,则处理再次检查查询是否已经完成(步骤212)。如果查询完成,则丢弃性能对象(步骤210),因为它将不被需要,其结束处理(200)。
[0037]如果在步骤212确定查询仍然根据查询计划(Al)在运行,则查询计划(Al)的执行将停止并且诸如MQT之类的新建的临时的性能对象将被作为替代使用。现在将参考图3和4描述此细节。
[0038]如可以在图3中看见的,当查询执行计划(Al)仍然在运行并且性能对象已经建立时,则停止查询执行计划的执行并且保持取得的最后一行在表中的位置(步骤302)。处理然后迁移到使用性能对象(Pl)的新查询计划(步骤304)。在迁移到新查询计划之后,处理继续利用性能对象(即,临时的MQT)取得用于查询(Ql)的剩余记录直到满足查询(步骤306)。在那一点处,最终结果被使返回到用户(步骤308)并且处理结束。
[0039]在一些实施例中,创建的性能对象可以被保存在存储装置或存储器中特定时间,例如直到它超出阈值寿命值,阈值寿命值可以或者由用户、或由系统利用诸如FIFO队列或者数据栈之类的任何已知的技术设置。
[0040]图4显示根据本发明的一个实施例的查询结果表可以看来的样子的简略示例。在图4的左边的表(400)显示分别为两个表,表A和表B,取得的记录的一组RowID。表(400)的上部分(404)显示当试图满足查询时,已经利用完全表扫描或一些“较低执行”选项取得的RowID。在右边的表显示以MQT形式的性能对象(402),其不仅包含用于表A和表B的RowID,而且包含分别用于表A和表B的查询需要的列数据。通过如上参考图2所述的并行处理(200)建立此MQT (402)。
[0041]图4也显示从旧查询计划到新查询计划的迁移点,如上所述参考图3的步骤304。利用旧查询计划从主查询中检索的最后一行是具有用于表A的RowID “igf09820987”和用于表B的“kgf09820830” 一个行,如左边表所示(400)。这对应于如上参考图3所述的保持位置。利用MQT (402)、起始于具有用于表A的RowID “Bgf09823333”和用于表B的“bnmggf0982083”的行、以及经历MQT (402)的结尾,满足查询的其余部分。与不得不分别进行完全表扫描或从表A和表B的另一个低执行的选项相比,从MQT中检索剩余的行(402)更快。
[0042]应当注意,虽然以上已经参考MQT讨论性能对象,但是相同的一般原则可以被用于可以增强性能并导致查询的更快速处理的任何类型的内在或外部数据库对象。性能对象的其它示例的非排外列表包括MDC (S卩,多维的群集表,其是DB2性能对象)、索引、临时表、等等。通过在存储器中具有性能对象,可以减少I/O开销,并且一旦已经做出创建性能对象的初始投资后,它常常可以不仅帮助现有的查询,而且帮助未来查询。
[0043]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0044]在这里使用过的术语仅仅用于描述特定实施例目的并且不意欲限制本发明。如在这里使用过的,除非上下文明显指示,否则单个形式“一”、“一个”和“这个”预期也用来包括复数形式。还应当理解,术语“包括”和/或“包含”,当被用于此说明书时,指定所阐述的特征、整数、步骤、操作、元件、和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件、和/或它的组的存在或添加。
[0045]在以下权利要求书中的所有方法或步骤加功能元件的对应结构、材料、动作、和等效物用来包括与如具体要求的其它要求的元件结合执行功能的任何结构、材料、或动作。本发明的说明书已经为了例示和说明而呈现,但是不意指是穷举或局限于在公开的形式的发明。对本领域的技术人员来说,在不脱离本发明的范围和精神的情况下,许多修改和变化将是清晰的。选择并且描述实施例以便最佳地说明本发明的原理和它的实际应用,从而使得本领域的其它技术人员能够理解用于各个实施例中的发明,具有适合于预期的特定使用的各种修改。
【权利要求】
1.一种用于在关系数据库管理系统中优化查询性能的计算机执行的方法,包括: 由处理器在关系数据库管理系统处接收查询; 由处理器确定查询是否被期望是长期运行的查询; 响应于确定查询被期望是长期运行的查询, 由处理器开始完全表扫描以从关系数据库管理系统中取得满足查询所需要的记录;与进行完全表扫描并行地,由处理器建立能够满足关系数据库管理系统中的查询的性能对象;以及 响应于在完成完全表扫描之前完成性能对象的构造,停止完全表扫描并且代之以使用新建立的性能对象来满足查询。
2.如权利要求1所述的方法,其中性能对象包括以下中的一个或多个:物化查询表、多维的群集表、索引和临时的表。
3.如权利要求1所述的方法,其中停止完全表扫描包括: 在经历根据第一查询计划的完全表扫描的每个表中的保持位置处停止完全表扫描; 迁移到第二查询计划;以及 在性能对象中定位对应的保持位置; 利用第二查询计划,在性能对象中的对应的保持位置处继续查询。
4.如权利要求1所述的方法,还包括: 在开始建立性能对象之前,确定什么类型性能对象将是最有益的,其中所述确定考虑局部和外部因素二者。
5.如权利要求1所述的方法,还包括: 响应于在完成性能对象的构造之如完成完全表扫描,停止性能对象的构造并且从存储器中删除性能对象。
6.如权利要求1所述的方法,还包括: 将性能对象存储在存储装置或存储器中预定时间段,由此性能对象能够结合未来查询来使用。
7.如权利要求1所述的方法,其中确定查询是否被期望是长期运行的查询包括: 检查在关系数据库管理系统外部的源,所述源由查询参考,以确定查询是否被期望是长期运行的。
8.如权利要求1所述的方法,其中确定查询是否被期望是长期运行的查询包括: 估计满足查询所需要的时间;以及 将满足查询所需要的估计时间与表示用于被认为是长期运行的查询的查询的时间的阈值进行比较。
9.一种用于在关系数据库管理系统中优化查询性能的计算机系统,包括用于执行如权利要求1-8的任何一个方法所述的任何一个步骤的装置。
10.一种用于在关系数据库管理系统中优化查询性能的系统,包括: 处理器;和 存储器,包含可由处理器执行的指令,所述指令可操作以使得处理器执行下列操作: 在关系数据库管理系统处接收查询; 确定查询是否被期望是长期运行的查询;响应于确定查询被期望是长期运行的查询, 开始完全表扫描以从关系数据库管理系统中取得满足查询所需要的记录; 与进行完全表扫描并行地,建立能够满足关系数据库管理系统中的查询的性能对象;以及 响应于在完成完全表扫描之前完成性能对象的构造,停止完全表扫描并且代之以使用新建立的性能对象来满足查询。
11.如权利要求10所述的系统,其中性能对象包括以下中的一个或多个:物化查询表、多维的群集表、索引和临时的表。
12.如权利要求10所述的系统,其中停止完全表扫描包括: 在经历根据第一查询计划的完全表扫描的每个表中的保持位置处停止完全表扫描; 迁移到第二查询计划;以及 在性能对象中定位对应的保持位置; 利用第二查询计划,在性能对象中的对应的保持位置处继续查询。
13.如权利要求10所述的系统,其中存储器还包括可操作以使得处理器执行下列操作的指令: 在开始建立性能对象之前,确定什么类型性能对象将是最有益的,其中所述确定考虑局部和外部因素二者。
14.如权利要求 10所述的系统,其中存储器还包括可操作以使得处理器执行下列操作的指令: 响应于在完成性能对象的构造之如完成完全表扫描,停止性能对象的构造并且从存储器中删除性能对象。
15.如权利要求10所述的系统,其中存储器还包括可操作以使得处理器执行下列操作的指令: 将性能对象存储在存储装置或存储器中预定时间段,由此性能对象能够结合未来查询来使用。
16.如权利要求10所述的系统,其中确定查询是否被期望是长期运行的查询包括: 检查在关系数据库管理系统外部的源,所述源由查询参考,以确定查询是否被期望是长期运行的。
17.如权利要求10所述的系统,其中确定查询是否被期望是长期运行的查询包括: 估计满足查询所需要的时间;以及 将满足查询所需要的估计时间与表示用于被认为是长期运行的查询的查询的时间的阈值进行比较。
【文档编号】G06F17/30GK103886005SQ201310627212
【公开日】2014年6月25日 申请日期:2013年11月29日 优先权日:2012年12月19日
【发明者】D·L·卡明斯基, R·H·帕拉萨德, G·萨达拉姆 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1