nologgin和append

wadekobe9發表於2012-04-06

-nologging:

開啟了nologging,在歸檔和非歸檔模式下都有隻有append才能減少redo的生成.

 

-hints  append  :

使用append  hint可以減少redo資訊的產生,可以較快的插入資料,資料遷移。

 

但是使用了append後,會阻塞其他sessionTABLEDML操作。它在上面加了個

LMODE6級的鎖,用這個的時候一定要小心。在append操作完畢之後要儘快提交或者rollback

 

不管表是否在nologging下,只要是direct  insert,就不會對資料內容生成undo,也就是不會為insert而記錄rowid

 

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

 

Oracle插入資料有兩種模式:常規路徑和直接路徑。

常規路徑插入Oracle會使用表中的空閒空間,並同時維護完整性約束。

直接路徑插入Oracle直接在高水位線以外分配空間,直接對資料檔案進行寫操作,繞過了資料緩衝區,而且不維護完整性約束。

 

直接路徑插入不寫回滾只寫少量的重做日誌,因此具有最高的插入效率。

 

直接路徑插入,是在高水點之上分配臨時段,將資料插入時進此臨時段中。在提交後將高水點提升至臨時段之上。

 

在並行DML模式中,直接路徑插入是模式模式,要設定並行DML

 

資料庫必須是企業版;

並行在sessionenable並行DML

目標表必須設定了並行屬性,或者在執行插入時指定並行提示。

 

直接路徑插入的其他考慮因素:

索引維護:Oracle在直接插入結束的時候維護索引,為了避免維護索引的效能影響,可以先刪除索引,等插入完

成會在重新建立。--(注意,這裡維護索引的時候應該是產生了undo)上面這種設想已經得到驗證,看到這樣一句話

直接路徑插入時,不產生表塊的回滾資訊,依賴高水點實現回滾。但時,如果表有索引,將會產生索引的回滾資訊,

而且索引的塊會被讀時Buffer  cache。也就是說,資料不能直接插入進索引。

 

 

空間佔用:由於並行插入不使用表中現有空間,而在高水位線以外直接分配空間,所以直接路徑插入會比常規路

徑插入佔用更多的空間,在並行插入的情況下更加明顯。

 

鎖機制:在直接路徑插入過程中,Oracle在表上放置獨佔鎖。因此,使用者在直接路徑插入操作的同時對錶的插入、

更新、刪除以及索引的建立和重建操作都是被禁止的。使用者可以執行查詢操作,查詢會返回插入以前的資料。

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

相關文章