Ask Hoegh(3)——對delete操作設定NOLOGGING能否加快速度?

Hoegh發表於2016-01-14

問:我現在有一個大資料量的分割槽表(億級別,每個月一個分割槽),已經對超過3個月的資料進行了歸檔備份,在清理這些資料時,計劃對delete操作設定NOLOGGING來加快速度,這個想法可行嗎?



答:不可行。因為NOLOGGING支援很多SQL語句,但是不包括delete操作。這種情況下,建議直接對分割槽表執行truncate操作。

對於資料庫而言,重做日誌至關重要,它不是開銷,不是浪費。不過,有些情況下執行某些操作確實可以不生成重做日誌。那麼哪些操作是允許NOLOGGING呢?首先需要注意的是普通的DML操作,即:常規insert,update,delete(以及merge)是不支援的。但以下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

關於NOLOGGING設定的具體資訊,可以參考我之前翻譯的官方文件:http://blog.itpub.net/30162081/viewspace-1976252/

另外,關於NOLOGGING操作,需要注意以下幾點:

l  事實上,還是會生成一定數量的redo,主要是保護資料字典,這是不可避免的。

       l  執行NOLOGGING操作後,必須儘快為受影響的資料檔案建立一個新的基線備份,從而避免由於介質失敗而丟失的由NOLOGGING操作建立的資料。


hoegh
2016.01.14
-- The End --


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

相關文章