redo重做日誌是Oracle資料庫恢復(recovery)的基礎;但在很多情況下可以通過禁用重做日誌的產生來加速SQL語句的完成,也就是我們所說的可nologging化的操作,這些操作大多是或串列的或並行的資料載入。
那麼哪些操作是允許被nologging化的呢?首先需要注意的是普通的DML操作,即:常規insert,update,和delete(以及merge)總是不能被nologging執行的。但以下SQL語句則可以以nologging選項執行:
• direct load (SQL*Loader)
• direct load INSERT (using APPEND hint)
• CREATE TABLE … AS SELECT
• CREATE INDEX
• ALTER TABLE … MOVE PARTITION
• ALTER TABLE … SPLIT PARTITION
• ALTER INDEX … SPLIT PARTITION
• ALTER INDEX … REBUILD
• ALTER INDEX … REBUILD PARTITION
• INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line
以上列出的語句,其產生undo和redo重做日誌幾乎可以完全禁絕。因為都是資料載入語句(或者裝載索引)其所產生的新的區間(new extent)在執行過程中被標記為無效的(invalid),同時僅有少量的由資料字典變更引起的重做日誌會產生。
沒有留言:
張貼留言