oracle分區表和分區索引概述

來源:互聯網
上載者:User

標籤:

   ㈠ 分區表技術概述
      
      ⑴ Range 分區
      
      ① 例子
         
         create table t
         (...列定義...)
         partition by range (week_num)
         (partition p1 values less than (4)tablespace data0,
           partition p2 values less than (5)tablespace data1,
           ....
          );
          
      ② 適用情境
         
         Range 分區一般比較適合按時間周期進行資料的儲存
         
      ③ 優點
         
         使用者知道具體資料落在哪個分區
         因此、通過分區可以有效實施各種大批量的資料管理操作
         比如、刪除指定時間段的曆史資料管理、對指定分區進行備份恢複或匯入匯出
         
      ④ 缺點
         
         ● 分區的資料可能不均勻
         ● Range分區與記錄值相關、實施難度和可維護性相對較差
         
   
      
      ⑵ List分區
         
      ① 例子 
         
         create table t
         (...列定義...)
         partition by list(city)
         (partition p1 values (‘北京‘) tablespace data0,
          partition p2 values (‘上海‘) tablespace data1,
          ....
         );
         
      Range 和 List 的區別在於、前者是連續、而後者是離散
      因此、在優缺點及適用情境方面、大抵相去無幾
      這裡不贅述了
      
      
      ⑶ HASH 分區
      
      ① 例子
         
         create table t
         (...列的定義..)
         partition by hash (customer_no)
         partition 8 store in 
         (data0,data1);
         
         友情提醒哦:Oracle建議HASH分區數一般是2的冪
         
      ② 適用情境
         
         HASH分區適合於待用資料
         何謂待用資料?
         指此類資料一般永遠儲存在資料庫中、不需要進行曆史資料移轉
         例如:使用者資料表、賬戶資訊等
         而這類資訊的訪問大部分通過使用者ID或者帳號進行
         如果按這些欄位進行HASH分區、並建立本地首碼分區索引、訪問效率相當高哦
         
      ③ 優點
         
         ● 資料均勻分布
         ● 實施非常簡單
         
      ④ 缺點
         

         使用者不知道某條記錄具體會落在哪個分區
         因此、HASH分區不適合大批量資料管理操作
         例如、曆史資料清理、大批量資料匯入匯出等
         
      
      ⑷ 組合分區
      
      Oracle組合分區某種程度上講是一種把優點集中的表現
      例如、大多數情況下、第一維按時間欄位進行分區、
      這樣在分區級適合於進行大批量資料管理操作
      第二維的HASH或List可進一步提高訪問效能或者降低實施難度
      
      11g之前只有:Range-HASH 或 Range-List
      
   
   
   ㈡ 分區索引技術概述
      
      生產環境中、有時我們會遇到:
      已經做了分區表了、怎麼效能沒有提高啊?甚至更慢啊?
      其原因之一或者是沒有合理甚至根本沒有設計分區索引
      

      先總體認識一下表和索引在分區上的關係:

 

      

 

 

      ⑴ 本地首碼分區索引
         
      假設分區表為一個交易流水表t、且按交易日期date進行Range分區
      如果欲建立date欄位上的索引、我們可以:
      create index idx_t on t (date) local;
      idx_t 就叫做本地首碼索引
      所謂本地、指索引的分區方法與對應表的分區方法一樣
      所謂首碼、指分區欄位是索引欄位的首碼
      
      優勢
      ● 提高查詢效能
      ● 當某個分區進行drop 或 merge後、Oracle自動對所對應的索引分割區進行相同的操作、
         整個本地首碼分區索引依然有效、無須rebuild
         這樣大大保證了表的可用性
    
         
         
      ⑵ 本地非首碼分區索引
      
      假設我們需要在t表的area欄位建立分區索引、我們可以:
      create index idx_t_area on t (area) local;
      idx_t_area就叫做本地非首碼分區索引
      
      非首碼要按照索引掃描所有的分區、效能可能更低
      不過、它能夠保證按索引訪問的可用性
      
      適用情境:
      如果曆史資料整理非常頻繁、而且不能承受全域分區索引重建的長時間帶來的索引不可用
      同時、日常交易效能尚能接受、則建議設計為本地非首碼分區索引
   
   
      
      ⑶ 全域分區索引
      
      假設我們需要在t表的area欄位建立分區索引、我們可以:
      create index idx_t_g_area on t(area)
      global partition by range (area)
      (partition p1 less than ...);
      所謂全域、是指該索引的分區與表的分區無關
      10g以後、Oracle提供2種全域分區索引:
      ● Global Range Partition Index 
      ● Global HASH Partition Index 
      
      缺點:
      主要體現在資料的高可用性方面
      當DROP分區後、全域分區索引則全部INVALID、除非REBULID
      但資料量越大、重建索引的時間越長

 

本文轉自:http://blog.csdn.net/dba_waterbin/article/details/8836104

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.