海量數據庫及分區2

分區表
組合分區
組合分區又稱爲複合分區,是使用三種基本分區策略在一種分區的基礎上再進行二次分區,即子分區。對於某個分區的子分區來說,其實際上是該分區數據的邏輯子集。組合分區支持歷史操作,如增加新的範圍分區,其同時也支持更細粒度的分區修剪。
 
 
1.複合範圍-範圍分區 
  複合範圍-範圍分區允許在兩個維度的邏輯範圍內分區。其語法:
  
  
 表爲ACCOUNT_TRADE_CRR,方法同前。
  
2.複合範圍-散列分區 
  主分區按範圍分區,每個子分區按散列分區。該方式不但改進了範圍分區的可管理性,同時也帶來了散列分區數據的均勻化,提升了併發性能,其語法爲:
 
表爲ACCOUNT_TRADE_CRH,方法同前。  參見附件腳本2
3.複合範圍-列表分區 
 主分區按範圍分區,每個子分區按列表分區,其語法爲:
  
 
表爲ACCOUNT_TRADE_CRL,方法同前, 參見附件例子3,分區數據瀏覽見toad中演示。
 
4.複合列表-範圍分區 
 主分區按列表分區, 每個子分區按範圍 分區,其語法爲:
  
5.複合列表-散列分區 
 主分區按列表分區,每個子分區按散列分區,其語法爲:
  
 
6.複合列表-列表分區 
 主分區按列表分區,每個子分區也按列表分區,其語法爲:
 
本地分區索引
   本地分區索引是使用了LOCAL屬性創建的分區索引,其特徵是索引分區的所有鍵均指向其基表某個 唯一分區中存儲的相應行。Oracle創建本地分區索引的目的就是要確保索引也是分區管理的,而且索引的分區與表的分區是均衡的,也就是本地分區索引具有與其基表相同的分區、子分區,即分區鍵等同於表的分區鍵、分區數等同於表的分區數。
任何基表分區的增加、刪除、合併、分割操作,或者散列分區增加或合併操作,Oracle會通過其自身的機制自動維護本地分區索引相應的分區,此即本地分區索引與基表的均衡性原則。
如果分區列能夠形成索引列的一個子集,則本地分區索引可以是唯一索引。該限制能確保具有相同索引鍵的行始終映射到同一個分區,在該分區中,違反唯一性的行爲能被檢測到。
本地索引的優勢有:
l在基表上執行除SPLIT PARTITION或ADD PARTITION 外的維護命令僅僅只有一個分區會被影響
l當分區表只有一個本地分區索引時,對分區進行維護操作的時間是與分區的大小成正比的
l本地分區索引支持分區的獨立性
l只能本地分區索引支持單一分區數據的裝入和卸出
l本地索引與基表的均衡性會給Oracle執行計劃帶來更好的性能
l表分區和各自的本地索引可以同時恢復
l分區表中的位圖索引必須是本地索引,非分區表上不能建立分區位圖索引
1.本地前綴索引
  本地前綴索引是指以索引列的左前綴來分區的,如果存在子分區則要求其子分區的分區鍵包含在索引鍵中。本地前綴索引可以是唯一索引,也可以是非唯一索引。
 
 
2.本地非前綴索引
  本地非前綴索引是指沒有以索引列的左前綴來分區的,或者是以索引列的左前綴來分區,但子分區的分區鍵不在索引鍵中。本地非前綴索引不可以是唯一索引,除非分區鍵是索引鍵的子集(此時是前綴索引)。
 
 
3.語法
  
 
  
  
 
 
4.示例
  
  
 
 
全局分區索引
   全局分區索引是指某個特定索引分區中的鍵可能指向存儲在基表中的多個分區或子分區中的行,其創建需要使用GLOBAL屬性。無論分區表是那種類型的分區,全局索引只支持按範圍和散列分區兩種分區方式。
 
全局索引往往與基表是不均衡的,如果要追求二者的均衡性,只能使用本地分區索引。全局分區的索引類型只能是b-tree索引,不能是bitmap索引。正是因爲其是b-tree索引,所以無論其指向多少個分區抑或多少行,也只有一個b-tree入口,每個索引分區中會再包含指向具體表分區或子分區中的行的鍵。
全局分區索引必須是前綴的,不支持非前綴的。其中,前綴的意思和本地分區索引的前綴的含義相同,即“前綴索引是指以索引列的左前綴來分區的”。
1.語法
 
2.示例
 
  
 
 
 
管理全局分區索引
l當基表分區移動和刪除(TRUNCATE、DROP、MOVE、SPLIT)時,全局索引的所有分區都受影響,也不支持分區依賴
l當基表分區或子分區恢復到某個時間點時,全局索引中所有相應入口也要恢復到相同的時間點。由於索引的分區或子分區的入口可能離散分佈,其它分區或子分區混合型入口不恢復,除了重建索引之外沒有辦法完成
分區索引的使用建議
lOLTP系統中,全局索引和本地前綴索引因能減少分區探測的次數從而提供更好的性能
lOLTP系統中,當有表分區或子分區維護操作的時候,本地索引提供更好有效性;非前綴分區索引對於歷史數據庫非常有用
lDSS系統中,本地非前綴索引能提高性能,原因是依據範圍的併發查詢(如BETWEEN)能夠併發的掃描到到更多索引分區
l歷史表的索引儘可能採用本地索引,因此歷史表上會有較規律的分區刪除操作,而採用本地索引能降低這類操作的影響
l多列上的唯一索引必須是全局的,因爲本地唯一非前綴索引的鍵要求分區鍵必須是索引鍵的子集,而此時就不是非前綴索引了而是前綴索引了
習題
1.什麼是組合分區,其與單一分區的差別是什麼?什麼時候需要使用組合分區?
2.常用的組合分區包括那六種類型,它們分別是什麼?爲什麼沒有Hash-*類型的組合分區?
3.請對課程中6種組合分區進行逐一演練。
4.本地分區索引的特種是什麼?爲什麼說其與基表的分區具有均衡性,試着用第3提的例子通過SELECT語句舉例說明。
5.假設表A是複合分區,其分區基於colA,子分區基於colB,那麼在colB上建立的本地分區索引是那種類型?
 
轉載請註明私塾在線【 http://sishuok.com/forum/blogPost/list/6409.html#23117
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章