轉:深入學習Oracle分區表及分區索引

來源:互聯網
上載者:User

標籤:style   http   color   os   io   使用   ar   strong   資料   

轉自:http://database.ctocio.com.cn/tips/286/8104286.shtml

  關於分區表和分區索引(About Partitioned Tables and Indexes)對於10gR2而言,基本上可以分成幾類:

  •    Range(範圍)分區
  •    Hash(雜湊)分區
  •    List(列表)分區
  •    以及組合分區:Range-Hash,Range-List。

  對於表而言(常規意義上的堆組織表),上述分區形式都可以應用(甚至可以對某個分區指定compress屬性),只不過分區依賴列不能是lob,long之類資料類型,每個表的分區或子分區數的總數不能超過1023個。

  對於索引組織表,只能夠支援普通分區方式,不支援組合分區,常規表的限制對於索引組織表同樣有效,除此之外呢,還有一些其實的限制,比如要求索引組織表的分區依賴列必須是主鍵才可以等。

  註:本篇所有樣本僅針對常規表,即堆組織表!

  對於索引,需要區分建立的是全域索引,或本地索引:

  l 全域索引(global index):即可以分區,也可以不分區。即可以建range分區,也可以建hash分區,即可建於分區表,又可建立於非分區表上,就是說,全域索引是完全獨立的,因此它也需要我們更多的維護操作。

  l 本地索引(local index):其分區形式與表的分區完全相同,依賴列相同,儲存屬性也相同。對於本地索引,其索引分割區的維護自動進行,就是說你add/drop/split/truncate表的分區時,本地索引會自動維護其索引分割區。

  Oracle建議如果單個表超過2G就最好對其進行分區,對於大表建立分區的好處是顯而易見的,這裡不多論述why,而將重點放在when以及how。

  WHEN

  一、When使用Range分區

  Range分區呢是應用範圍比較廣的表分區方式,它是以列的值的範圍來做為分區的劃分條件,將記錄存放到列值所在的range分區中,比如按照時間劃 分,2008年1季度的資料放到a分區,08年2季度的資料放到b分區,因此在建立的時候呢,需要你指定基於的列,以及分區的範圍值,如果某些記錄暫無法 預測範圍,可以建立maxvalue分區,所有不在指定範圍內的記錄都會被儲存到maxvalue所在分區中,並且支援指定多列做為依賴列,後面在講 how的時候會詳細談到。

  二、When使用Hash分區

  通常呢,對於那些無法有效劃分範圍的表,可以使用hash分區,這樣對於提高效能還是會有一定的協助。hash分區會將表中的資料平均分配到你指定的 幾個分區中,列所在分區是依據分區列的hash值自動分配,因此你並不能控制也不知道哪條記錄會被放到哪個分區中,hash分區也可以支援多個依賴列。

  三、When使用List分區

  List分區與range分區和hash分區都有類似之處,該分區與range分區類似的是也需要你指定列的值,但這又不同與range分區的範圍式 列值---其分區值必須明確指定,也不同與hash分區---通過明確指定分區值,你能控制記錄儲存在哪個分區。它的分區列只能有一個,而不能像 range或者hash分區那樣同時指定多個列做為分區依賴列,不過呢,它的單個分區對應值可以是多個。

  你在分區時必須確定分區列可能存在的值,一旦插入的列值不在分區範圍內,則插入/更新就會失敗,因此通常建議使用list分區時,要建立一個default分區儲存那些不在指定範圍內的記錄,類似range分區中的maxvalue分區。

  四、When使用組合分區

  如果某表按照某列分區之後,仍然較大,或者是一些其它的需求,還可以通過分區內再建子分區的方式將分區再分區,即組合分區的方式。

  組合分區呢在10g中有兩種:range-hash,range-list。注意順序喲,根分區只能是range分區,子分區可以是hash分區或list分區。

  提示:11g在組合資料分割函數這塊有所增強,又推出了range-range,list-range,list-list,list-hash,這就相 當於除hash外三種分區方式的笛卡爾形式都有了。為什麼會沒有hash做為根分區的組合分區形式呢,再仔細回味一下第二點,你一定能夠想明白~~

轉:深入學習Oracle分區表及分區索引

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.