PARTIOTION表對于處理巨量資料來講幾乎是個killer function!
我對于系統中的大表和超大型表,主要的處理方式是根據公司前台應用的操作特性,對于一定周期後,隻進行查詢的資料,進行分區壓縮,隻是保留近期内可能還涉及DML操作的表在“最近”(我的分區名稱:recent)中,用普通的存儲方式進行儲存。
而對于PARTITION的表來講,之後的管理工作還是比較多的。
其中涉及到的工作中比較多的就是SPLIT(分裂)和DROP PARTITION(11g中應該就不會這樣痛苦了)。
通過我對SPLIT過程的分析,發現SPLIT内部操作的基本過程:
1.發出指令後,ORACLE在我制定的新分區所在表空間中建立一個TEMPERORARY類型的表,其實這個表就是未來的新分區。将符合條件的資料導入。
2.在完成第一步後,ORACLE在原被分區的分區所在表空間上,又建立了一個TEMPRORARY類型的臨時表,這時ORACLE開始将不屬于新分區的資料在導入到這張臨時表中。如果使用了UPDATE INDEXES的話,ORACLE最後還要維護索引。
3.完成後,改變表名(更新資料字典)
知道了這樣的過程,我們在做SPLIT操作時,需要注意:
在被分區的分區所在的表空間上,需要有足夠的剩餘表空間。當然,如果使用UPDATE INDEXES的話,索引所在的表空間也需要必要的剩餘表空間。
如果說有LOCAL INDEX,在系統資源允許的情況下,帶上 update indexes子句是不錯的選擇。
另外,這個分裂過程也解除了我的一個憂慮,被分裂的分類資料是否要重組?現在看是沒有必要的,因為ORACLE已經為你重組了這個分區中的資料了。
-------
ORACLE版本:10.2.0.1
OS :HP-UX B.11.23 U ia64
本文轉自Be the miracle!部落格51CTO部落格,原文連結http://blog.51cto.com/miracle/51516如需轉載請自行聯系原作者
Larry.Yue