处理具有混合存储器的数据库中的查询的设备和方法_2

文档序号:8543721阅读:来源:国知局
r>[0036]此外,创建针对混合全扫描的扫描计划可包括:检查是否存在表格的索引;当检查出存在表格的索引时创建针对混合索引扫描的扫描计划;并且通过比较混合全表格扫描计划和混合索引扫描计划之间的成本选择二者之一。
[0037]此外,表格可划分成多个分区并且存储在磁盘表格空间和内存表格空间的一个中;或者分区表格可根据分区表格中的分区键值的重要性存储在磁盘表格空间和内存表格空间的混合存储器中。
[0038]此外,每个分区表格可根据分区表格中的具有时间信息的分区键值随着时间的推移依次从内存表格空间转移到磁盘表格空间。
[0039]利用本发明的示例性实施方式的配置,通过扩展表格分区技术以便使得关系数据库系统以混合的方式使用磁盘表格空间和内存表格空间,可以实现由于不同数据存储在一个逻辑表格中的数据辨别并且按照存储的差异创建扫描计划,从而建立对于旨在访问具有不同的属性的存储的查询的最佳扫描计划。
[0040]还可以通过提供将最新数据存储在内存表格空间并且将已经过某个时段的旧的数据依次转移到磁盘表格空间中的基于时间的分区表格功能,克服存储容量的局限性同时获得对查询的快速响应。
【附图说明】
[0041]通过结合附图给出的实施方式的下列描述,本发明的以上以及其他目标和特征将变得显而易见,其中:
[0042]图1是根据本发明的示例性实施方式的用于具有混合存储器的数据库中的处理查询的设备的详细的框图;
[0043]图2是根据本发明的示例性实施方式的创建磁盘表格和内存表格之间的连接查询(join query)的计划的概念图;
[0044]图3示出了根据本发明的示例性实施方式的使用相同表格空间创建的分区表格的结构和数据;
[0045]图4A至图4D示出了根据本发明的示例性实施方式的使用不同表格空间创建的分区表格的结构和数据;
[0046]图5是根据本发明的示例性实施方式的在执行查询时访问存储在不同的磁盘表格空间和内存表格空间中的表格的概念图;
[0047]图6A和图6B是根据本发明的示例性实施方式的基于表格空间的属性创建访问非分区表格或分区表格的计划的方法的流程图。
【具体实施方式】
[0048]在下文中,将参考附图详细描述本发明的实施方式。在以下描述中,如果熟知的功能或构造使得本发明的主题因为不必要的细节变得晦涩,则将不会对其进行详细描述。此夕卜,如下所述的术语是考虑到本发明中的功能来限定的并且可根据用户或操作者的意图或实践而改变。因此,可基础贯穿说明书的内容进行定义。
[0049]首先,将对创建关系数据库(其支持磁盘表格空间和内存表格空间两者)中的表格的过程进行以下描述。
[0050]以下DDL语句是创建基于磁盘的表格空间的语句的实例。
[0051]CREATE TABLESPACE DISK_TBS datafile’/home/data/TBS.dtf’size IG ;
[0052]在以上DDL语句中,创建命名为DATA_TBS的表格空间作为实际物理磁盘上的存储’ /home/data/TBS.dtf’的文件的存储空间。如果另外创建基于DATA_TBS的表格空间的新表格并且表格需要另外的存储空间,则固定尺寸的单元的相邻物理区域从数据文件被分配到表格。当通过来自用户的数据改变DML进行数据插入、删除、或改变时,改变被存储在磁盘中并且当通过查询语句收到数据存取请求时从相关的文件读取改变的数据块。
[0053]例如,利用磁盘表格空间的基于磁盘的表格可通过如在以下实例I中示出的表格创建语句来创建。
[0054]实例1:
[0055]CREATE TABLE ORDERS(order_dt date,
[0056]order_no number,
[0057]cust_id number,
[0058]order_status number,
[0059]order_total number)TABLESPACE DISK_TBS ;
[0060]接着,以下是创建基于内存的表格空间的DDL语句的实例:
[0061]CREATE MEMORY TABLESPACE MEMORY_TBS size 1G ;
[0062]在以上DDL语句中,命名为MEMORY_TBS的表格空间被分配有1G的内存大小以初始化。
[0063]无论何时内存表格需要存储空间时,由内存表格利用的内存表格空间便被分配有内存表格中的另外的存储空间。将会利用内存表格空间的内存表格可以是具有与已参考基于内存的关系数据库的结构和属性讨论的内存表格具有相似的特点的表格。换言之,基于内存的关系数据库确保通过查询语句访问表格时的即时内存访问并且重做日志仅存储在磁盘中,即使对于没有将数据存储在磁盘中的数据改变DML。
[0064]如以下实例2中列出的,例如,表格空间指定为内存表格空间,从而以与基于磁盘的表格语句相同的方式创建内存表格。
[0065]实例2:
[0066]CREATE TABLE CUSTOMER(cust_id number,
[0067]reg_dt date,
[0068]rank char (10),
[0069]address varchar(100),
[0070]name varchar (32)) TABLESPACE MEMORY_TBS ;
[0071]此外,数据库是源于基于磁盘的数据库还是基于内存的数据库未包含于数据库内的表格元信息中并且与存储表格的表格空间的属性相区分。
[0072]图1是根据本发明的示例性实施方式的用于具有混合存储器的数据库的处理查询的设备的详细框图。查询处理设备包括表格空间元数据单元102、查询编译单元104、查询执行单元106、磁盘表格空间108、和内存表格空间110。
[0073]在下文中,将参考图1描述查询处理设备的各个部件的操作。
[0074]首先,表格空间元数据单元102包括在关系数据库系统(其包括磁盘表格空间108和内存表格空间110)中的存储表格的磁盘表格空间108或内存表格空间110的属性信息。因此,查询编译单元104可通过参考表格空间元数据单元102检查数据存储在哪个存储中。
[0075]查询编译单元104在接收到查询语句时创建处理查询语句所需的表格扫描计划。当建立扫描计划以访问表格时,查询编译单元104参考表格空间元数据单元102以检查指示存储相关表格的表格空间的元信息并确定相关表格存储在磁盘表格空间108或内存表格空间110的哪个中。此外,查询编译单元104根据存储相关表格的存储通过计算读取相关表格的成本来创建使处理查询语句所需的成本最小化的扫描计划,从而实现能够最佳地执行查询语句的表格扫描计划。
[0076]查询执行单元106借助于包含于由查询编译单元104创建的表格扫描计划中的物理表格信息识别存储相关表格的存储,并且然后通过使用可访问存储相关表格的磁盘表格空间108或内存表格空间110的功能读取相关表格的数据。具体地,如果识别相关表格存储在磁盘表格空间108中,则相关表格以数据块的形式读取。相反,如果识别相关表格存储在内存表格空间110中,则通过内存页面获得行。因为行在它们的存储结构上会不同,所以它们可在表格扫描过程中被适配成相同的结构。在执行表格扫描之后,查询执行单元106基于来自用户的查询语句的结构在行的单元中执行语句的处理,诸如连接(join)、排序(sort)等,其中对各个行的处理可在相同结构的假设下进行。
[0077]在下文中,将通过各种查询描述查询处理设备的操作。
[0078]首先,以下实例3表示使用从上述实例创建的磁盘上的表格ORDER和内存上的表格CUSTOMER来获得由ID是1234的客户(customer)取消的定单(order)的数目以及定单的总数的查询。
[0079][实例3]
[0080]SELECT count (order_no)order_count, sum(order_total)order_total
[0081]FROM CUSTOMER C, ORDERS 0
[0082]WHERE C.cust_id = 1234AND
[0083]C.cust_id = 0.cust_id AND
[0084]0.0rder_status = ’ CANCEL’ ;
[0085]图2示出了从查询处理设备可产生的以上查询的执行计划。
[0086]参照图2,换言之,对单个内存上的表格⑶STOMER的访问计划是作为访问存储在内存表格空间I1中的索引和表格的计划而产生的(框S200)。
[0087]此外,对单个磁盘上的表格ORDERS的访问计划是作为获得存储在磁盘表格空间108中的索引和表格的访问权而产生的(框S202)并且对磁盘上的表格执行Rowid扫描(框S204) ο此后,通过过滤处理利用‘取消’的定单状态信息的注释(notat1n)对包含客户id的表格进行搜索(框S206)。
[0088]下面,两个表格被连接(框S208),对连接的表格进行聚合(aggregat1n)(框S210)。在进行内存访问计划之后将在磁盘块进行至行类型的转换。因此,这种转换在进行嵌套循环连接计划时在没有区分左边或右边中准备的行的类型的情况下进行。
[0089]下面,以下实例4是用于创建典型的分区表格的DDL语句。
[0090][实例4]
[0091]CREATE TABLE ORDERS(order_dt date,
[0092]order_no number,
[0093]cust_id number,
[0094]order_status number,
[0095]order_total number)
[0096]PARTIT1N BY RANGE(0RDER_DT)(
[0097]PARTIT1N 0RDERS_PIVALUES LESS THAN
[0098](T0_DATE( ‘2013/01/01,,‘YYYY/MM/DD,)TABLESPACE DI SK_TBS,
[0099]PARTIT1N 0RDERS_P2VALUES LESS THAN
[0100](T0_DATE( ‘2013/02/01,,‘YYYY/MM/DD,)TABLES
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1