|
理论上讲,只要启用直接路径插入方式(所谓直接路径插入,就是绕过Buffer cache,直接将数据插入进表所在数据文件中),就几乎不产生undo,而redo不是不产生,只是产生的要比原先少得多. 而启用直接路径插入方式最常用的2种方法是(当然SQL*Loader直接路径加载方式也是一种): 1.insert into带/*+ APPEND */提示 2.开启并行,并行模式下insert into默认使用直接路径插入 另外表的NOLOGGING属性在归档模式下有2种明显影响: 1.归档且并行模式下,创建表时带nologging选项的与不带该选项的相比,虽然redo,undo方面相当,但前者的速度明显要比后者快好几倍(这可以通过第7组与第8组的测试数据看出,这里是快7~8倍) 2.归档且串行模式下,且正确使用APPEND提示语法时,创建表时带nologging选项的与不带该选项的相比,虽然都不产生undo,但前者明显比后者产生的redo量要小数百倍,速度上也要快好几倍(这可以通过第5组的第三项测试与第6组的第三项测试对比看出,redo量小1300倍,速度快5倍) 除此之外NOLOGGING选项的最佳应用场景是对象的DDL创建过程中使用:如create table xxx NOLOGGING as select …或create index ind_name … NOLOGGING; 该测试也验证了Oracle官方文档上的这句话"When you are inserting in parallel DML mode, direct-path INSERT is the default." |
|