PACE DISK_TBS,
[0101]PARTIT1N 0RDERS_P3VALUES LESS THAN
[0102](MAXVALUE)TABLESPACE DISK_TBS
[0103]);
[0104]參照以上實例4和在圖3中示出的表格的結(jié)構(gòu),圖3示出了通過參考0RDER_DT列的值以如下方式劃分?jǐn)?shù)據(jù)來將數(shù)據(jù)存儲在總共三個分區(qū)表格中的表格ORDERS:在2013年I月I日之前的數(shù)據(jù)存儲在分區(qū)表格的0RDERS_P1分區(qū)300中;從2013年I月I日到2013年2月I日的數(shù)據(jù)存儲在0RDERS_P2分區(qū)302中;并且從2013年2月4日到2013年2月11日的數(shù)據(jù)存儲在0RDERS_P3分區(qū)304中。
[0105]另一方面,通常,創(chuàng)建的分區(qū)表格可被指定被存儲在不同的表格空間中。因此,如上所述的同時支持磁盤表格空間和內(nèi)存表格空間的數(shù)據(jù)庫可以通過指定不同的表格空間將非分區(qū)表格的數(shù)據(jù)存儲在具有不同的物理屬性的單獨(dú)的存儲中。
[0106]以下實例5呈現(xiàn)了創(chuàng)建使用混合存儲器的表格⑶STOMER的分區(qū)表格的實例。
[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的存儲結(jié)構(gòu)。如圖4A至圖4D所示,參考表格⑶STOMER的等級列(rank column)的值,內(nèi)存表格以如下方式配置:通過指定內(nèi)存表格空間110上的表格空間將‘VIP’客戶數(shù)據(jù)存儲在分區(qū)表格的⑶ST_P1400中;并且磁盤表格以如下方式配置:通過指定單獨(dú)的磁盤表格空間108上的表格空間,將除VIP客戶的等級以外的等級內(nèi)的數(shù)據(jù)存儲在CUST_P2402中、CUST_P3404、CUST_P4406等中。
[0121]以下實例6呈現(xiàn)了產(chǎn)生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示出了執(zhí)行以上實例6的查詢的計劃。
[0129]在圖5中,假設(shè)計劃利用在磁盤上的表格⑶STOMER中產(chǎn)生的全局索引。
[0130]內(nèi)存上的表格CUSTOMER的掃描計劃創(chuàng)建訪問存儲在內(nèi)存表格空間110中的索引和表格的計劃(框S500)并且對內(nèi)存中的表格執(zhí)行混合Rowid掃描(框S502)。此外,磁盤上的表格CUSTOMER的掃描計劃創(chuàng)建訪問存儲在磁盤表格空間108中的索引和表格的計劃(框S504)并且對磁盤中的表格執(zhí)行Rowid掃描(框S506)。此后,利用11月的定單日期的注釋通過過濾處理對包含客戶id的表格進(jìn)行搜索(框S508)。下面,兩個表格被連接(框S510),并且對連接的表格進(jìn)行聚合(框S512)。也就是說,當(dāng)從請求的用戶獲取唯一ID的值之后獲得作為索引的Rowid時,可以通過Rowid確定用戶的數(shù)據(jù)是存儲在磁盤表格中還是內(nèi)存表格中。在客戶具有‘VIP’等級并且因此其被允許訪問存儲表格的情況下,與具有除‘VIP’以外的等級的其他用戶不同,可實現(xiàn)在不讀取磁盤存儲塊的情況下直接訪問內(nèi)存表格,這樣獲得了更高的響應(yīng)。
[0131]在這點(diǎn)上,因為表格的訪問方式可在查詢處理設(shè)備中的查詢執(zhí)行單元106的執(zhí)行時間根據(jù)Rowid而改變,所以查詢處理設(shè)備需要通過由查詢處理單元106的執(zhí)行點(diǎn)的判定創(chuàng)建選擇訪問方式的計劃。做這種選擇的計劃被表示為圖5中的‘混合Rowid掃描’節(jié)點(diǎn)。選擇和執(zhí)行訪問方式的節(jié)點(diǎn)的種類如下。
[0132]混合全表格掃描
[0133]混合Rowid掃描
[0134]混合本地索引掃描
[0135]圖6A和圖6B是示出根據(jù)本發(fā)明的示例性實施方式的在包括混合存儲器的關(guān)系數(shù)據(jù)庫系統(tǒng)中的查詢處理設(shè)備中創(chuàng)建處理查詢語句的表格掃描計劃的方法的流程圖。在下文中,將參考圖1至圖6A和圖6B詳細(xì)地描述本發(fā)明的示例性實施方式。
[0136]首先,如圖6A所示,查詢語句被輸入到包括內(nèi)存和磁盤的混合存儲器的關(guān)系數(shù)據(jù)庫系統(tǒng)中。查詢語句可以是請求存儲在磁盤表格空間108中的表格;請求存儲在內(nèi)存表格空間110中的表格;以及請求被分區(qū)并單獨(dú)存儲在磁盤表格空間108和內(nèi)存表格空間110兩者中的表格,其中表格可以是分區(qū)表格或非分區(qū)表格的任意一種。
[0137]因此,包括內(nèi)存和磁盤的混合存儲器的關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理設(shè)備100通過擴(kuò)展表格分區(qū)方法(其使得能夠使用內(nèi)存表格空間I1和磁盤表格空間108的混合存儲器)建立針對查詢語句的最優(yōu)表格掃描計劃。
[0138]更具體地,當(dāng)從用戶輸入查詢語句時,查詢處理單元100檢查處理查詢語句所需要的表格是非分區(qū)表格還是分區(qū)表格(框S600)。
[0139]如果處理查詢語句所需要的表格是非分區(qū)表格,則查詢處理設(shè)備100識別存儲在表格空間元數(shù)據(jù)單元102中的表格空間元信息并且檢查具有存儲在其中的表格的存儲是磁盤表格空間108還是內(nèi)存表格空間110(框S602)。
[0140]然后,如果具有存儲在其中的表格的存儲通過在框S604處的檢查結(jié)果被確定為內(nèi)存表格空間110,則方法進(jìn)行至框S606,在框S606,查詢處理設(shè)備100創(chuàng)建針對內(nèi)存表格全掃描的掃描計劃。
[0141]創(chuàng)建如上所述的內(nèi)存表格全掃描計劃之后,查詢處理設(shè)備100檢查是否存在索引(框 S608) ο
[0142]如果不存在索引,則查詢處理設(shè)備100利用內(nèi)存表格全掃描計劃處理查詢語句。然而,如果存在索引,則查詢處理設(shè)備100還創(chuàng)建針對內(nèi)存索引掃描的掃描計劃。此后,查詢處理設(shè)備100利用內(nèi)存表格全掃描計劃和內(nèi)存索引掃描計劃中的一個處理查詢語句,這通過比較它們之間的成本來選擇(框S610)。
[0143]然而,如果具有存儲在其中的表格的存儲通過框S604處的檢查結(jié)果被確定為磁盤表格空間108,則方法前進(jìn)至框S612,在框S612,查詢處理設(shè)備100創(chuàng)建針對磁盤表格全掃描的掃描計劃。
[0144]創(chuàng)建如上所述的磁盤表格全掃描計劃之后,查詢處理設(shè)備100檢查是否存在索引(框 S614) ο
[0145]如果不存在索引,則查詢處理設(shè)備100利用磁盤表格全掃描計劃處理查詢語句。然而,如果存在索引,那么查詢處理設(shè)備100還創(chuàng)建針對磁盤索引掃描的掃描計劃。此后,查詢處理設(shè)備100利用磁盤表格全掃描計劃和磁盤索引掃描計劃中的一個處理查詢語句,這通過比較它們之間的成本來選擇(框S616)。
[0146]同時,如果處理查詢語句所需要的表格是分區(qū)表格,則方法通過標(biāo)簽部‘A’進(jìn)行至如圖6B所示的框S620,在框S620,查詢處理設(shè)備100將刪減(pruning)應(yīng)用至分區(qū)表格。
[0147]隨后,查詢處理設(shè)備100對經(jīng)過刪減之后剩下的分區(qū)表格的數(shù)目計數(shù)并且然后檢查分區(qū)表格的數(shù)目是否變?yōu)椤甀’(框S622)。
[0148]如果檢查出分區(qū)表格的數(shù)目變?yōu)椤?’,則方法通過標(biāo)簽‘B’返回至框S602以便重復(fù)執(zhí)行如在框S206至S616中描述的查詢語句的處理。
[0149]然而,如果刪減之后剩下一個或多個分區(qū)表格,則查詢處理設(shè)備100創(chuàng)建關(guān)于剩余的分區(qū)表格的分區(qū)表格循環(huán)計劃(框S624)并且檢查剩余的表格是否存儲在磁盤表格空間108和內(nèi)存表格空間110的混合存儲器中(框S626)。
[0150]如果檢查出剩余的多于一個的分區(qū)表格僅存儲在磁盤表格空間108和內(nèi)存表格空間110中的一個中,則方法通過標(biāo)簽‘B’返回至框S602以重復(fù)執(zhí)行如在框S206至S616中描述的查詢語句的處理。
[0151]然而,如果檢查出剩余的多于一個的分區(qū)表格存儲在磁盤表格空間108和內(nèi)存表格空間I1的混合存儲器中,則查詢處理設(shè)備100創(chuàng)建混合全表格掃描計劃(框S628)。
[0152]在創(chuàng)建混合全掃描計劃之后,查詢處理設(shè)備100檢查是否存在索引(框S630)。
[0153]如果不存在索引,則查詢處理設(shè)備100利用混合全表格掃描計劃處理查詢語句,然而如果存在索引,則查詢處理設(shè)備100還創(chuàng)建針對混合本地表格掃描的掃描計劃。此后,查詢處理設(shè)備100利用混合全表格掃描計劃和混合本地索引掃描計劃中的一個處理查詢語句,這通過比較它們之間的成本來選擇(框S632)。
[0154]如在圖6B的框S620中使用的‘將刪減應(yīng)用至分區(qū)表格’中執(zhí)行的任務(wù)是指在IF語句存在于分區(qū)表格的參考列的值中的情況下計算在創(chuàng)建掃描計劃時將要訪問的分區(qū)表格的方法。例如,當(dāng)存在IF語句時,如上述查詢中的C.rank = ‘VIP’,查詢處理設(shè)備100確定被允許僅訪問包括與C.rank = ‘VIP’對應(yīng)的數(shù)據(jù)的分區(qū)表格⑶ST_P1。經(jīng)過刪減之后,可創(chuàng)建與分區(qū)表格相關(guān)的查詢計劃,和與非分區(qū)表格相關(guān)的查詢一樣。
[0155]此外,本發(fā)明的實施方式借助創(chuàng)建分區(qū)表格的技術(shù)提供隨著時間的推移自動地將分區(qū)表格(在其中具有數(shù)據(jù))依次從內(nèi)存表格空間轉(zhuǎn)移至磁盤表格空間的功能。
[0156]以下實例7描繪在包括內(nèi)存和磁盤的混合存儲器的關(guān)系數(shù)據(jù)庫系統(tǒng)