CN102455984B - 从二级存储装置读取行之前从存储器读取行的方法和装置 - Google Patents
从二级存储装置读取行之前从存储器读取行的方法和装置 Download PDFInfo
- Publication number
- CN102455984B CN102455984B CN201110213452.4A CN201110213452A CN102455984B CN 102455984 B CN102455984 B CN 102455984B CN 201110213452 A CN201110213452 A CN 201110213452A CN 102455984 B CN102455984 B CN 102455984B
- Authority
- CN
- China
- Prior art keywords
- row
- storer
- memory
- node
- read
- 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
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
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供在从二级存储装置读取行之前从存储器读取行的方法和系统。在实施例中,以包括第一多个行的存储器中页的页地址的顺序从存储器读取第一表的第一多个行。将满足查询谓词的第一多个行的第一选择行存储到结果集中。在以页地址的顺序读取第一多个行之后,以第一表中第二多个行的行标识符的顺序从二级存储装置读取第一表的第二多个行。将满足查询谓词的第二多个行的第二选择行存储到结果集中。
Description
技术领域
概括地说,本发明实施例涉及计算机系统,更具体地,涉及通过在从二级存储装置读取行之前从存储器中的数据库表读取行来处理具有执行计划的查询的数据库管理系统。
背景技术
计算机系统典型地包括计算机程序和硬件的组合,例如半导体、晶体管、芯片、电路板、存储装置、和处理器。计算机程序存储在存储装置中,并且由处理器执行。从根本上,计算机系统用于数据的存储、操作和分析。
管理数据的一个机制称为数据库管理系统(DBMS)或简单地称为数据库。许多不同类型的数据库是已知的,但是最普遍的通常称为关系数据库(RDB),其将数据组织在表中,所述表具有行(其表示数据库中的各个项目、元组、或记录)和列、字段、或属性(其定义在每个项目、元组、或记录中存储什么)。每个表在数据库中具有唯一名称,并且每个列在特定表中具有唯一名称。数据库也具有一个或多个索引,这是向DBMS通知给定索引列值时在表中的某个行的位置的数据结构,类似于向读者通知给定文字出现在哪个页上的书索引。
从数据库提取数据的最普遍方式是通过语句,称为数据库查询,这来自用户接口、应用程序、或远程计算机系统,例如客户端或对端。查询是为了从数据库提取满足或适合查询中指定的标准或条件的数据而由DBMS评估的表达式。尽管查询需要在响应中特定数据集的返回,但是典型地查询执行的方法并非由查询指定。因此,在DBMS接收到查询之后,DBMS解释查询,并确定什么内部步骤是满足查询所必要的。这些内部步骤可包括在查询中指定的一个或多个表的标识、在查询中选择的一个或多
可包括在查询中指定的一个或多个表的标识、在查询中选择的一个或多 个行、以及其他信息,例如是否使用现有索引、是否建立临时索引、是否使用临时文件执行分类、和/或表要联接在一起以满足查询的顺序。当在一起时,这些内部步骤称为执行计划。DBMS通常存储执行计划,并且当用户或请求程序重复查询时重新使用他,这是普遍现象,并非经历重建执行计划的耗时处理。
可针对任一个查询建立许多不同执行计划,其每个将返回满足查询的相同数据集,但是不同执行计划可提供大大不同的效果。因此,DBMS选择的执行计划需要在时间和硬件资源方面以合理成本提供所需数据。因此,DBMS通常建立多个预期执行计划,然后选择最佳、最快、或最低耗的一个来执行。导致特定执行计划的成本的一个因素是当执行计划被执行时从数据库表返回的行的数目。影响被处理的行的数目的一个重要方面是表的联接顺序。响应于从多个表请求数据的查询,DBMS从这样多个表联接行(在结果集中,行通常横向级联),以从所有表寻找和提取数据。因此,联接操作是由查询(联接查询)访问的两个表之间的关系,并且联接操作被执行以连接(或联接)来自两个或更多个表的数据,其中DBMS将行与特定属性联接在一起以形成一个新行。联接顺序典型地由执行计划指定,并且是当DBMS经由执行计划执行查询以从数据库表提取数据的行并联接到结果集中时DBMS执行联接操作的顺序。
联接(join)操作典型地通过使用嵌套循环算法来实现,其中将以联接顺序从前两个表得到的新行联接至从第三个表得到的行,并且将那些结果联接至第四个表等。最后,所有所需的联接操作完成,并且得到的新行是满足查询的结果集。因为一个联接受限于访问两个表,根据特定顺序按序执行多表联接。许多不同联接查询可通过以若干可能联接顺序的任一个联接表来实现。例如,涉及联接表A、B和C的查询通常可执行为,表A和B的联接,随后是将表A与表B的结果与表C的联接。或者,在许多情况下,相同的查询可执行为,表A和C的联接,随后是将表A与表C的结果与表B的联接。DBMS尝试针对执行计划选择联接顺序,这将从联接处理中先前的潜在结果集消除最大数目个行,从而节省了与在联接操作 中随后重复访问表相关的成本。
导致特定执行计划的成本的另一个因素是从表读取的行是存储在存储器中还是二级存储装置中。表通常永久地驻留在二级存储装置中,例如盘驱动器,并且在需要时读入更小更快的存储器中。执行计划可指定表扫描,当执行时可从二级存储单元将所有页提取到存储器用于处理。二级存储装置输入/输出操作时间通常是用于表扫描的处理时间的主要组成。
发明内容
提供一种方法、计算机可读存储介质、和计算机系统。在实施例中,以包括第一多个行的存储器中页的页地址的顺序从存储器读取第一表的第一多个行。将满足查询谓词的第一多个行的第一选择行存储到结果集中。在以页地址的顺序读取第一多个行之后,以第一表中第二多个行的行标识符的顺序从二级存储装置读取第一表的第二多个行。将满足查询谓词的第二多个行的第二选择行存储到结果集中。
附图说明
图1示出用于实现本发明实施例的示例性系统的高级框图。
图2示出根据本发明实施例的示例性DBMS的框图。
图3示出根据本发明实施例的数据库的示例性数据结构的框图。
图4示出根据本发明实施例的针对联接顺序实现的查询的示例性执行计划的框图。
图5示出根据本发明实施例的示例性驻留页数据结构的框图。
图6示出根据本发明实施例的示例性活动页地址数据结构的框图。
图7示出根据本发明实施例的建立执行计划的示例性处理的流程图。
图8示出根据本发明实施例的对于执行计划进行执行的示例性处理的流程图。
图9示出根据本发明实施例的以行标识符顺序扫描表的示例性处理的流程图。
然后,应注意,附图仅示出本发明的示例性实施例,因此不认为是本发明其他实施例的范围的限制。
具体实施方式
参照附图,其中在若干附图中类似标号指定类似部分,图1示出根据本发明实施例的服务器计算机系统100经由网络130连接至客户端计算机系统132的高级框图表示。这里使用术语“服务器”仅为了方便,并且在各个实施例中,在一个环境中作为客户端计算机操作的计算机系统可在另一环境中作为服务器计算机操作,反之亦然。本发明实施例的机制和装置等同地应用于任意适当的计算系统。
计算机系统100的主要组件包括一个或多个处理器101、主存储器102、终端接口111、存储装置接口112、I/O(输入/输出)设备接口113、和网络适配器114,其全部经由存储器总线103、I/O总线104、和I/O总线接口单元105可通信地直接或间接耦合,用于组件间通信。计算机系统100包含一个或多个通用可编程中央处理单元(CPU)101A、101B、101C和101D,这里统称为处理器101。在实施例中,计算机系统100包含以相对大型计算机系统为代表的多处理器;然而,在另一实施例中,计算机系统100或者可以是单CPU系统。每个处理器101执行在主存储器102中存储的指令,并且可包括一级或多级板上高速缓存。
在实施例中,主存储器102可包括用于存储或编码数据和程序的随机存取半导体存储器、存储装置、或存储介质。在另一实施例中,主存储器102代表计算机系统100的整个虚拟存储器,并且还可包括耦合至计算机系统100或经由网络130连接的其他计算机系统的虚拟存储器。主存储器102概念上是独立单片实体,但是在其他实施例中,主存储器102是更复杂的配置,例如高速缓存和其他存储器设备的层级。例如,存储器可存在于多级高速缓存中,并且这些高速缓存还可按功能进一步划分,从而一个高速缓存保存指令,而其他保存处理器或多个处理器使用的非指令数据。存储器还可分布并与不同CPU或CPU的集关联,这是各种所谓的非一致 性存储器访问(NUMA)计算机架构的任一个中已知的。
主存储器102存储或编码数据库管理系统(DBMS)150、结果集152、查询158、应用160、存储器管理器162、驻留页164、和活动页地址166。尽管将DBMS 150、结果集152、查询158、应用160、存储器管理器162、驻留页164、和活动页地址166示出为包含在计算机系统100中的存储器102中,但是在其他实施例中,他们的一些或全部可在不同计算机系统上,并且可例如经由网络130远程访问。计算机系统100可使用允许计算机100的程序如同他们仅访问大型、单一存储装置实体而并非访问多个、小型存储装置实体那样操作的虚拟寻址机制。因此,尽管将DBMS 150、结果集152、查询158、应用160、存储器管理器162、驻留页164、和活动页地址166示出为包含在主存储器102中,但是这些元件不必都同时全部包含在相同存储装置中。此外,尽管将DBMS 150、结果集152、查询158、应用160、存储器管理器162、驻留页164、和活动页地址166示出为单独实体,但是在其他实施例中,他们的一些、他们的一些的一部分、或他们全部可封装在一起。
在实施例中,DBMS 150、应用160、和/或存储器管理器162包括在处理器101上执行的指令或语句,或通过在处理器101上执行的指令或语句解释以执行参照图2、3、4、5、6、7、8和9如下所述的功能的指令或语句。在另一实施例中,代替或除了基于处理器的系统,DBMS 150、应用160、和/或存储器管理器162经由半导体设备、芯片、逻辑门、电路、电路卡、和/或其他物理硬件设备在硬件中实现。在实施例中,除了指令或语句之外,DBMS 150、应用160、和/或存储器管理器162包括数据。在各个实施例中,应用160是用户应用、第三方应用、操作系统、或任意部分、多个部分、或其组合。
存储器总线103提供用于在处理器101、主存储器102、和I/O总线接口单元105之间传送数据的数据通信路径。I/O总线接口单元105还耦合至系统I/O总线104,用于将数据传送至各个I/O单元和从其传送数据。I/O总线接口单元105通过系统I/O总线104与多个I/O接口单元111、112、 113和114通信,后者还已知为I/O处理器(IOP)或I/O适配器(IOA)。I/O接口单元支持与各种存储装置和I/O设备的通信。例如,终端接口单元111支持一个或多个用户I/O设备121的附连,后者可包括用户输出设备(例如视频显示设备、扬声器、和/或电视机)和用户输入设备(例如键盘、鼠标、键板、触摸板、追踪球、按钮、光笔、或其他定点设备)。用户可使用用户接口操纵用户输入设备,以提供向用户I/O设备121和计算机系统100提供输入数据和命令,并可经由用户输出设备接收输出数据。例如,用户接口可经由用户I/O设备121呈现,例如在显示设备上显示、经由扬声器播放、或经由打印机打印。
存储装置接口单元112支持一个或多个盘设备或二级存储装置125的附连。在实施例中,二级存储装置125是旋转磁盘驱动器存储装置,但是在其他实施例中,他们是被配置为对于主机计算机呈现为单一大型存储装置、或任意其他类型的存储装置的盘驱动器的阵列。根据需要,主存储器102或其任意部分的内容可存储到二级存储装置125和从二级存储装置125提取。二级存储装置125具有比存储器102更慢的访问时间,意味着从/向存储器102读和/或写数据所需的时间小于从/向二级存储装置125读和/或写数据所需的时间。
I/O设备接口113提供对于各种其他输入/输出设备或其他类型设备(例如打印机或传真机)中任一个的接口。网络适配器114提供从计算机系统100到其他数字设备和计算机系统132的一个或多个通信路径;这样的路径可包括例如一个或多个网络130。尽管存储器总线103在图1中示出为相对简单的、单一总线结构,提供处理器101、主存储器102、和I/O总线接口105之间的直接通信路径,事实上,存储器总线103可包括多个不同总线或通信路径,其可按各种形式(例如层级中的点到点链路、星形或网状配置、多层级总线、并行和冗余路径、或任意其他适当类型的配置)的任一个配置。此外,尽管I/O总线接口105和I/O总线104示出为单一的个体单元,事实上,计算机系统100可包含多个I/O总线接口105和/或多个I/O总线104。尽管多个I/O接口单元示出为将系统I/O总线104 与对于各个I/O设备运行的各个通信路径分离,在其他实施例中,I/O设备的一些或所有直接连接至一个或多个系统I/O总线。
在各个实施例中,计算机系统100是具有几个或没有直接用户接口,但是从其他计算机系统(客户端)请求的多用户主机计算机系统、单用户系统、或服务器计算机或类似设备。在其他实施例中,计算机系统100实现为桌面计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、口袋计算机、电话、智能电话、寻呼机、汽车、电话会议系统、电器、或任意其他适当类型的电子设备。
网络130可以是任意适合的网络或网络组合,并且可支持适用于到达/来自计算机系统100和计算机系统132的数据和/或代码的通信的任意适合协议。在各个实施例中,网络130可代表直接或间接连接至计算机系统100的存储装置或存储装置的组合。在另一实施例中,网络130可支持无线通信。在另一实施例中,网络130可支持硬线通信,例如电话线或电缆。在另一实施例中,网络130可以是因特网,并且可支持IP(因特网协议)。在另一实施例中,网络130实现为局域网(LAN)或广域网(WAN)。在另一实施例中,网络130实现为热点服务提供商网络。在另一实施例中,网络130实现为内联网。在另一实施例中,网络130实现为任意适合的蜂窝数据网络、基于小区的无线电网络技术、或无线网络。在另一实施例中,网络130实现为任意适合网络或网络的组合。尽管示出一个网络130,但是在其他实施例中,可存在(相同或不同类型的)任意数目个网络。
在实施例中,客户端计算机132可包括服务器计算机100的元件的一些或全部。
图1用于示出计算机系统100和网络130的代表性主要组件。但是,各个组件可比图1所示更加复杂,可存在除了或排除图1所示之外的组件,并且这样的组件的数目、类型、和配置可改变。这里公开了这样的额外复杂性或额外改变的若干特定实例;这些仅是实例而不必仅是这样的改变。图1所示和实现本发明各个实施例的各个程序组件可通过多种方式实现,包括使用各个计算机应用、例程、组件、程序、对象、模块、数据结构等, 并在下文称为“计算机程序”或简单地称为“程序”。
计算机程序包括一个或多个指令或语句,他们在各个时刻位于计算机系统100的各个存储器和存储装置,以及当通过计算机系统100中的一个或多个处理器读取和执行时或当通过一个或多个处理器执行的指令解释时使得计算机系统100执行用于实现含有本发明实施例各个方面的步骤或元素所必要行为。本发明实施例的方面可实现为系统、方法、或计算机程序产品。由此,本发明实施例的方面可采用完全硬件实施例、完全程序实施例(包括存储于存储装置中的固件、驻留程序、微代码等)或通常在这里都可称为“电路”、“模块”或“系统”的组合程序和软件方面的实施例的形式。此外,本发明实施例可采用在上面实现有计算机可读程序代码的一个或多个计算机可读介质中实现的计算机程序产品的形式。
可利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如,但不限于,电子、磁、光、电磁、红外、或半导体系统、装置、或设备、或上述的任意适当组合。计算机可读存储介质的更多特定实例(非排他性列表)可包括:具有一个或多个布线的电连接、便携式计算机盘、硬盘(例如二级存储装置125)、随机存取存储器(RAM)(例如存储器102)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)或闪速存储器、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储装置、磁存储装置、或上述的任意适当组合。在这个文档的上下文中,计算机可读存储介质可以是可包含、或存储由指令执行系统、装置或设备使用或与其结合的程序的任意有形介质。
计算机可读信号介质可包括上面实现有计算机可读程序代码的传播数据信号,例如在基带中或作为载波的一部分。这样的传播信号可采用各种形式中的任一个,包括但不限于,电磁、光、或其任意适当组合。计算机可读信号介质可以是并非计算机存储介质并且通信、传播或传输由指令执行系统、装置或设备使用或与其结合的程序的任意计算机可读介质。计算机可读介质上实现的程序挨骂可使用任意适当的介质发送,包括但不限于, 无线、有线线路、光纤电缆、射频、或上述的任意适当组合。
执行用于本发明实施例方面的操作的计算机程序代码可通过一个或多个编程语言的任意组合来编写,包括面向对象编程语言和传统过程编程语言。程序代码可完全在用户计算机上,部分在远程计算机上,或完全在远程计算机或服务器上执行。在后者情形下,远程计算机可通过任意类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或可对于外部计算机(例如通过使用因特网服务提供商的因特网)进行连接。
以下参照方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明实施例的方面。流程图和/或框图的每个框、以及流程图和/或框图中的框的组合可通过计算机可读介质中实现的计算机程序指令来实现。这些计算机程序指令可提供至通用计算机、专用计算机、或其他可编程数据处理装置以生成机器,从而经由计算机的处理器或其他可编程数据处理装置执行的指令建立用于实现由流程图和/或框图的一个或多个框指定的功能/行为的部件。这些计算机程序指令也可存储于可指引计算机、其他可编程数据处理装置、或其他设备以特定方式运行的计算机可读介质中,从而计算机可读介质中存储的指令生成制品,其包括实现由流程图和/或框图的一个或多个框指定的功能/行为的指令。
可经由可操作地或通信地(直接或间接)连接至一个或多个处理器各种有形计算机可读存储介质向计算机系统传送定义本发明各个实施例的功能的计算机程序。计算机程序指令也可加载到计算机、其他可编程数据处理装置、或其他设备上,使得一系列操作在计算机、其他可编程装置、或其他设备上执行以生成计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框指定的功能/行为的处理。
附图中的流程图和框图示出根据本发明各个实施例的系统、方法、和计算机程序产品的可能实现的架构、功能、和操作。由此,流程图或框图中的每个框可表示包括用于实现特定逻辑功能的一个或多个可执行指令的模块、段、或代码部分。在一些实施例中,在框中提及的功能可并非按照 附图中提及的顺序发生。例如,连续示出的两个框可事实上基本同时执行,或所述框有时候可按相反顺序执行,这取决于涉及的功能。框图和/或流程图的框的每个框、以及框图和/或流程图的框的组合可通过执行特定功能或行为的基于专用硬件系统与专用硬件和计算机指令结合来实现。
本发明实施例还可作为服务接触的一部分通过客户端公司、非盈利组织、政府实体、或内部组织结构传播。这些实施例的方向可包括配置要执行的计算机系统、以及部署实现这里所述的方法的一些或全部的计算机服务(例如计算机可读代码、硬件、和web服务)。这些实施例的方面还可包括分析客户端公司、响应于分析建立推荐、生成计算机可读代码以实现推荐的部分、将计算机可读代码结合到现有处理、计算机系统、和计算架构中、计量这里所述的方法和系统的使用、向用户分配费用、以及针对用户使用这些方法和系统对用户计费。此外,这里描述的各个程序可基于在本发明的特定实施例中实现他们的应用来识别。但是,随后的任意特定程序名称仅为了方便而使用,因此本发明实施例不限于仅用于由这样的名称识别和/或暗示的任意特定应用中。图1所示的示例性环境并非限制本发明。相反,在不脱离本发明实施例的范围的情况下,可使用其他备选硬件和/或程序环境。
图2示出根据本发明实施例的实例DBMS 150的框图。DBMS 150包括解析器205、解析语句210、查询优化器215、数据库220、执行计划225、和执行引擎230。数据库220包括表235、和一个或多个索引240。表235将数据组织在行(其表示数据库中的各个项目、元组、或记录)中和列、字段、或属性(其定义在每个项目、元组、或记录中存储什么)中。每个表235在数据库220中具有唯一名称,并且每个列在特定表235中具有唯一名称。索引240是向DBMS 150通知给定索引列值时在表235中的某个行的位置的数据结构。
DBMS 150中的解析器205从应用160接收查询158。查询158请求DBMS 150搜索或寻找数据的一个行或多个行组合,并且将数据从那些找到的行存储到满足或适合由查询158指定的标准、关键字、和/或值的结果 集152。在实施例中,应用160向DBMS 150多次发送相同查询158,依据DBMS 150中的数据是否在查询158的出现之间改变可得到或可能不得到不同结果集152。解析器205从查询158生成解析语句210,解析器205将其发送至查询优化器215。查询优化器215使用驻留页164执行关于解析语句210的查询优化。作为查询优化的结果,优化器使用在数据库220中存储的例如平台功能、查询内容信息等的数据生成执行计划225。一旦生成,优化器215将执行计划225发送至执行引擎230,其执行该执行计划225,该执行计划225使用活动页地址166和索引240实现数据库查询158,以寻找和提取满足查询158的标准的在数据库220中的数据库表235中的数据。执行引擎230将满足数据库查询158指定的标准的结果数据存储到结果集152中,其被返回至应用160作为查询158的响应。在实施例中,DBMS 150将各个阈值存储到执行计划225中。DBMS 150可从应用160、从用户、或从数据库管理员接收各个阈值,或者可由查询优化器215的设计者设置阈值。
图3示出根据本发明实施例的数据库220的示例性数据结构的框图。示例性数据库220包括示例性表t1 235-1、t2 235-2、t3 235-3、和t4 235-4。表235-1包括列c1 305、c2 310、和c3 315。表t2 235-2包括列c1 320。表235-3包括列c2 325。表235-4包括列c3 330、38 335、和c9 340。列305和320共享相同列名称或标识符“c1”,列310和325共享相同列名称或标识符“c2”,列315和330共享相同列名称或标识符“c3”。这里,列使用符号t1.c1(指的是表235-1中的列305)、t1.c2(指的是表235-1中的列310)、t1.c3(指的是表235-1中的列315)、t2.c1(指的是表235-2中的列320)、t3.c2(指的是表235-3中的列325)、t4.c3(指的是表235-4中的列330)、t4.c8(指的是表235-4中的列335)、和t4.c9(指的是表235-4中的列340)来唯一标识。
因此,将示例性数据库220中的每个表分成行和列。例如,表T1 235-1包括:第一行(A,BAKER,5),其具有列c1 305中存储的“A”、列c2 310中存储的“BAKER”、和列c3 315中存储的“5”;第二行(C, DOG,6),其具有列c1 305中存储的“C”、列c2 310中存储的“DOG”、和列c3 315中存储的“6”;第三行(B,CHARLIE,9),其具有列c1 305中存储的“B”、列c2 310中存储的“CHARLIE”、和列c3 315中存储的“9”;第四行(Q,ZULU,10),其具有列c1 305中存储的“Q”、列c2 310中存储的“ZULU”、和列c3 315中存储的“10”;第五行(Z,HOTEL,8),其具有列c1 305中存储的“Z ”、列c2 310中存储的“HOTEL”、和列c3 315中存储的“8”;第六行(A,ZULU,10),其具有列c1 305中存储的“A”、列c2 310中存储的“ZULU”、和列c3 315中存储的“10”;第七行(A,DOG,100),其具有列c1 305中存储的“A”、列c2 310中存储的“DOG”、和列c3 315中存储的“100”;第八行(A,HOTEL,106),其具有列c1 305中存储的“A”、列c2 310中存储的“HOTEL”、和列c3 315中存储的“106”;和第九行(A,CHARLIE,4),其具有列c1 305中存储的“A”、列c2 310中存储的“CHARLIE”、和列c3 315中存储的“4”等。
作为另一实例,表T2 235-2包括第一行(A),其存储在列c1 320中;第二行(A),其存储在列c1 320中;第三行(C),其存储在列c1 320中等。表T2 235-2示出行标识符(“ROW 1”、“ROW 2”等),其标识表中的各个行。在另一实施例中,行标识符是标识各个行的存储位置的地址(绝对、相对、物理、逻辑、或虚拟地址)。在实施例中,行标识符指向地址或索引240中的标识符。尽管仅表235-2清楚地示出行标识符,但是他们针对所有表和行存在。
图4示出根据本发明实施例的针对联接顺序实现的查询的示例性执行计划225-1的框图。在实施例中,执行计划225-1包括页采集模式指示符495和树形图,其代表当执行时实现查询158的联接操作。执行计划225-1的树形图包括联接节点405、410和415;表节点420、425、430和435;查询谓词450、455、460和465;链路470、472、474、476、478和480;以及链路490、492、494和496。表节点420表示表235-1。表节点425表示表235-2。表节点430表示表235-3。表节点435表示表235-4。
树形图将其名称比喻成实际上的树,其具有分支和叶子的分层组织。例如,叶子连接至小分支,其进一步连接至大分支,并且树的所有分支在根处具有共同开始点。类似地,在执行计划225-1的树形图中的节点405、410、415、420、425、430和435具有分层组织,因为联接节点405具有与另一联接节点410的关系,其自身可具有与另一节点的进一步关系,以此类推。因此,节点可分成组和子组,最终全部节点具有与根或头节点405的关系。为了更正式定义树,树形数据结构定义了节点的分层组织。因此,树是一个或多个节点的有限集T,从而a)一个具体指定的节点称为整个树的根;b)剩余节点(排除根)分成m>=0个不相交集T1,...Tm,并且这些集的每个相应地是树。树T1,...Tm称为根的子树。因此,树中每个节点是整个树中包含的一些子树的根。节点的子树的数目称为节点的度数。度数为0的节点称为终端计算节点或叶子。非终端节点称为分支节点。对于T的节点的级别通过以下方式定义:根节点具有级别0,其他节点具有针对包含他们的子树具有的级别大于1的级别。每个根是其子树的根的双亲,后者为同属,并且他们也是他们双亲的孩子。每个根是根的所有子树中的所有节点的祖先。根节点的子树中的节点是根的后代。整个树的根节点没有父节点。
因此,使用图4的执行计划225-1的示例性树,根节点为节点405。根节点405是其子节点410和435的双亲。节点410是其子节点415和430的双亲。节点415是其子节点420和425的双亲。节点420、425、430和435没有子节点,所以他们是叶子节点。节点420的祖先是节点415、410、405。节点415的祖先是节点410和405。节点410的祖先是节点405。节点425的祖先是节点415、410和405。节点430的祖先是节点410和405。节点435的祖先是节点405。根节点405没有祖先。链路470、472、474、476、478和480均连接、指向、或包含两个邻接节点的地址,并且使得DBMS 150寻找父节点的子节点和找到子节点的父节点。链路490、492、494、和496均连接、指向、或包含查询谓词的地址,并且使得DBMS 150找到节点的查询谓词。在这个实例中,示例性执行计划225-1实现的示例 性查询158可表示为“select*from t1,t2,t3,t4 where t1.c1=t2.c1 and t1.c2=t3.c2 and t1.c3=current date-t4.c3 and t4.c8=t4.c9<5”。执行计划225-1的树形图示出针对示例性查询158的一个示例性实现、一个示例性联接顺序、和一个示例性页采集模式,但是也可存在针对这个查询158的其他实现、联接顺序、和页采集模式,包括没有使用树并且没有使用图的实施例。
查询谓词450、455、460和465的每个连接至节点之一。查询谓词均代表查询158的一部分,并且包括各个条件标准表达式,DBMS 150通过将从表节点(其连接至查询谓词或其为与查询谓词连接的联接节点的子节点)提取的行的数据代入匹配于行中的列标识符的表达式中的变量来评估为真还是假。在各个实施例中,查询谓词指定以下内容的任意多个和/或组合:数据;列,字段,或关键字;函数,调用,引用,方法,类,或applet;关系运算符(例如大于,小于,等于,不等于,大于或等于,小于或等于,或任意其他关系运算符);逻辑运算符(例如AND、OR、XOR、NOT、NOR、NAND、或任意其他逻辑运算符);算术运算符(例如乘、除、加、减、基数、幂、对数、或任意其他算术运算符);和寄存器运算(例如左移、右移操作、或任意其他寄存器操作);和关系运算符,逻辑运算符,算术运算符,以及寄存器操作可具有任意数目个参数或操作数(例如他们是一元、二元、三元、或n元)。
DBMS 150读取联接节点,并且响应地,从联接节点的一个或多个子表节点读取行,将列中的数据代入读取的行(其具有与连接至联接节点的查询谓词中指定的相同表和列标识符),并且评估得到的谓词表达式为真还是假。如果谓词表达式评估为真,则读取的行满足或适合连接的查询谓词,所以DBMS 150将读取的行保存在结果集152。如果谓词表达式评估为假,则读取的行不满足或适合查询谓词,所以DBMS 150从结果集152排除读取的行。
联接节点代表其行满足连接的查询谓词的表的联接操作。在各个实施例中,联接操作可包括内部联接、等值联接、自然联接、外部联接、左外 部联接、右外部联接、全外部联接、异常联接、和自联接。在两个表之间的内部联接仅得到匹配于要在结果集152中返回的某些选择标准的行。外部联接,例如表A和表B的左联接(根据选择标准的集)返回所有匹配的行,以及在表A中但在表B中不匹配的那些行。匹配的行具有由表A和表B的数据填充所有他们字段的值。但是,表A中不匹配的行在表B的字段中将具有空值,或者其他缺省字符。另一外部联接,例如表A和表B的右联接也返回所有匹配的行,但是与左联接不同,返回在表B中但在表A中不具有匹配行的那些行。表A和表B的异常联接返回在表B中不存在匹配行的在表A中的那些行的结果集152。
联接节点415代表使用连接的查询谓词460由子表节点420和425代表的表的联接操作。联接节点410代表使用查询谓词455由子表节点430代表的表和由子联接节点415建立的中间结果集的联接操作。联接节点405代表使用查询谓词450和465由子表节点435代表的表和由子联接节点410建立的中间结果集的联接操作。在实施例中,联接节点代表DBMS 150中的逻辑,其执行在子表节点中寻找行的联接操作,当联接节点的逻辑将找到的行的列值代入与行中的列标识符具有相同名称或标识符的查询谓词中的占位符或变量时,其列值满足查询谓词的标准。
在操作中,DBMS 150使用执行计划225-1执行查询158,如下。DBMS 150开始遍历在根或头根处的节点,并遇到(读取)头节点405(联接节点405)。由于联接节点405并非表节点,则DBMS 150经由链路470行进至联接节点405的左子联接节点410,以搜索第一行。DBMS 150遇到(读取)联接节点410。由于联接节点410并非表节点,DBMS 150经由链路474再次行进至联接节点410的左子联接节点415,以搜索第一行。DBMS150遇到联接节点415。由于联接节点415并非表节点,DBMS 150经由链路478再次行进至联接节点415的左子联接节点420,以搜索第一行。DBMS150遇到表节点420,并使用扫描操作从表节点420代表的表提取第一行。
在扫描操作中,如果页采集模式指示符495指示假,则DBMS 150以行标识符顺序从表的开始到结尾读取行,而不使用索引240以随机访问表, 并且不考虑行是存储在存储器102中还是二级存储装置125中。当以行标识符顺序读取行时,一些行可从存储器102读取,而其他行可从二级存储装置125读取,并且从存储器102对于行的读取可与从二级存储装置125对于行的读取交错。在实施例中,每个表具有其自身的页采集模式指示符495,其可具有彼此不同的值。因此,一个表可具有为设置真的页采集模式,而另一页具有设置为假页采集模式。
在扫描操作中,如果页采集模式指示符495指示真,则DBMS 150以页地址顺序从表读取行,而不使用索引240以随机访问表。当以页地址顺序从表读取行时,DBMS 150以存储所述行的存储器102中页的地址的顺序读取行,对于那些行存储在存储器102中。以页地址顺序,DBMS 150在从二级存储装置125中存储的表读取任意行之前从存储器102中存储的表读取所有行,所以从存储器102和二级存储装置125对于行的读取并非交错。
然后,DBMS 150行进至节点415的右子节点425,遇到(读取)表节点425,并搜索满足联接节点415的连接的查询谓词460的选择标准的由表节点425识别的表中的第二行。如果DBMS 150没有找到满足联接节点415的连接的查询谓词460的选择标准的由表节点425识别的表中的第二行,则DBMS 150返回至表节点420,并对于表扫描第二行,并返回至表节点425,并再次搜索满足联接节点415的连接的查询谓词460的选择标准的由表节点425识别的表中的第二行。
一旦识别出满足查询谓词460的选择标准的由表节点425识别的表中的匹配行,则DBMS 150将在中间结果集中找到的第一行(在扫描操作中从节点420代表的表读取)和第二行(从表节点425读取)返回至联接节点410。DBMS 150然后行进至右子表节点430,并搜索满足或适合查询谓词455的由表节点430识别的表t3中的第三行。应注意,在确定表T3中的行是否满足查询谓词455时,DBMS 150使用在表节点t1中找到的并在中间结果集中返回的第一行,以比较t1.c2=t3.c2。如果找到针对从联接节点415返回的中间结果集DBMS 150没有找到满足查询谓词455的在表t3 中的行,则DBMS 150返回至联接节点415并重新执行联接415,从表t1提取后续行,并返回满足查询谓词460的在表t2中的行,然后返回至联接节点410,并再次搜索适合查询谓词455的在表t3中的第三行。
在DBMS 150找到满足查询谓词455的标准的在表t3中的第三行之后,DBMS 150将适合查询谓词455的来自表t1的第一行、来自表t2的第二行、和来自表t3的第三行的中间结果集返回至联接节点405。然后,DBMS 150行进至联接节点405的右子节点435,遇到(读取)表节点435,并搜索满足查询谓词450和465的标准的由表节点435识别的在表t4中的第四行,同时使用中间结果集中的行执行查询谓词450和465的比较。
DBMS 150扫描表t4中的所有行,然后DBMS 150的处理返回至联接节点410,这确保针对从表t1和t2提取的当前行扫描了表t3的所有行。一旦扫描了表t3中的所有行,并且在联接节点405处由DBMS 150进一步处理了任意匹配,则DBMS 150返回至联接节点415,从表t1提取后续行,并重复上述操作序列。因此,表示表t1 235-1的表节点420是执行计划225-1的联接顺序中的第一个表,因为DBMS 150在以联接顺序从任意其他表(由节点425、430和435代表)读取行之前从表t1 235-1扫描行。由节点425代表的表t2 235-2是联接顺序中的第二个,因为DBMS 150在从表t1读取行以确定是否满足查询谓词460之后并且在从各个节点430和435代表的表t3和t4读取行之前从表t2 235-2读取行。由节点430代表的表t3 235-3是联接顺序中的第二个,因为DBMS 150在从表t1和t2读取行以确定是否满足查询谓词455之后并且在从表t4读取行之前从表t3 235-3读取行。由节点435代表的表t4 235-4是联接顺序中的第四个,或最后一个,因为DBMS 150在从表t1、t2和t3读取行以确定是否满足查询谓词450和465之后最后从表t4 235-4读取行。
具有双亲和子节点的树形图仅是查询执行的逻辑表示,有助于理解执行引擎230如何执行特定查询。但是,由查询优化器215生成的执行计划225可包括执行引擎230可理解和可执行的代码。这个代码不需要双亲节点和子节点,但是相反,包括由具有这样的节点和连接的树形图模型表示 的逻辑,并且也可实现为其他类型的数据结构。因此,当这里使用这样的树形图术语描述本发明实施例时,不需要树形图的实际建立和修改。
图5示出根据本发明实施例的示例性驻留页数据结构164的框图。驻留页数据结构164包括示例性记录502、504、506和508,其每个包括表标识符字段530和存储器百分比字段535。表标识符字段530指定表235的标识符。存储器百分比字段535指定在存储器102中存储的、相对于二级存储装置125在相同记录中由表标识符字段530识别的表中的数据的百分比。
图6示出根据本发明实施例的示例性活动页地址数据结构166的框图。活动页地址数据结构166指定对于存储器102中存储的(相对于二级存储装置125中存储的)每个数据库表的页地址。例如,活动页地址166包括活动页地址602,其指定在存储表T1 235-1中的行的在存储器102中的页的页地址。活动页地址166还包括活动页地址604,其指定在存储表T2 235-2中的行的在存储器102中的页610的页地址。活动页地址166包括活动页地址606,其指定在存储表T3 235-3中的行的在存储器102中的页地址。活动页地址606不包含地址,因为在这个实例中,表T3中的行未出现在存储器102中。活动页地址166还包括活动页地址608,其指定在存储表T4 235-4中的行的在存储器102中的页地址。
页是操作系统或DBMS 150用作存储器102和二级存储装置125之间传送单位的存储器102的固定长度块。页可包括一个或多个位置(每个具有一个或多个字节的大小),其每个由地址识别。每个页可存储行的一部分或表的一个或多个行。对于每个表的活动页地址中的页地址以升序页地址顺序存储。如存储器页610和活动页地址604所示,活动页地址是升序页地址顺序,这可与表中的行的行标识符的顺序不同。
图7示出根据本发明实施例的建立执行计划的示例性处理的流程图。控制开始于框700。然后,控制继续进行至框705,其中DBMS 150从应用160接收查询158。然后,控制继续进行至框710,其中DBMS 150确定实现查询158的执行计划225是否存在。如果在框710的确定为真,则 实现查询158的执行计划225存在,所以控制继续进行至框715,其中DBMS 150从存储器管理器162请求和接收驻留页表164。然后,控制继续进行至框720,其中DBMS 150确定在存储器102中存储的表中的数据的百分比是否大于存储器阈值。在实施例中,DBMS 150可选地还确定查询158是否请求经由使用FIRSTIO选项或前N个记录选项(其中“N”为指定数目个记录)的执行计划来执行查询158。
在FIRSTIO执行计划或前N个记录执行计划中,查询优化器215没有考虑提取满足查询158的所有记录的性能,但是相反考虑提取满足查询的多(N)个记录或既满足查询158又可同时在用户I/O设备121的显示屏的一个窗口中显示或查看的多个记录的性能。查询优化器215评估对于多个执行计划的性能(评估的执行时间),并从具有最佳评估性能或最低评估执行时间的多个执行计划选择FIRSTIO执行计划,用于寻找既满足查询158又可同时在一个窗口中显示或查看的多个记录。在各个实施例中,查询优化器215可使用如下因数来计算评估时间:表中记录的数目、查询158的关键字的基数、表关于彼此的基数、或表关于彼此的基数、或任意其他适合因数。
窗口是显示由查询158的执行生成的结果集152的显示屏的视觉区域。在实施例中,可同时显示或查看的记录的数目是由查询优化器215设置或由数据库管理员或另一程序输入的缺省或预定数目。在另一实施例中,查询优化器215经由操作系统读取结果集窗口能够接收的字节的数目、窗口能够接收的字符的数目、窗口中可显示的行的数目、和/或窗口中的字符的字体大小。优化器215还通过确定查询158请求显示的列或字段以及通过确定来自数据库220的列或字段大小来依据记录中的字节或字符的数目确定所显示记录的大小。然后,查询优化器215通过调节字符或字节的数目来调节同时在一个窗口中显示或查看的记录的数目,用于在考虑窗口中的行间隔、字体大小、列或字段大小、和上/下/右/左边缘时的可读性。
在实施例中,FIRSTIO执行计划通过使用随机访问表的索引来指定从每个数据库表、或以联接顺序从第一数据库表探测记录的技术。在另一实 施例中,FIRSTIO计划指定任意适当技术,或者扫描、探测、或其组合。在探测操作中,优化器215经由使用索引240以及索引240中的关键字或列值的随机访问操作从表提取记录,以从表间接提取索引的记录,而无需在表中从开始到结尾扫描所有记录。
如果在框720的确定为真,则在存储器102中存储的表中的数据的百分比大于存储器阈值(并且可选地,查询158指定FIRSTIO或前N个记录选项),所以控制继续进行至框725,其中DBMS 150设置执行计划中的页采集模式指示符495以指示对于表为真。然后,控制继续进行至框730,其中DBMS 150执行所述执行计划,如参照图8进一步描述。在实施例中,数据库系统的特征为,尽管表可能较大,在任意时刻,表中的数据可频繁地引用数据的部分,称为数据热点。代表热点的数据由于引用的频率倾向于保留在存储器中,并且没有频繁引用的数据倾向于从存储器页调出至二级存储装置。在实施例中,通过首先从存储器中的页读取行,DBMS倾向于寻找和提供包括用于FIRSTIO和前N行查询选项的数据热点的结果集。
然后,控制返回至框705,其中DBMS 150接收相同或不同查询158,如先前所述。如果在框720的确定为假,则在存储器102中存储的表中的数据的百分比不大于存储器阈值,或可选地,查询158未指定FIRSTIO或前N个记录选项,所以控制继续进行至框735,其中DBMS 150针对执行计划225中的表设置页采集模式指示符495,以指示假。DBMS 150针对执行计划225访问的每个表执行框720、725和735的处理,所以一些或全部页采集模式指示符495可能对于表为相同或不同。然后,控制继续进行至框730,如先前所述。
如果在框710的确定为假,则实现查询158的执行计划不存在,所以控制继续进行至框740,其中DBMS 150建立实现查询158的执行计划,例如参照图4先前所述。在实施例中,DBMS 150通过将查询158分成查询谓词并建立与查询谓词连接的联接节点和表节点来建立执行计划。然后,控制继续进行至框715,如先前所述。
图8示出根据本发明实施例的对于执行计划进行执行的示例性处理的 流程图。控制开始于框800。然后,控制继续进行至框805,其中DBMS 150确定在执行计划225中的页采集模式指示符495是否指示真。如果在框805的确定为真,则在执行计划225中的页采集模式指示符495指示真,并且执行计划225在页采集模式下,所以控制继续进行至框810,其中DBMS150从存储器管理器162请求和接收活动页地址166。在另一实施例中,DBMS 150经由索引240寻找由执行计划225所需的行的页位置地址,将页位置地址传送至存储器管理器162,并且响应地,从存储器管理器162接收活动页地址166。然后,控制继续进行至框815,其中DBMS 150执行所述执行计划225,其引起表的扫描,如参照图4先前所述。然后,控制继续进行至框820,其中DBMS 150以包括行的存储器页的页地址的升序顺序(如对于表的活动页地址数据结构166所指定)从存储器102中的表扫描或读取行。在实施例中,DBMS 150读取在存储器102中存储的表中的所有行。在另一实施例中,DBMS 150读取在存储器中存储的表的行的一部分。然后,控制继续进行至框825,其中DBMS 150处理通过扫描返回的行,包括评估在执行计划225中的查询谓词,将适合或满足查询谓词的行(多个)存储到结果集152,和/或从结果集152移除不适合或不满足查询谓词的行(多个),如先前参照图4所述。在实施例中,DBMS 150可对于不同行、不同联接节点、不同查询谓词、和/或对于不同表多次执行框815和820中所示的处理,直到读取了在存储器102中存储的表中的所有行,以实现所述执行计划的执行,如先前参照图4所述。
然后,控制继续进行至框830,其中DBMS 150确定实现查询158的执行计划225的执行是否完成,是否读取了满足查询158的所有行,或者用户是否请求终止执行计划的执行。如果在框830的确定为真,则查询158完成或用户请求终止执行,所以控制继续进行至框835,其中DBMS 150经由用户I/O设备121显示或提供结果集152。然后,控制继续进行至框899,其中图8的逻辑返回至调用方。
如果在框830的确定为假,则查询158没有完成并且用户没有请求终止执行计划的执行,所以控制继续进行至框840,其中DBMS 150确定表 中的后续行(多个)(后续行(多个)还未从二级存储装置125读取)是否在其页地址在活动页地址166中指定的页中。如果在框840的确定为真,则表中的后续行(多个)在其页地址在该表的活动页地址166中指定的页中,所以控制继续进行至框845,其中DBMS 150跳过并且不从二级存储装置125读取后续行(多个),因为DBMS 150已经从存储器102读取了那些行。然后,控制返回至框830,如先前所述。
如果在框840的确定为假,则表中的后续行(多个)没有在其页地址在该表的活动页地址166中指定的页中,所以控制继续进行至框850,其中DBMS 150从二级存储装置125读取后续行(多个)。然后,控制返回至框825,其中DBMS 150处理从二级存储设备125读取的行。然后,控制继续进行至框830,如先前所述。因此,通过开始于框825的循环的操作,DBMS 150以页地址顺序读取(扫描)和处理先前没有从存储器102扫描的那些行,所以从存储器102读取的行不同于从二级存储装置125读取的行,并且在DBMS从存储器102读取行时,从二级存储装置125中读取的行没有存储在存储器102中(在框820)。
如果在框805的确定为假,则执行计划225中的页采集模式指示符495指示假,并且执行计划225没有在页采集模式下,所以控制继续进行至框855,其中DBMS 150以行标识符顺序处理表中的行,如以下参照图9进一步描述。然后,控制继续进行至框860,其中图8的逻辑返回至调用方。
因此,DBMS 150在从二级存储装置125扫描行之前扫描在存储器102中的页的行,在实施例中这样可提高性能,因为存储器102可具有比二级存储装置125更快的访问时间。
图9示出根据本发明实施例的以行标识符顺序扫描表的示例性处理的流程图。控制开始于框900。然后,控制继续进行至框905,其中DBMS 150执行所述执行计划225,其引起表的扫描,如先前参照图4所述。然后,控制继续进行至框910,其中DBMS 150以行的标识符的升序顺序从存储器102和/或二级存储装置125中的表扫描或读取行。然后,控制继续进行至框915,其中DBMS 150处理由扫描返回的行,包括评估查询谓词,将 适合查询谓词的行(多个)存储到结果集152,和/或从结果集152移除不适合查询谓词的行,如先前参照图4所述。
然后,控制继续进行至框920,其中DBMS 150确定查询158的执行计划的执行是否完成,是否读取了满足查询158的所有行,或者用户是否请求终止执行计划的执行。如果在框920的确定为真,则查询158完成或用户请求终止执行,所以控制继续进行至框925,其中DBMS 150经由用户I/O设备121显示或提供结果集152。然后,控制继续进行至框999,其中图9的逻辑返回至调用方。
如果在框920的确定为假,则查询158没有完成并且用户没有请求终止执行计划的执行,所以控制继续进行至框905,其中DBMS 150继续执行所述执行计划,这引起相同或不同表的扫描。然后,控制继续进行至框910,如先前所述。
这里使用的术语仅为了描述特定实施例的目的,并非用于本发明的限制。这里,单数形式“一”、“一个”和“所述”还包括复数形式,除非上下文明确指示。还可理解,术语“包括”和/或“包含”在使用时指定相关特征、整数、步骤、操作、元件和/或组件的存在,并非排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或增加。在本发明示例性实施例的先前详细描述中,参照形成其一部分的附图(其中类似标号代表类似元素),并且其仅通过可实践本发明的特定示例性实施例示出。这些实施例被充分详细地描述,以使得本领域技术人员能够实践本发明,但是可利用其他实施例,并且在不脱离本发明的范围的情况下可进行逻辑、机械、电气、和其他改变。在先前描述中,阐述了多个具体细节以提供本发明实施例的完整理解。但是,在没有这些具体细节的情况下可实践本发明实施例。在其他实例中,详细示出了公知的电路、结构、和技术,而并非为了掩盖本发明的实施例。本说明书中使用的词语“实施例”的不同实例不必提及相同实施例,但是可以相同。这里示出或描述的任何数据和数据结构仅是实例,并且在其他实施例中,可使用不同的数据量、数据类型、字段、字段的数目和类型、字段名称、行的数目和类型、记录、项目、或 数据的组织。此外,任何数据可通过逻辑组合,从而单独的数据结构并非必须。因此,先前详细的描述并非用于限制的含义。
Claims (13)
1.一种用于二级存储装置读取行之前从存储器读取行的方法,包括:
从存储器读取第一表的第一多个行;
将满足查询谓词的第一多个行的第一选择行存储到结果集中;
在从存储器读取所述第一多个行之后,以第一表中第二多个行的行标识符的升序顺序从二级存储装置读取第一表的第二多个行;以及
将满足查询谓词的第二多个行的第二选择行存储到结果集中。
2.如权利要求1所述的方法,其中从存储器读取第一表的第一多个行还包括:以包括第一多个行的存储器中页的页地址的顺序从存储器读取第一表的第一多个行,其中在第一多个行的读取时第二多个行没有存储在存储器中。
3.如权利要求1所述的方法,其中所述二级存储装置具有比存储器更慢的访问时间。
4.如权利要求2所述的方法,还包括:
如果在存储器中存储的第一表中的数据的百分比大于存储器阈值,则执行以页地址的顺序从存储器读取第一表的第一多个行,以及在第一多个行的读取之后,以行标识符的顺序从二级存储装置读取第一表的第二多个行;以及
如果在存储器中存储的第一表中的数据的百分比不大于存储器阈值,则以第一多个行和第二多个行的行标识符的顺序读取第一多个行和第二多个行。
5.如权利要求4所述的方法,其中实现查询的执行计划指定查询谓词、第一表和页采集模式指示符。
6.如权利要求5所述的方法,还包括:
如果在存储器中存储的第一表中的数据的百分比大于存储器阈值,则设置执行计划中的页采集模式指示符以指示真。
7.如权利要求6所述的方法,还包括:
如果在存储器中存储的第一表中的数据的百分比不大于存储器阈值,则设置执行计划中的页采集模式指示符以指示假。
8.一种用于二级存储装置读取行之前从存储器读取行的装置,包括:
用于以包括第一多个行的存储器中的页的页地址的顺序从存储器读取第一表的第一多个行的模块;
用于将满足查询谓词的第一多个行的第一选择行存储到结果集中的模块;
用于在以页地址的顺序读取第一多个行之后,以第一表中第二多个行的行标识符的升序顺序从二级存储装置读取第一表的第二多个行的模块,其中在第一多个行的读取时第二多个行没有存储在存储器中;以及
用于将满足查询谓词的第二多个行的第二选择行存储到结果集中的模块。
9.如权利要求8所述的装置,其中所述二级存储装置具有比存储器更慢的访问时间。
10.如权利要求8所述的装置,还包括:
用于如果在存储器中存储的第一表中的数据的百分比大于存储器阈值,则执行以页地址的顺序从存储器读取第一表的第一多个行,以及在第一多个行的读取之后,以行标识符的顺序从二级存储装置读取第一表的第二多个行的模块;以及
用于如果在存储器中存储的第一表中的数据的百分比不大于存储器阈值,则以第一多个行和第二多个行的行标识符的顺序读取第一多个行和第二多个行的模块。
11.如权利要求10所述的装置,其中实现查询的执行计划指定查询谓词、第一表和页采集模式指示符。
12.如权利要求11所述的装置,还包括:
用于如果在存储器中存储的第一表中的数据的百分比大于存储器阈值,则设置执行计划中的页采集模式指示符以指示真的模块。
13.如权利要求12所述的装置,还包括:
用于如果在存储器中存储的第一表中的数据的百分比不大于存储器阈值,则设置执行计划中的页采集模式指示符以指示假的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/907,157 US9218394B2 (en) | 2010-10-19 | 2010-10-19 | Reading rows from memory prior to reading rows from secondary storage |
US12/907,157 | 2010-10-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102455984A CN102455984A (zh) | 2012-05-16 |
CN102455984B true CN102455984B (zh) | 2015-04-22 |
Family
ID=45935040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110213452.4A Active CN102455984B (zh) | 2010-10-19 | 2011-07-28 | 从二级存储装置读取行之前从存储器读取行的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9218394B2 (zh) |
CN (1) | CN102455984B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2682878A1 (en) * | 2012-07-04 | 2014-01-08 | Software AG | Method of processing relational queries in a database system and corresponding database system |
WO2014073370A1 (ja) * | 2012-11-12 | 2014-05-15 | ソニー株式会社 | 情報処理装置、情報処理方法及びコンピュータプログラム |
US9773041B2 (en) * | 2013-03-06 | 2017-09-26 | Oracle International Corporation | Methods and apparatus of shared expression evaluation across RDBMS and storage layer |
US9959312B2 (en) * | 2013-09-05 | 2018-05-01 | Sybase, Inc. | High performance index creation on sorted data using parallel query plans |
US9886447B2 (en) * | 2014-08-22 | 2018-02-06 | International Business Machines Corporation | Performance of asynchronous replication in HSM integrated storage systems |
US9747331B2 (en) * | 2014-10-06 | 2017-08-29 | International Business Machines Corporation | Limiting scans of loosely ordered and/or grouped relations in a database |
US10223395B2 (en) * | 2015-02-05 | 2019-03-05 | Sap Se | Derivation of hierarchy indexes |
US11656781B2 (en) | 2019-10-11 | 2023-05-23 | International Business Machines Corporation | Distributing sequential read streams across synchronous mirror pairs |
US11599529B2 (en) * | 2021-08-02 | 2023-03-07 | Keygen Data Llc | Method of batch processing data that is stored in multiple tables as a plurality of rows of data by reading out and batch processing data from only a portion of a row from each of tables that is to be used in batch processing logic |
US11599530B2 (en) | 2021-08-02 | 2023-03-07 | Keygen Data Llc | Method of processing data in a database by simultaneously processing row data of key pairs which include a key of a first table in the database, and a matching key and a unique row of a second table in the database |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1894675A (zh) * | 2003-12-15 | 2007-01-10 | 索尼株式会社 | 信息处理装置、信息处理方法和计算机程序 |
US7308437B2 (en) * | 2003-10-22 | 2007-12-11 | International Business Machines Corporation | Optimization of queries using retrieval status of resources used thereby |
US7512747B2 (en) * | 2006-04-14 | 2009-03-31 | International Business Machines Corporation | Method and apparatus for efficiently supporting multiple one-time table access operations in a hierarchical memory setting |
-
2010
- 2010-10-19 US US12/907,157 patent/US9218394B2/en not_active Expired - Fee Related
-
2011
- 2011-07-28 CN CN201110213452.4A patent/CN102455984B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7308437B2 (en) * | 2003-10-22 | 2007-12-11 | International Business Machines Corporation | Optimization of queries using retrieval status of resources used thereby |
CN1894675A (zh) * | 2003-12-15 | 2007-01-10 | 索尼株式会社 | 信息处理装置、信息处理方法和计算机程序 |
US7512747B2 (en) * | 2006-04-14 | 2009-03-31 | International Business Machines Corporation | Method and apparatus for efficiently supporting multiple one-time table access operations in a hierarchical memory setting |
Also Published As
Publication number | Publication date |
---|---|
CN102455984A (zh) | 2012-05-16 |
US20120096054A1 (en) | 2012-04-19 |
US9218394B2 (en) | 2015-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455984B (zh) | 从二级存储装置读取行之前从存储器读取行的方法和装置 | |
Wylot et al. | RDF data storage and query processing schemes: A survey | |
Fan | Graph pattern matching revised for social network analysis | |
Christophides et al. | Entity resolution in the web of data | |
Kim et al. | Taming subgraph isomorphism for RDF query processing | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US9053210B2 (en) | Graph query processing using plurality of engines | |
Zhang et al. | Bed-tree: an all-purpose index structure for string similarity search based on edit distance | |
CN102541631B (zh) | 以多线程不同驱动源执行计划处理查询的方法和系统 | |
US8751505B2 (en) | Indexing and searching entity-relationship data | |
AU2013335231B2 (en) | Profiling data with location information | |
Whang et al. | Incremental entity resolution on rules and data | |
US9286393B2 (en) | Performing a function on rows of data determined from transitive relationships between columns | |
CN104239395A (zh) | 搜索的方法和系统 | |
De Virgilio | Smart RDF data storage in graph databases | |
Lian et al. | Keyword search over probabilistic RDF graphs | |
Jayaram et al. | Towards a query-by-example system for knowledge graphs | |
US9984108B2 (en) | Database joins using uncertain criteria | |
Xu et al. | Lightweight tag-aware personalized recommendation on the social web using ontological similarity | |
Álvarez-García et al. | Compact and efficient representation of general graph databases | |
Zhang et al. | Selecting the optimal groups: Efficiently computing skyline k-cliques | |
Nguyen et al. | Estimating searching cost of regular path queries on large graphs by exploiting unit-subqueries | |
KR102062139B1 (ko) | 지능형 자료구조 기반의 데이터 처리 방법 및 그를 위한 장치 | |
Fosci et al. | Soft Querying Features in GeoJSON Documents: The GeoSoft Proposal | |
Dönz et al. | Extracting and integrating structured information from web databases using rule-based semantic annotations |
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 |