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

文档序号:8543721阅读:来源:国知局
PACE DISK_TBS,
[0101]PARTIT1N 0RDERS_P3VALUES LESS THAN
[0102](MAXVALUE)TABLESPACE DISK_TBS
[0103]);
[0104]参照以上实例4和在图3中示出的表格的结构,图3示出了通过参考0RDER_DT列的值以如下方式划分数据来将数据存储在总共三个分区表格中的表格ORDERS:在2013年I月I日之前的数据存储在分区表格的0RDERS_P1分区300中;从2013年I月I日到2013年2月I日的数据存储在0RDERS_P2分区302中;并且从2013年2月4日到2013年2月11日的数据存储在0RDERS_P3分区304中。
[0105]另一方面,通常,创建的分区表格可被指定被存储在不同的表格空间中。因此,如上所述的同时支持磁盘表格空间和内存表格空间的数据库可以通过指定不同的表格空间将非分区表格的数据存储在具有不同的物理属性的单独的存储中。
[0106]以下实例5呈现了创建使用混合存储器的表格⑶STOMER的分区表格的实例。
[0107][实例5]
[0108]CREATE TABLE CUSTOMER(cust_id number,
[0109]reg_dt date,
[0110]rank char (10),
[0111]address varchar(100),
[0112]name varchar (32))
[0113]PARTIT1N BY LIST(rank)
[0114](
[0115]partit1n cust_plvalues(’VIP’)TABLESPACE MEMORY_TBS,
[0116]partit1n cust_p2values (’GOLD’)TABLESPACE DISK_TBS1,
[0117]partit1n cust_p3values (’ SIVER') TABLESPACE DISK_TBS2,
[0118]partit1n cust_p4values (default)TABLESPACE DISK_TBS3
[0119]) ENABLE ROW MOVEMENT ;
[0120]图4A至图4D示出了表格⑶STOMER的存储结构。如图4A至图4D所示,参考表格⑶STOMER的等级列(rank column)的值,内存表格以如下方式配置:通过指定内存表格空间110上的表格空间将‘VIP’客户数据存储在分区表格的⑶ST_P1400中;并且磁盘表格以如下方式配置:通过指定单独的磁盘表格空间108上的表格空间,将除VIP客户的等级以外的等级内的数据存储在CUST_P2402中、CUST_P3404、CUST_P4406等中。
[0121]以下实例6呈现了产生11月一个月份的特定客户的购买信息的查询。
[0122][实例6]
[0123]SELECT count(order_no)order_count, sum(order_total)order_total
[0124]FROM CUSTOMER C, ORDERS 0
[0125]WHERE C.cust_id =:BlAND
[0126]C.cust_id = 0.cust_id AND
[0127]0.0rder_dt between ( ‘2013/11/01’,‘2013/11/30’;
[0128]图5示出了执行以上实例6的查询的计划。
[0129]在图5中,假设计划利用在磁盘上的表格⑶STOMER中产生的全局索引。
[0130]内存上的表格CUSTOMER的扫描计划创建访问存储在内存表格空间110中的索引和表格的计划(框S500)并且对内存中的表格执行混合Rowid扫描(框S502)。此外,磁盘上的表格CUSTOMER的扫描计划创建访问存储在磁盘表格空间108中的索引和表格的计划(框S504)并且对磁盘中的表格执行Rowid扫描(框S506)。此后,利用11月的定单日期的注释通过过滤处理对包含客户id的表格进行搜索(框S508)。下面,两个表格被连接(框S510),并且对连接的表格进行聚合(框S512)。也就是说,当从请求的用户获取唯一ID的值之后获得作为索引的Rowid时,可以通过Rowid确定用户的数据是存储在磁盘表格中还是内存表格中。在客户具有‘VIP’等级并且因此其被允许访问存储表格的情况下,与具有除‘VIP’以外的等级的其他用户不同,可实现在不读取磁盘存储块的情况下直接访问内存表格,这样获得了更高的响应。
[0131]在这点上,因为表格的访问方式可在查询处理设备中的查询执行单元106的执行时间根据Rowid而改变,所以查询处理设备需要通过由查询处理单元106的执行点的判定创建选择访问方式的计划。做这种选择的计划被表示为图5中的‘混合Rowid扫描’节点。选择和执行访问方式的节点的种类如下。
[0132]混合全表格扫描
[0133]混合Rowid扫描
[0134]混合本地索引扫描
[0135]图6A和图6B是示出根据本发明的示例性实施方式的在包括混合存储器的关系数据库系统中的查询处理设备中创建处理查询语句的表格扫描计划的方法的流程图。在下文中,将参考图1至图6A和图6B详细地描述本发明的示例性实施方式。
[0136]首先,如图6A所示,查询语句被输入到包括内存和磁盘的混合存储器的关系数据库系统中。查询语句可以是请求存储在磁盘表格空间108中的表格;请求存储在内存表格空间110中的表格;以及请求被分区并单独存储在磁盘表格空间108和内存表格空间110两者中的表格,其中表格可以是分区表格或非分区表格的任意一种。
[0137]因此,包括内存和磁盘的混合存储器的关系数据库系统的查询处理设备100通过扩展表格分区方法(其使得能够使用内存表格空间I1和磁盘表格空间108的混合存储器)建立针对查询语句的最优表格扫描计划。
[0138]更具体地,当从用户输入查询语句时,查询处理单元100检查处理查询语句所需要的表格是非分区表格还是分区表格(框S600)。
[0139]如果处理查询语句所需要的表格是非分区表格,则查询处理设备100识别存储在表格空间元数据单元102中的表格空间元信息并且检查具有存储在其中的表格的存储是磁盘表格空间108还是内存表格空间110(框S602)。
[0140]然后,如果具有存储在其中的表格的存储通过在框S604处的检查结果被确定为内存表格空间110,则方法进行至框S606,在框S606,查询处理设备100创建针对内存表格全扫描的扫描计划。
[0141]创建如上所述的内存表格全扫描计划之后,查询处理设备100检查是否存在索引(框 S608) ο
[0142]如果不存在索引,则查询处理设备100利用内存表格全扫描计划处理查询语句。然而,如果存在索引,则查询处理设备100还创建针对内存索引扫描的扫描计划。此后,查询处理设备100利用内存表格全扫描计划和内存索引扫描计划中的一个处理查询语句,这通过比较它们之间的成本来选择(框S610)。
[0143]然而,如果具有存储在其中的表格的存储通过框S604处的检查结果被确定为磁盘表格空间108,则方法前进至框S612,在框S612,查询处理设备100创建针对磁盘表格全扫描的扫描计划。
[0144]创建如上所述的磁盘表格全扫描计划之后,查询处理设备100检查是否存在索引(框 S614) ο
[0145]如果不存在索引,则查询处理设备100利用磁盘表格全扫描计划处理查询语句。然而,如果存在索引,那么查询处理设备100还创建针对磁盘索引扫描的扫描计划。此后,查询处理设备100利用磁盘表格全扫描计划和磁盘索引扫描计划中的一个处理查询语句,这通过比较它们之间的成本来选择(框S616)。
[0146]同时,如果处理查询语句所需要的表格是分区表格,则方法通过标签部‘A’进行至如图6B所示的框S620,在框S620,查询处理设备100将删减(pruning)应用至分区表格。
[0147]随后,查询处理设备100对经过删减之后剩下的分区表格的数目计数并且然后检查分区表格的数目是否变为‘I’(框S622)。
[0148]如果检查出分区表格的数目变为‘1’,则方法通过标签‘B’返回至框S602以便重复执行如在框S206至S616中描述的查询语句的处理。
[0149]然而,如果删减之后剩下一个或多个分区表格,则查询处理设备100创建关于剩余的分区表格的分区表格循环计划(框S624)并且检查剩余的表格是否存储在磁盘表格空间108和内存表格空间110的混合存储器中(框S626)。
[0150]如果检查出剩余的多于一个的分区表格仅存储在磁盘表格空间108和内存表格空间110中的一个中,则方法通过标签‘B’返回至框S602以重复执行如在框S206至S616中描述的查询语句的处理。
[0151]然而,如果检查出剩余的多于一个的分区表格存储在磁盘表格空间108和内存表格空间I1的混合存储器中,则查询处理设备100创建混合全表格扫描计划(框S628)。
[0152]在创建混合全扫描计划之后,查询处理设备100检查是否存在索引(框S630)。
[0153]如果不存在索引,则查询处理设备100利用混合全表格扫描计划处理查询语句,然而如果存在索引,则查询处理设备100还创建针对混合本地表格扫描的扫描计划。此后,查询处理设备100利用混合全表格扫描计划和混合本地索引扫描计划中的一个处理查询语句,这通过比较它们之间的成本来选择(框S632)。
[0154]如在图6B的框S620中使用的‘将删减应用至分区表格’中执行的任务是指在IF语句存在于分区表格的参考列的值中的情况下计算在创建扫描计划时将要访问的分区表格的方法。例如,当存在IF语句时,如上述查询中的C.rank = ‘VIP’,查询处理设备100确定被允许仅访问包括与C.rank = ‘VIP’对应的数据的分区表格⑶ST_P1。经过删减之后,可创建与分区表格相关的查询计划,和与非分区表格相关的查询一样。
[0155]此外,本发明的实施方式借助创建分区表格的技术提供随着时间的推移自动地将分区表格(在其中具有数据)依次从内存表格空间转移至磁盘表格空间的功能。
[0156]以下实例7描绘在包括内存和磁盘的混合存储器的关系数据库系统
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1