在歸檔模式和非歸檔模式下,設定表爲logging和nologging,測量普通的insert 和insert /*+append*/生成redo大小。第一次測試我對下列結果報懷疑態度,於是又重新測試一遍,結果差不多,想想是測試的數量太少。如果是在正式環境上做數據遷移,最好就選擇最後一種模式。
模式 | 普通insert下redo生成量(Byte) | insert/*+append*/下redo生成量(Byte) |
非歸檔模式(表logging) | 5706324 | 88340 |
非歸檔模式(表nologging) | 5685864 | 63348 |
歸檔模式(表logging) | 5686196 | 63424 |
歸檔模式(表nologging) | 5685364 | 63348 |
Oracle 的 nologging 的使用,同時滿足一下三個條件纔不會真正產生日誌
1.表空間:alter tablespace table_name nologging;
2.表:alter table table_name nologging;
3.插入:insert /+append/ into table_name select * from table_name1;
————————————————
使用情形:
1)(主要運用)大數據量插入,提高插入效率;
2)較少可重用空間的表中(exp:只插入很少刪除數據的表);
副作用:
經常使用APPEND會使該表的空間需求一直維持在高水位;