在归档模式和非归档模式下,设定表为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会使该表的空间需求一直维持在高水位;