用于管理存储器利用查询执行的方法和系统的制作方法

文档序号:6438183阅读:182来源:国知局
专利名称:用于管理存储器利用查询执行的方法和系统的制作方法
技术领域
本发明一般地涉及数据库管理,更具体地说,涉及使用查询管理器管理查询的存储器利用。
背景技术
数据库是计算化的信息存储和检索系统。关系数据库管理系统是使用关系技术存储和检索数据的计算机数据库管理系统(DBMS)。面向对象的编程数据库是适合在对象类和子类中定义的数据的数据库。无论具体的架构为何,DBMS中的请求实体(例如,应用或操作系统)都通过发出数据库访问请求来请求访问指定数据库。此类请求可包括例如简单目录查找请求或事务以及用于在数据库中读取、更改和添加指定记录的事务的组合。通常使用诸如结构化查询语言(SQL)之类的高级查询语言产生这些请求(即,查询)。当收到此类请求时,DBMS可以针对相应数据库执行请求,并将任何执行结果返回到请求实体。随着数据库大小和工作负荷的增加,特定查询或请求可占用大量执行时间和资源。因此,数据库管理员可能希望控制在数据库系统上使用多少存储器。

发明内容
本发明的各实施例提供了一种用于管理查询执行的方法、产品和系统。所述方法、 产品和系统包括接收来自请求实体的查询。当接收所述查询时,所述方法、产品和系统包括计算用于执行所接收查询的估计存储器利用值。至少部分地基于来自先前已处理查询的历史存储器利用数据来计算所述估计存储器利用值。此外,所述方法、产品和系统包括通过将所述估计存储器利用值与预定存储器量阈值相比较来判定执行所述查询是否将满足存储器消耗条件。当判定执行所述查询将不满足所述存储器消耗条件时,所述方法、产品和系统包括优化所述查询以减少在执行所述查询中使用的存储器量。


