<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    This Is A FineDay

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      93 隨筆 :: 0 文章 :: 69 評論 :: 0 Trackbacks
    關于分區表和分區索引(About Partitioned Tables and Indexes)對于10gR2而言,基本上可以分成幾類:
    •    Range(范圍)分區
    •    Hash(哈希)分區
    •    List(列表)分區
    •    以及組合分區:Rang e- 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外三種分區 ?

    創建range-hash組合分區

      語法如下:圖

      

      需要我們指定的有:

       column_list:分區依賴列(支持多個,中間以逗號分隔);

       ?subpartition:子分區方式,有兩處:

       Subpartition_by_list:語法與list分區完全相同,只不過把關鍵字partition換成subpartition

       ?Subpartition_by_hash:語法與hash分區完全相同,只不過把關鍵字partition換成subpartition

       ?partition:分區名稱;

       ?range_partition_values_clause:與range分區范圍值的語法;

       tablespace_clause:分區的存儲屬性,例如所在表空間等屬性(可為空),默認繼承基表所在表空間的屬性。

      組合分區相對于普通分區,語法上稍稍復雜了一些,但也正因如此,其子分區的創建可以非常靈活,下面分別舉幾個例子(注:僅示例,并非窮舉所有形式)

      ① 為所有分區各創建4個hash子分區


       ?create?table?t_partition_rh?(id?number,name?varchar2(50))
       partition?by?range(id)?subpartition?by?hash(name)
       ?subpartitions?4?store?in?(tbspart01,?tbspart02,?tbspart03,tbspart04)(
       partition?t_r_p1?values?less?than?(10)?tablespace?tbspart01,
       ?partition?t_r_p2?values?less?than?(20)?tablespace?tbspart02,
       ?partition?t_r_p3?values?less?than?(30)?tablespace?tbspart03,
       ?partition?t_r_pd?values?less?than?(maxvalue)?tablespace?tbspart04);
      表已創建。

    posted on 2008-07-09 17:14 Peter Pan 閱讀(906) 評論(0)  編輯  收藏 所屬分類: DB
    主站蜘蛛池模板: 韩日电影在线播放免费版| 日本系列1页亚洲系列| a级午夜毛片免费一区二区| 亚洲人成人无码网www国产| 又硬又粗又长又爽免费看 | 成人毛片免费观看| 亚洲日韩精品无码AV海量| 免费观看黄网站在线播放| 亚洲欧美日韩综合久久久久| 在线观看免费为成年视频| 亚洲AV无码国产剧情| 亚洲成?v人片天堂网无码| 精品97国产免费人成视频| 亚洲精品午夜无码电影网| 曰批全过程免费视频在线观看无码| 亚洲国产精品高清久久久| 久久久久久久99精品免费| 亚洲成人福利在线观看| 成人无遮挡裸免费视频在线观看| 亚洲美国产亚洲AV| 最新亚洲成av人免费看| 久久这里只精品国产免费10| 亚洲特级aaaaaa毛片| 成年女人毛片免费观看97| 男女猛烈激情xx00免费视频| 亚洲一区AV无码少妇电影☆| 亚洲免费黄色网址| 国产亚洲女在线线精品| 亚洲精品无码专区在线在线播放| 精品国产无限资源免费观看| 亚洲jizzjizz少妇| 亚洲成a人片在线观看无码专区| 久久www免费人成看片| 青青草国产免费国产是公开| 久久精品亚洲视频| 女人张开腿等男人桶免费视频| 亚洲黄片手机免费观看| 亚洲六月丁香六月婷婷蜜芽| 亚洲精品乱码久久久久久蜜桃| 久久久久久国产精品免费无码| 国产青草亚洲香蕉精品久久|