關於rebuild index online 及drop index後重建問題

tolywang發表於2007-12-12
rebuild  index ..  

            當我們對索引進行rebuild時,如果不加online選項,oracle則直接讀取原索引的資料;當我們新增online選項時, oracle是直接掃描表中的資料,維護索引段資料的一致性就是從索引開始建立到索引建立完成這段時間的資料改變的同步 。   從索引開始rebuild online 的那一刻起,oracle會先建立一個SYS_JOURNAL_xxx的系統臨時日誌表,結構類似於物化檢視日誌表mlog$_表,  透過內部觸發器,  記錄了開始rebuild索引時表上所發生的改變的記錄,當索引已經建立好之後, 新資料將直接寫入索引,只需要把SYS_JOURNAL_xxx日誌表中的改變維護到索引中即可 。   
         在rebulid index online 的時候走的是full table scan,這時候需要排序;在rebulid index 走的index ffs,而ffs搜尋的順序是根據 leaf block 的物理儲存順序相關 ,也需要排序 。在rebuild index時候還是需要用到 temp空間來排序的 。


-----------------------------------------------------


drop index   , then create index  again .


drop index 之後, index 重新建立相對 rebuild index 效果是否會更好 ? 在 index 碎片方面或其他效能方面 ?




如果一個table 有資料 2000 萬筆, 在刪除 1/3 的記錄之後,需要重新建立index , 那麼採用哪種方式更好 ?

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

相關文章