關於 Oracle 分割槽索引的建立和維護

feelpurple發表於2016-02-21
像分割槽表一樣,索引也可以進行分割槽,包括

1、全域性分割槽索引

是一個獨立的分割槽。

2、本地分割槽索引

自動和分割槽表相關聯。

適用範圍:

通常來說,全域性分割槽索引適用於 OLTP 線上交易系統;而區域性分割槽索引適用於資料倉儲或決策系統。

選擇分割槽索引的型別:

按照下面的順序
1、如果分割槽表的分割槽欄位是索引鍵值的子集,則使用本地索引;如果不是這樣,則進入步驟2。

2、如果索引是唯一的並且不包含分割槽表的分割槽欄位,則使用全域性索引;如果不是這樣,則進入步驟3。

3、如果你想管理方便,則使用本地索引;如果不是這樣,則進入步驟4。

4、如果應用程式是線上交易系統(OLTP)且需要很快的響應時間,則使用全域性索引。如果應用程式是決策系統(DDS)且更關注資料的吞吐量,則使用本地索引。

本地分割槽索引



本地分割槽索引易於維護,每一個本地索引的分割槽都和一個表的分割槽相關聯。這個功能使得 Oracle 自動地維護索引分割槽到表分割槽的同步。如果一個分割槽中的資料失效了,則只會影響一個分割槽。

一種叫做非字首的本地索引在歷史資料庫中非常有用,在這種型別的索引中,分割槽不是在索引列的左邊字首。你不能為本地索引新增分割槽,只有當你給某個表新增分割槽時,你才可以新增本地索引。
 
本地索引可以是唯一的。然而,為了讓一個本地索引是唯一的,表的分割槽鍵必須是索引鍵列的一部分。

全域性分割槽索引



Oracle 包括全域性範圍分割槽索引和全域性雜湊分割槽索引。

全域性範圍分割槽索引

全域性範圍分割槽索引是分割槽程度和分割槽鍵獨立於分割槽表的一種靈活分割槽方法。要新增一個新的最高分割槽,可以使用 ALTER INDEX SPLITPARTITION 語句。如果一個全域性索引分割槽是空的,你可以透過 ALTER INDEX DROP PARTITION 語句來刪除它。如果一個全域性分割槽索引包含資料,刪除此分割槽將會導致下一個最高鍵值的分割槽被標記為不可用。你不能刪除全域性分割槽中的最高分割槽。

全域性雜湊分割槽索引

全域性雜湊分割槽索引透過分散索引的競爭來提高效能。大多數的索引插入只會出現在索引的右側邊緣。

全域性分割槽索引的維護

預設的,下面在堆表分割槽表上的操作會導致全域性索引的狀態為不可用。

ADD (HASH) 
COALESCE (HASH) 
DROP 
EXCHANGE 
MERGE 
MOVE 
SPLIT 
TRUNCATE 

可以在對分割槽表操作的語句上增加 UPDATE INDEXES 來維護全域性分割槽索引。

這樣做的優點是:

在對分割槽表進行操作的時候,索引仍是可用和線上的,這個操作不會影響到應用程式。

在對分割槽表進行操作後,全域性分割槽索引不必進行重建。

全域性非分割槽索引



全域性非分割槽索引就像一個非分割槽索引一樣。

建立分割槽索引的注意事項

你可以在分割槽表上建立點陣圖索引。點陣圖索引只能是本地分割槽索引,不能建立全域性索引。

全域性索引可以是唯一的。如果本地索引想建立成唯一的,則分割槽表的分割槽鍵必須是索引欄位的一部分。

關於組合分割槽索引

子分割槽索引通常是本地分割槽索引。

表空間可以在索引分割槽或索引子分割槽兩個級別上進行指定。

分割槽索引的建立指南

對於線上交易系統,全域性分割槽索引和本地字首分割槽索引能比本地非字首索引提供更好的效能,因為他們能使分割槽剪裁最小化;當要對分割槽表進行維護時,本地索引更易於維護和管理,對於歷史資料,本地非字首索引非常有用。

對於決策支援系統,本地非字首分割槽索引能提供更好的效能,因為許多分割槽索引支援並行掃描。

對於歷史表來說,索引應該儘可能是本地分割槽索引,這將減少定期刪除分割槽的影響。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-1992172/,如需轉載,請註明出處,否則將追究法律責任。

相關文章