標籤:
㈠ 分區表技術概述
⑴ 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分區表和分區索引概述