Chinaunix首页 | 论坛 | 博客
  • 博客访问: 510382
  • 博文数量: 101
  • 博客积分: 1635
  • 博客等级: 上尉
  • 技术积分: 1282
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-05 01:51
文章分类

全部博文(101)

文章存档

2019年(2)

2018年(16)

2013年(14)

2012年(69)

我的朋友

分类: Oracle

2012-11-14 13:13:09

全面學習分區表和分區索引
對於10R2而言,基本上可以分成幾類:
 range 分區
 Hash  分區
 List  分區
以及組合分區: range-hash,range-list.
對於表而言,上述分區形式都可以應用(甚至可以對某個分區指定compress屬性),只不過依蘭列不能是
lob,long之類數據類型,每個表的分區或子分區的總數不能超過1024k-1個。
對於索引組織表,只能夠支持普通表方式,不支持組合分區,常規表的限制對於索引組織表同樣有效,
除此之外呢,還有一些其實的限制,比如要求組織表的分區依賴列必須是主鍵才可以等。
對於索引,需要區分創建的全局索引,或本地索引:
全局索引:即可以分區,也可以不分區。即可以建range分區,也可以建hash分區,即可建于分區表,又可創建于非分區表
上,就是說,全局索引是完全的獨立的,因此它也需要我們更多的維護操作。
本地索引:其分區形式與表的分區完全相同,依賴列相同,存儲屬性也相同。對於本地索引,其索引分區的維護自動進行,就
是說你add/drop/split/truncate 表的分區時,本地索引會自動維護其索引分區。
oracle 建議如果單個表超過2G就最好對其進行分區,對於達標創建分區的好處是顯而易見的。
when
一 when 使用range分區
  range 分區呢是應用範圍比較廣的分區方式,它是以列的值的範圍來做為分區的劃分條件,將記錄存放到列值的range
分區中,比如按時間劃分,2008年1季度的數據放到a分區,2季度的數據放到b分區,因此在創建的時候呢,需要你指定基
於的列,以及分區的範圍值,如果某些記錄暫無法預測範圍,可以創建maxvalue 分區,所有不在指定範圍內的記錄都會
被存儲到maxvalue所在分區中,並且支持多列為依賴列。
二 when 使用Hash分區
    通常呢,對於那些無法有效劃分範圍的表,可以使用hash分區,這樣對於提高性能還是有一定的幫助。hash 分區會
將裱中的數據平均分配到你指定的幾個分區中,列所在分區是根據列的hash值自動分配,因此你并不能控制也不知道哪條
記錄會被放到哪個分區中,hash分區也可以支持多個依賴列。
三 when 使用list分區
    list分區與range分區和hash分區都有類似之處,該分區與range分區類似的是也需要你指定列的值,但這又不同與
range分區的範圍式列值--其分區值必須明確指定,也不同與hash分區--通過明確指定分區值,你能控制記錄存儲在哪個
分區。
它的分區列只能有一個,而不能像range或者hash分區那樣同時指定多個做為分區依賴列,不過呢,它的單個分區對應值
可以是多個。你在分區時必須明確分區列可能存在的值,一旦插入的列值不在分區範圍內,則插入/更新就會失敗,因此
通常建議使用list分區時,要創建一個default分區存儲那些不在指定範圍內的記錄,類似range分區中的maxvalue分區。
四 when使用組合分區
 如果某些表按照某列分區之後,仍然較大,或者是一些其它的需求,還可以通過分區內再建子分區的方式將分區在分區
,即組合分區的方式。
阅读(960) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~