通过参考附图,可以获得详细地实现和理解上述各方面的方式,以及上面简要介绍的本发明实施例的更具体的说明。但是需要指出,附图仅示出本发明的典型实施例,因此不能被认为是对本发明的范围的限制,因为本发明可允许其他等同的有效实施例。图1A-1B是示出根据本发明的各实施例的被配置为运行存储器利用查询管理器的系统的方块图;图2是示出根据本发明的一个实施例的存储器压缩效果的方块图;图3是示出根据本发明的一个实施例的用于管理查询的存储器利用的方法的流程图;图4是根据本发明的一个实施例的用于管理查询的存储器利用的方法的流程图;以及图5是根据本发明的一个实施例的用于管理查询的存储器利用的方法的流程图。
具体实施例方式由于许多计算机具有有限数量的其中运行程序的随机存取存储器(“RAM”),因此, 恰当的存储器管理对于确保有效地利用这些有限资源而言非常重要。为此,在数据库系统中,数据库管理员可能希望限制特定查询在执行时消耗的存储器量。也就是说,如果执行特定查询将消耗大量系统存储器,从而损害系统上其他查询和任务的执行,则数据库管理员可能希望拒绝执行此查询。此类拒绝可以是确定性的(例如,可将说明拒绝处理该查询的消息返回到请求实体),也可以将执行延迟到另一时间(例如,系统可在系统资源变得空闲时处理该查询)。这确保了单个数据库查询不会垄断系统的资源。尽管计算机的存储器资源可以是固定的,但是存在一种通过压缩所存储的数据来有效地增加存储器资源的技术。例如,假设特定文件的存储大小为100MB。如果将该特定文件读入系统存储器,则会消耗100MB存储器空间,但是如果以50%的压缩率压缩此特定文件,则压缩后的文件将只消耗50MB存储器空间。这种存储器压缩技术的一个实例是国际商业机器公司(“IBM”)的P0WER7 平台上提供的主动存储器扩展(Active Memory Expansion)组件。虽然这种技术增加了处理使用压缩数据的请求所需的时间(由于使用额外处理资源压缩和解压缩数据),但是在许多情况下,存储器容量的获益会超过处理成本。本发明的各实施例可以接收来自请求实体的待处理查询,并可响应于接收查询而计算用于执行所述查询的估计存储器利用值。所述估计存储器利用值总体反映将在执行所述查询中使用的近似系统存储器量。此外,各实施例可使用从处理先前查询收集的历史存储器利用数据来估计该值。各实施例然后可通过将所述估计存储器利用值与预定存储器量阈值相比较来判定是否处理所接收的查询。当判定所述估计存储器利用值超过所述预定阈值量时,各实施例可优化所述查询以减少在执行所述查询中使用的存储器量。在一个实施例中,所述优化包括调整在处理所述查询中使用的存储器压缩量。在另一实施例中,针对所述查询生成多个执行计划,并且计算每个执行计划的估计存储器利用值。然后至少部分地根据选定执行计划的相应估计存储器利用值来选择执行所述查询中使用的执行计划。一旦优化所述查询,就可执行所述查询以产生查询结果,然后可将所述查询结果返回到请求实体。以下参考了本发明的各实施例。但是应该理解,本发明并不限于描述的特定实施例。相反,将构想以下特性和元素(无论是否与不同实施例相关)的任意组合以实施和实现本发明。此外,虽然本发明的各实施例可以相对于其他可能解决方案和/或相对于现有技术实现优点,但特定优点是否由给定实施例实现并不会限制本发明。因此,以下方面、特性、实施例和优点仅是示例性的,并不被视为所附权利要求的元素或限制,除非在权利要求 (多个)中明确指出。同样,对“本发明”的引用不应被理解为在此披露的任何发明主题的概括,并且不应被视为所附权利要求的元素或限制,除非在权利要求(多个)中明确指出。如本领域的技术人员将理解的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、 驻留软件、微代码等)或组合了在此通常被称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于) 电、磁、光、电磁、红外线或半导体系统、装置或设备或它们的任意适当组合。计算机可读存储介质的更具体的实例(非穷举列表)可以包括以下项具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器 (EPR0M或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或它们的任意适当组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形介质。计算机可读信号介质可以包括例如在基带中或作为载波的一部分传播的带有计算机可读程序代码的数据信号。此类传播信号可以采取任何不同的形式,包括但不限于电磁、光或它们的任意适合组合。计算机可读信号介质可以是任何并非计算机可读存储介质并且可以传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的计算机可读介质。可以使用任何适当的介质(包括但不限于无线、有线、光缆、RF等或它们的任意适当组合)来传输计算机可读介质中包含的程序代码。用于执行本发明的各方面的操作的计算机程序代码可以使用一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk, C++之类的面向对象的编程语言或者诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络一包括局域网(LAN)或广域网(WAN) —连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。下面参考根据本发明的各实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。这些计算机程序指令也可以被存储在可引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。本发明的各实施例可以通过云计算基础设施被提供给最终用户。云计算通常指通过网络作为服务来供应可扩展的计算资源。更正式地说,云计算可以被定义为在计算资源及其基础技术架构(例如,服务器、存储设备、网络)之间提供抽象的计算能力,从而能够对可配置的计算资源共享池进行方便、按需的网络访问,可以以最少的管理工作或服务提供商交互快速地供应和释放所述可配置的计算资源。因此,云计算允许用户访问“云”中的虚拟计算资源(例如,存储设备、数据、应用,甚至完整的虚拟化计算系统),而不考虑用于提供所述计算资源的基础物理系统(或这些系统的位置)。通常,云计算资源通过按使用付费的方式被提供给用户,其中用户仅针对实际使用的计算资源(例如,用户使用的存储空间量或用户实例化的虚拟化系统的数量)付费。用户可以通过因特网在任何时间、从任何位置访问驻留在云中的任何资源。在本发明的上下文中,用户可以访问云中可用的应用(例如,数据库管理系统或“DBMS”)或相关数据。例如,DBMS可以在云中的计算系统上执行并接收与DBMS管理的一个或多个数据库相关的查询。在这种情况下,存储器利用查询管理器182可以监视入站查询并针对每个查询计算用于执行该查询的估计存储器利用。如果存储器利用查询管理器182判定特定查询的估计存储器利用超过存储器量阈值,则存储器利用查询管理器182可以通过调整在执行查询中使用的存储器压缩量来优化查询。这允许用户从与连接到云(例如,因特网)的网络相连的任何计算系统提交查询,并有助于确保没有任何单个查询在执行期间消耗不可接受的存储
器里ο现在参考图1A-1B,图1A-1B是示出根据本发明的各实施例的被配置为运行存储器利用查询管理器的系统的方块图。更具体地说,图IA是示出用于估计和管理查询处理的存储器利用的联网系统的方块图。如图所示,系统100包括通过网络150相连的客户机系统120和数据库服务器170。通常,客户机系统120可以通过网络150将请求(即,查询) 提交到在数据库服务器170上运行的DBMS。术语“查询”表示一组用于从存储数据库检索数据的命令。查询可以采取诸如结构化查询语言(SQL)之类的命令语言的形式,并使得编程人员和程序能够在数据库中选择、插入、更新数据以及确定数据在数据库中的位置。通常,任何请求实体(即,不同查询类型)都能针对数据库中的数据发出请求。例如,软件应用(如通过客户机系统120上运行的应用)、操作系统以及用户(处于最高级别) 可以向数据库提交查询。这些查询可以被预先定义(即,作为应用的一部分被硬编码),也可以响应于输入(例如,用户输入)而产生。当接收到请求时,数据库服务器170上的DBMS 可以在请求中指定的数据库上执行请求,然后返回所执行请求的结果。根据本发明的一个实施例,当接收到要处理的查询时,查询管理器系统170上的查询管理器可以计算所接收查询的估计存储器消耗值。所述估计存储器消耗值总体上反映了将在执行所接收查询中使用的系统存储器量(例如,以MB为单位)。查询管理器可以使用从处理先前查询收集的历史存储器利用数据来计算估计存储器消耗值。作为一个实例,假设包含特定数据库表的SELECT语句的三个先前查询在执行时消耗15MB、20MB和25MB存储器。如果查询管理器系统170然后接收到包含该特定数据库表的SELECT语句的另一查询, 则查询管理器可以估计该查询将在执行时消耗20MB存储器(即,三个先前值的平均数)。一旦计算了估计存储器消耗值,查询管理器便可随后判定当执行查询时查询是否将消耗不可接受的存储器量。查询管理器可通过将估计存储器消耗值与预定存储器量阈值相比较来做出此判定。如果估计存储器消耗值超过预定存储器量阈值,则查询管理器可判定执行该查询将消耗不可接受的存储器量。在这种情况下,查询管理器可以对该查询执行优化操作以调整在执行该查询中使用的存储器压缩量。在存储器压缩被禁用的情况下,此类调整可包括针对至少查询的处理启用存储器压缩。在存储器压缩已启用的情况下,调整可包括增大在处理查询中使用的压缩率(即,进一步压缩数据)。如果查询管理器判定估计存储器消耗值未超过阈值,则查询管理器可以执行所接收的查询而不对该查询执行优化操作。在任何一种情况下,一旦执行查询,都会将执行查询所产生的任何结果返回到从中接收该查询的请求实体。在另一实施例中,当判定估计存储器消耗值超过存储器量阈值时,查询管理器可确定执行该查询中使用的多个执行计划。每个执行计划通常可包括一个或多个数据库操作,当执行所述数据库操作时,将完成查询所指定的动作。当计算多个执行计划时,各实施例可进一步计算每个执行计划的估计存储器消耗值。各实施例然后可选择执行计划之一以便在执行查询中使用,所述选择基于针对所选执行计划计算的估计存储器消耗值。通常,各实施例会选择估计存储器消耗值相对较低的执行计划,但是也会考虑其他因素。例如,除了估计存储器消耗值以外,各实施例还可考虑每个执行计划的估计执行时间。作为一个实例, 如果各实施例判定两个执行计划的估计存储器消耗值都不超过存储器量阈值,但是判定第一执行计划的执行时间是第二执行计划的两倍,则各实施例可选择第二执行计划用于执行查询。当然,此类实例并非进行限制并且仅出于例示目的,更广泛地说,除了上述估计执行时间以外或代替上述估计执行时间,可以考虑与在此描述的功能一致的任何因素。有利地,通过这种方式,本发明的各实施例可以管理各个查询可在数据库系统上消耗的存储器量。通过这种方式,各实施例可防止发生特定查询消耗大部分系统存储器,从而损害数据库系统上的其他查询和任务的情况。此外,本发明的各实施例可通过并非简单拒绝待处理查询的方式来管理查询执行。相反,本发明的各实施例仍可通过使用存储器压缩减少在处理查询中使用的存储器量,来处理估计存储器消耗超过阈值的查询。在另一实施例中,可以选择满足查询存储器利用要求的查询执行计划。通过这种方式,各实施例在仍旧遵循存储器利用限制的同时处理所接收的查询。图IB是示出根据本发明的一个实施例的被配置为运行存储器利用查询管理器的系统的方块图。如图所示,系统110包含客户机系统120和数据库服务器170。客户机系统120包含计算机处理器122、存储介质124、I/O设备126、存储器128和网络接口卡134。 计算机处理器122可以是能够执行此处所述功能的任何处理器。客户机系统120可以使用网络接口卡134连接到网络150。此外,如本领域的技术人员将理解的,可以使用任何能够执行此处所述功能的计算机系统。作为举例,存储器128包含客户机应用130和操作系统132。尽管存储器128被示为单个实体,但是存储器128可以包括一个或多个具有与物理地址关联的存储器块的存储器件,例如随机存取存储器(RAM)、只读存储器(ROM)、闪存或其他类型的易失性和/或非易失性存储器。客户机应用130通常能够生成数据库查询。一旦客户机应用130生成查询, 便可使用网络150将该查询提交到服务器(例如,DBMS 180)以便执行。操作系统132可以是任何能够执行此处所述功能的操作系统。
数据库服务器170包含计算机处理器172、存储介质174、I/O设备176、存储器178 和网络接口 186。计算机处理器172可以是任何能够执行此处所述功能的处理器。如图所示,存储介质174包含数据页175。数据页175通常包含一行或多行数据。在本发明的一个实施例中,数据页175中包含的数据与数据库184中的一个或多个键值关联。I/O设备176 可以表示各种输入和输出设备,其中包括键盘、鼠标、显示器、打印机等。数据库服务器170 可以使用网络接口卡186与网络150相连。此外,如本领域的技术人员将理解的,可以使用任何能够执行此处所述功能的计算机系统。在图示的实施例中,存储器178包含操作系统185和数据库管理系统(下文称为 “DBMS”)180。尽管存储器178被示为单个实体,但是存储器178可包括一个或多个具有与物理地址关联的存储器块的存储器件,如随机存取存储器(RAM)、只读存储器(ROM)、闪存或其他类型的易失性和/或非易失性存储器。DBMS 180包含存储器利用查询管理器182和数据库184。操作系统185可以是任何能够执行此处所述功能的操作系统。如上所述,当DBMS 180接收到要处理的查询时,查询管理器182可以估计处理该查询的存储器消耗值。例如,此类存储器消耗值可反映作为执行与查询关联的操作的一部分,DBMS 180会从存储介质174中的数据页175取出多少数据放入存储器178。查询管理器182然后可以使用该估计存储器消耗值来判定是否在不进行进一步优化的情况下执行该查询。查询管理器182可例如通过将存储器消耗值与预定存储器量阈值相比较来做出此判定。如果估计存储器消耗值超过阈值,则查询管理器182可以优化查询以调整在执行查询中使用的存储器压缩量。此类优化可包括针对处理查询启用存储器压缩(如果禁用了存储器压缩),或可包括增大在处理查询时使用的压缩率。一旦优化了查询,DBMS 180便可针对数据库184执行查询以产生一组查询结果。DBMS 180然后可以将该组查询结果返回到从中接收查询的请求实体。在一个实施例中,查询管理器182优化查询以使得在处理查询中消耗的存储器量等于或接近阈值量。通过这种方式,查询管理器182可确保使用可接受的存储器量执行查询,同时避免在处理查询时出现任何不必要的延迟。也就是说,由于额外的存储器压缩可导致额外的处理活动,所以使用大量存储器压缩执行的查询的执行时间会长于使用少量存储器压缩或不使用存储器压缩的查询的执行时间。因此,通过优化查询以便使用等于或接近阈值的存储器量执行查询,查询管理器182可实施存储器利用策略,同时最小化查询处理的任何延迟。在一个实施例中,查询管理器182可以在确定可在处理查询中使用的存储器量阈值时考虑其他因素。此类因素可包括(但不限于)查询的来源、与查询关联的优先级值以及查询类别。例如,假设存在两个向DBMS 180提交查询的应用具有高优先级值的任务关键实时应用和具有低优先级值的用于收集数据库统计信息的日志应用。在此类实例中,查询管理器182可允许从任务关键应用接收的查询使用的存储器量多于从日志应用接收的查询,以便在处理从高优先级任务关键应用接收的查询中使用较少的存储器压缩并相应地加速这些查询的处理。也就是说,由于使用存储器压缩可消耗查询管理器系统170上的额外处理资源,所以使用较大存储器压缩量处理的查询的处理时间长于使用较少存储器量或不使用存储器压缩处理的查询。因此,通过允许在处理从高优先级应用接收的查询时使用更多的系统存储器,查询管理器182可更快地处理这些查询。同时,查询管理器182通过在执行查询中使用存储器压缩技术,实现对从低优先级应用接收的查询的处理,尽管此类查询通常将消耗不可接受的存储器量。图2是示出根据本发明的一个实施例的存储器压缩效果的方块图。在所示实例中,需要指出,未启用存储器压缩的存储器HS1的物理数据存储容量与已启用存储器压缩的存储器1782的物理数据存储容量相同。如图所示,存储器HS1包含未压缩存储器部分 210!和未使用存储器部分24(V未压缩存储器部分210i可以存储由一个或多个应用使用的未压缩数据。未使用池240i则表示存储器HS1的未使用数据容量,其中当前未存储任何数据。相比之下,存储器1782包含未压缩存储器部分2102、压缩后的存储器部分2202、扩展存储器部分2302以及未使用存储器部分2402。在此实例中,存储器1782实际包含的数据与存储器HS1相同,但是这通过使用存储器压缩实现。因此,在所示实例中,未压缩存储器 2102与未压缩存储器部分210i相关。同样,压缩后的存储器2202与剩余的未压缩存储器部分210i相关。也就是说,由于使用存储器压缩,来自未压缩存储器210i的数据可存储在未压缩存储器2102和压缩后的存储器2202中,这两个存储器当组合时,其大小小于未压缩存储器2IO1。有利地,通过使用存储器压缩,本发明的各实施例可以有效地创建扩展存储器池 2302,扩展存储器池2302又可用于存储额外数据(压缩数据或未压缩数据)。例如,DBMS可以在对存储介质174的取回期间使用扩展存储器2302存储额外数据。此外,此类存储器压缩不仅扩展了可用存储器,而且由于扩展存储器2302可用于其他目的,因此还可以减少数据库系统上的分页。有利地,由于分页经常会导致比压缩和解压缩数据更大的延迟,因此存储器压缩还可以提高数据库系统的性能。此外,尽管图2将存储器的各个部分示为是连续的,但是在实际中,分配给池的存储区域可以是碎片。然而,本领域的技术人员将认识到,在此实例中,重要的是每个部分所占用的存储器量178。图3是示出根据本发明的一个实施例的用于管理查询的存储器利用的方法的流程图。如图所示,方法300始于步骤320,在步骤320,查询管理器182计算所接收查询的估计存储器利用值。如上所述,估计存储器利用值通常接近将在处理该查询中使用的系统存储器量(例如,存储器178)。此外,查询管理器182可根据从先前处理的查询收集的历史存储器利用数据来计算此值。一旦计算出估计存储器利用值,查询管理器182就判定存储器利用值是否超过存储器量阈值(步骤320)。通常,阈值量定义了执行特定查询会消耗多少存储器。此类阈值量可以例如由数据库管理员设置,并且此类阈值量的值应反映数据库环境。在阈值量为固定值(例如,IOMB存储器)的实施例中,该值通常应与数据库系统中的总存储器(例如,查询管理器系统170中的存储器178的大小)成比例。在另一实施例中,阈值量可以是系统存储器的百分比值(例如,存储器178的大小的10% )。还可以根据数据库系统的工作负载定义阈值量。例如,对于在固定时段内针对数据库发出相对大量查询的系统,数据库管理员可设置相对较低的存储器量阈值,以防止任何单个查询过度消耗数据库系统的存储器资源。作为第二个实例,对于在相同的固定时段内针对数据库发出相对较少查询的系统,数据库管理员可以设置相对较高的存储器量阈值。也就是说,在该实例中,由于消耗系统存储器的查询执行操作较少,因此可允许每个查询执行操作使用较多的系统存储器。此外,阈值量可以根据一个或多个其他因素(如提交查询的请求实体的身份)而变化。例如,特定环境可包含两个向DBMS提交查询的应用高优先级应用和低优先级应用。 在此类环境中,由高优先级应用提交的查询的存储器量阈值可大于由低优先级应用提交的查询的存储器量阈值。通过这种方式,各实施例可确保以最小延迟(由于使用了存储器压缩)相对较快地处理从高优先级应用接收的查询。也就是说,由于压缩和解压缩系统存储器中的值会消耗额外处理资源,因此此类额外处理可导致使用存储器压缩处理的查询的处理时间较长。因此,通过为从高优先级应用接收的查询分配较高的存储器量阈值,各实施例可以减少在处理这些查询中使用的存储器压缩量,以确保更快速地处理这些查询。还可以将DBMS所接收的查询与优先级值关联。优先级值通常指示在相对较短的时间量内处理查询的优先级。在一个实施例中,查询本身可以显式指定查询的优先级(例如,在查询中使用特定SQL标签)。在另一实施例中,查询管理器182可以根据一个或多个因素(如在处理查询时访问哪些数据库结构和查询类型)得出特定查询的优先级值。作为一个实例,如果查询引用数据库中的特定表,则查询管理器182可确定该查询是优先级相对较高的查询。此类优先级值然后可用于判定是否调整在处理查询中使用的存储器压缩量。例如,尽管针对上述高优先级查询计算的估计存储器利用值可超过存储器量阈值,但是查询管理器182仍可允许在没有存储器压缩的情况下执行查询,从而确保查询在相对较短的时间内执行。作为第二实例,查询管理器182可调整在执行查询中使用的存储器压缩量,但是由于查询的高优先级值,可以仍使用较少的存储器压缩执行查询。通过这种方式,各实施例可以降低处理查询中的任何延迟,同时仍对数据库系统实施存储器管理策略。在本发明的一个实施例中,查询管理器182可进一步考虑与查询关联的优先级值和存储器量阈值之间的相对优先级。也就是说,在此类实施例中,可向优先级值和存储器量阈值分配指示它们的相对重要性的可变权重。作为一个实例,其中优先级值被视为比存储器量阈值更重要,查询管理器182可确定应在不使用存储器压缩的情况下执行高优先级查询,即使该查询的估计存储器利用值大大超过阈值量也是如此。作为第二实例,其中存储器量阈值被给予相对于所述优先级值而言更高的优先级,如果高优先级查询的估计存储器利用值略超过存储器量阈值,则查询管理器182仍然可确定应使用存储器压缩执行查询,因为阈值量被认为更重要。当然,上述实例仅出于例示目的,并且本领域的技术人员将迅速认识到,可以备选地使用任何数量的其他因素和因素组合来确定阈值量。当判定估计存储器利用值超过阈值量时,查询管理器182然后判定是否启用存储器压缩来处理所接收的查询(步骤325)。当判定存储器压缩未启用时,查询管理器182将启用存储器压缩来处理查询(步骤330)。一旦启用存储器压缩,方法300就进入从步骤335 到步骤345的循环,其中查询管理器182通常将调整在执行查询中使用的存储器压缩率,直到可以在存储器量阈值内执行查询。查询管理器然后调整用于处理查询的存储器压缩率 (步骤335)。初始地,查询管理器182可首先将压缩率设为默认初始值。更一般地说,可以使用与此处所述功能一致的任何用于调整压缩率的算法。查询管理器182然后计算使用调整后的压缩率的查询的估计存储器利用值(步骤 340)。当计算估计存储器利用值时,查询管理器182判定估计存储器利用值是否超过存储器量阈值(步骤345)。如果查询管理器182判定估计存储器利用值仍然超过阈值量,则在步骤335再次开始循环,其中查询管理器182增大在处理查询时使用的存储器压缩率。相反,如果查询管理器182判定估计存储器利用值未超过阈值量,则DBMS 180使用调整后的存储器压缩率执行查询(步骤350)。同样,如果在步骤320,查询管理器182判定估计存储器利用值未超过阈值量,则DBMS 180在不调整处理查询中使用的存储器压缩量的情况下执行查询(步骤350)。一旦DBMS 180执行了查询,则方法300结束。有利地,方法300有助于确保DBMS 180所执行的查询遵循任何存储器利用限制并且不会过度消耗数据库系统的资源。换言之,方法300防止个体查询消耗大量系统存储器, 从而损害其他查询的处理。此外,通过考虑诸如提交查询的请求实体的身份(例如,高优先级软件应用)之类的因素,各实施例可允许处理特定查询消耗的系统资源多于处理其他查询所用的系统资源。通过这种方式,各实施例可被定制以符合特定环境并考虑环境中的应用或用户之间的任何不同处理。图4是示出根据本发明的一个实施例的用于管理查询的存储器利用的方法的流程图。如图所示,方法400始于步骤420,在步骤420,DBMS开始针对数据库执行特定查询。 一旦查询执行开始,查询管理器182就监视查询的执行以确定在处理查询中使用的存储器量(步骤425)。查询管理器182然后判定在执行查询中使用的实际存储器量是否超过存储器量阈值(步骤430)。如果查询管理器182判定实际存储器利用超过阈值量,则查询管理器接着判定当前是否针对处理查询启用了存储器压缩(步骤435)。查询管理器182然后在存储器压缩未启用的情况下启用存储器压缩(步骤440)。一旦针对处理查询启用了存储器压缩,查询管理器182就调整在处理查询中使用的压缩率(步骤445)。通常,查询管理器182应将压缩率设置为所计算的比率,从而将执行查询中使用的实际存储器利用减少为低于存储器量阈值的值。一旦调整了压缩率,查询管理器182就判定特定查询是否完成执行(步骤450)。 同样,如果在步骤430,查询管理器182判定实际存储器利用未超过阈值量,则查询管理器 182接着判定查询执行是否完成(步骤450)。如果查询尚未完成执行,则所述方法转回步骤425,在步骤425,查询管理器182继续监视查询的执行。相反,如果查询已完成执行,则 DBMS 180随后将执行查询所产生的任何查询结果返回到发出查询的请求实体(步骤455)。 一旦返回了查询结果,则方法400结束。图5是示出根据本发明的一个实施例的用于管理查询的存储器利用的方法的流程图。方法500始于步骤520,在步骤520,DBMS 180接收要处理的查询。当接收到查询时, 查询管理器182估计将在处理查询中使用的临时存储(例如,存储器178)量(步骤525), 并判定估计的临时存储量是否超过存储器量阈值(步骤530)。如果查询管理器182判定估计的临时存储量超过阈值量,则查询管理器182接着判定是否可通过满足阈值量的方式优化查询(步骤535)。作为一个实例,如果尚未针对处理查询启用存储器压缩,则查询管理器 182可以确定可通过启用存储器压缩来优化查询以满足阈值量。如果查询管理器182判定可以通过满足阈值的方式优化查询,则查询管理器182 将优化查询以减少在执行查询中使用的存储器量(步骤540)。如上所述,查询优化可包括调整在处理查询中使用的存储器压缩量。此类调整还可包括在初始禁用存储器压缩的情况下启用存储器压缩,并且还可包括调整与处理查询关联的压缩率。在另一实施例中,查询管理器182可以通过针对查询生成多个执行计划来优化待执行查询,每个计划指定可被完成以执行查询的一组不同数据库操作。通常,至少一个执行计划将在处理查询中使用一定量的存储器压缩。查询管理器182然后可以根据每个执行计划计算用于执行查询的估计存储器利用值。一旦计算出估计存储器利用值,查询管理器182就可接着根据所计算的估计存储器利用值选择执行计划之一以便在执行查询中使用。一旦优化了查询,DBMS 180就执行优化后的查询(步骤545)。在通过选择多个执行计划之一来优化查询的情况下,DBMS 180根据选定执行计划执行查询。查询管理器182 然后可以监视查询的执行以确保在执行查询中使用的实际存储器量不违反阈值量(步骤 555)。在本发明的一个实施例中,此类监视根据上述在图4中示出的方法400进行。同样,如果启用了存储器压缩并且不能进一步增大压缩率,则查询管理器182可判定不能以满足存储器量阈值的方式优化查询。如果查询无法被优化为满足阈值,则查询管理器182拒绝要处理的查询(步骤550)。此类拒绝可包括向发出查询的请求实体发送通知。所述通知可包括拒绝处理查询的指示并且还可包括为何拒绝查询的说明。附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。虽然上述内容涉及本发明的各实施例,但可在不偏离本发明基本范围的情况下设计本发明的其他和进一步的实施例,并且本发明的范围由以下权利要求确定。
权利要求
1.一种用于管理查询执行的计算机实现的方法,所述方法包括 接收来自请求实体的查询;至少部分地基于来自先前已处理查询的历史存储器利用数据来计算用于执行所接收查询的估计存储器利用值;通过将所述估计存储器利用值与预定存储器量阈值相比较而判定执行所述查询是否将满足存储器消耗条件;以及当判定执行所述查询将不满足所述存储器消耗条件时,通过一个或多个计算机处理器的操作来优化所述查询以减少在执行所述查询中使用的存储器量。
2.如权利要求1中所述的计算机实现的方法,还包括 当优化所述查询时执行优化后的查询以产生第一组查询结果;以及将所述第一组查询结果返回到所述请求实体; 以及当判定执行所述查询将满足所述存储器消耗条件时 执行所述查询以产生第二组查询结果;以及将所述第二组查询结果返回到所述请求实体。
3.如权利要求1中所述的计算机实现的方法,其中优化所述查询进一步包括 调整在执行所述查询中使用的存储器压缩量。
4.如权利要求3中所述的计算机实现的方法,其中优化所述查询进一步包括 判定是否针对执行所述查询而启用了存储器压缩;以及当判定存储器压缩被禁用时,针对至少所接收查询的执行而启用存储器压缩。
5.如权利要求3中所述的计算机实现的方法,其中优化所述查询进一步包括将与执行所接收查询关联的压缩率从第一压缩率增大到第二压缩率,其中所述第二压缩率指定与执行所述查询关联的数据应相对于所述第一压缩率而被进一步压缩。
6.如权利要求1中所述的计算机实现的方法,还包括确定与所接收查询关联的描述在执行所述查询中可接受多少延迟的优先级值,以及其中判定执行所述查询是否将满足所述存储器消耗条件进一步基于与所接收查询关联的所确定优先级值。
7.如权利要求6中所述的计算机实现的方法,其中判定执行所述查询是否将满足所述存储器消耗条件进一步基于所述预定存储器量阈值和与所接收查询关联的所确定优先级值之间的相对优先级。
8.如权利要求1中所述的计算机实现的方法,其中优化所述查询进一步包括 确定用于执行所接收查询的多个查询执行计划;计算所述多个查询执行计划中的每个查询执行计划的估计存储器利用值;以及基于在执行所述查询中使用的特定查询执行计划的估计存储器利用值来选择该特定查询执行计划。
9.如权利要求1中所述的计算机实现的方法,还包括 监视优化后的查询的执行以确定实际存储器利用值;以及当判定所述实际存储器利用值超过所述预定存储器量阈值时,调整在执行所述查询中使用的存储器压缩量以减少在执行所述查询中使用的存储器量。
10.一种系统,包括 计算机处理器;以及包含程序的存储器,所述程序当在所述计算机处理器上执行时,完成用于管理查询执行的操作,所述操作包括接收来自请求实体的查询;至少部分地基于来自先前已处理查询的历史存储器利用数据来计算用于执行所接收查询的估计存储器利用值;通过将所述估计存储器利用值与预定存储器量阈值相比较而判定执行所述查询是否将满足存储器消耗条件;以及当判定执行所述查询将不满足所述存储器消耗条件时,通过一个或多个计算机处理器的操作来优化所述查询以减少在执行所述查询中使用的存储器量。
11.如权利要求10中所述的系统,所述操作还包括 当优化所述查询时执行优化后的查询以产生第一组查询结果;以及将所述第一组查询结果返回到所述请求实体; 以及当判定执行所述查询将满足所述存储器消耗条件时 执行所述查询以产生第二组查询结果;以及将所述第二组查询结果返回到所述请求实体。
12.如权利要求11中所述的系统,其中优化所述查询进一步包括 调整在执行所述查询中使用的存储器压缩量。
13.如权利要求12中所述的系统,其中优化所述查询进一步包括 判定是否针对执行所述查询而启用了存储器压缩;以及当判定存储器压缩被禁用时,针对至少所接收查询的执行而启用存储器压缩。
14.如权利要求12中所述的系统,其中优化所述查询进一步包括将与执行所接收查询关联的压缩率从第一压缩率增大到第二压缩率,其中所述第二压缩率指定与执行所述查询关联的数据应相对于所述第一压缩率而被进一步压缩。
15.如权利要求10中所述的系统,所述操作还包括确定与所接收查询关联的描述在执行所述查询中可接受多少延迟的优先级值,以及其中判定执行所述查询是否将满足所述存储器消耗条件进一步基于 与所接收查询关联的所确定优先级值;以及所述预定存储器量阈值和与所接收查询关联的所确定优先级值之间的相对优先级。
16.如权利要求10中所述的系统,其中优化所述查询进一步包括 确定用于执行所接收查询的多个查询执行计划;计算所述多个查询执行计划中的每个查询执行计划的估计存储器利用值;以及基于在执行所述查询中使用的特定查询执行计划的估计存储器利用值来选择该特定查询执行计划。
17.如权利要求10中所述的系统,所述操作还包括监视优化后的查询的执行以确定实际存储器利用值;以及当判定所述实际存储器利用值超过所述预定存储器量阈值时,调整在执行所述查询中使用的存储器压缩量以减少在执行所述查询中使用的存储器量。
全文摘要
本发明涉及一种用于管理存储器利用查询执行的方法和系统。披露了基于存储器利用使用存储器压缩来管理查询执行的技术。各实施例可接收来自请求实体的查询并估计执行所述查询所需的存储器量。当判定执行所述查询将消耗不允许的存储器量时,各实施例可通过调整在执行所述查询中使用的存储器压缩量来优化所述查询。然后可以执行优化后的查询以产生一组查询结果,接着可将所述一组查询结果返回到所述请求实体。
文档编号G06F17/30GK102479254SQ20111035941
公开日2012年5月30日 申请日期2011年11月14日 优先权日2010年11月30日
发明者E·L·巴斯尼斯, J·M·桑托索索, P·S·尼尔塞斯图恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1