alter index ind1 rebuild 和alter index ind1 rebuild online

gaopengtttt發表於2011-03-11

1alter index ind1 rebuild
           
這種方法是對已有的索引進行快速全掃描(如果當索引比表本身還大時也會full table scan的。)然後排序(為什麼要排序?這時候Oracle是按照儲存的順序而不是index tree建立的順序讀取,而且索引在儲存時是塊間有序快內無序的。)再寫回索引段,由其原理我們可以得知,這種方法在操作時是不允許對索引進行更改的也就意味著對應的表不能進行dml(查詢不受影響,因原index依然可用)操作。從阻塞表上的操作來講它和drop and create 是一樣的,但其速度要快許多因為它掃描的是索引而不是表。當新索引建立後刪除舊索引。
   2
alter index ind1 rebuild online;
         
這種方法是對錶資料進行全表掃描然後建立新的索引,在這個過程中old index 依然可用,因此它不會阻塞表上的dml操作,但其速度很慢。在建立新索引的過程中如果表上發生了dml操作,這些操作對索引的影響會記錄到系統自動建立的JOURNAL TABLE AND INDEX內,等新索引建立完成後JOURNAL TABLE AND INDEX的內容會merge到新索引中,因此rebuild online 也應該在系統不太繁忙的時候進行,不然JOURNAL 表會很大,merge會很費時而merge會鎖表對併發有影響。

try{var s = window.name;parent.MM[s].initIframe();}catch(e){}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-689048/,如需轉載,請註明出處,否則將追究法律責任。

相關文章