Oracle Nologging and Append 經典總結

來源:互聯網
上載者:User

對於logging的理解總是以為表的日誌設定為NO它就不會去產生日誌了,其實不是的下面是對於logging的一些解釋和實驗。 

Logging介紹 

可以採用nologging模式執行以下操作:

1.索引的建立和ALTER(重建)。
2.表的批量INSERT(通過/*+append */提示使用“直接路徑插入“。或採用SQL*Loader直接路徑載入)。表資料產生少量redo,但是所有索引修改會產生大量redo(儘管表不組建記錄檔,但這個表上的索引卻會產生redo!)。
3.Lob操作(對大對象的更新不必組建記錄檔)。
4.通過create table as select建立表。
5.各種alter table操作,如move和split。

在一個archivelog模式的資料庫上,如果nologging使用得當,可以加快許多操作的速度,因為它能顯著減少產生的重做日誌量。假設你有一個表,需要從一個資料表空間移到另一個資料表空間,原先需要N小時才能完成的操作可能只需要N/2小時。要想適當地使用這個特性,需要DBA的參與,或者必須與負責Database Backup和恢複(或任何備用資料庫)的人溝通。如果這個人不知道使用了這個特性,一旦出現介質失敗,就可能遺失資料,或者備用資料庫的完整性可能遭到破壞,對此一定要三思。 

對象Logging狀態查詢

通過此查詢SQL語句查詢表的logging狀態

SELECT T.TABLE_NAME, T.LOGGING
  FROM USER_TABLES T
 WHERE T.TABLE_NAME LIKE '%TEST_FUTUFARES%'; 

Create和Insert的Logging測試
Create table …. as select ….及 insert into …..select ….測試 

改變logging狀態值的方法:

ALTER TABLE table_name NOLOGGING/logging; 

下面的例子是來源資料在1萬條左右,Create table …as select …測試發現相差2秒鐘左右,特別是在大資料量帶有nologging的Create速度上確實會快很多。 


 

下面是INSERT語句的測試資料量在2百萬左右,TEST_FUTUFARES2的logging不管是在YES還是NO的狀態下其實插入都是一樣的速度


 


 

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.