最初由 糖醋兔子 发布
[B]
谢谢eygle的辛勤劳动,这个应该是正解了
这个帖子,以前我看过的。我认为append insert下只是undo要比insert下的少,但并不是完全没有undo 产生的。
[php]
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> create table test as select * from all_objects where 1=2;
SQL> select usn,writes from v$rollstat;
USN WRITES
---------- ----------
0 6900
1 101874
223752
350500
451000
549180
635260
723692
823514
922698
1034620
已选择11行。
SQL> insert /*+ append */into test select * from all_objects;
已创建28950行。
SQL> select XIDUSN from v$transaction;
XIDUSN
----------
5
SQL> commit;
提交完成。
SQL> select usn,writes from v$rollstat;
USN WRITES
---------- ----------
0 6900
1 104666
225790
353322
453038
577560
637590
726236
825446
925302
1036552
SQL> select 77560-49180 from dual;
77560-49180
-----------
28380
SQL> insert into test select * from all_objects;
已创建28950行。
SQL> select XIDUSN from v$transaction;
XIDUSN
----------
8
SQL> commit;
提交完成。
SQL> select usn,writes from v$rollstat;
USN WRITES
---------- ----------
0 6900
1 109738
230594
358640
457998
582520
642998
731154
8 169818
930344
1041848
已选择11行。
SQL> select 169818-25446 from dual;
169818-25446
------------
144372
'
[/php] [/B]
即使是 nologging +direct ,redo 也不是完全不产生,logging +direct 下 undo 的减少,是大大地减少,减少的是什么?减少的是 数据的undo ,我是特地说了 数据本身的undo ,就如同 redo的减少也一样,我一直都说是 数据本身的 redo ,这和数据库是否产生redo 和 undo 是不同的概念,比如空间分配的 redo andundo ,这就不是数据本身的变化!
不管表是否处于nologging下,direct insert 都不会对数据产生 UNDO
----------这个说法,不会对数据产生undo 和不会产生undo 是两码事,就好比 nologging+direct 不会对数据产生 redo(但依然有其他的redo)和不会产生 redo 是两码事!
这是我当时的测试数据对比
带索引表,表和索引均是logging状态,测试结果及过程如下
----------------------------常规插入-------direct插入
插入日志生成量----------------8350864--------2364484
插入回滚段生成量--------------2343894--------426838
回滚日志生成量----------------4018204--------76032
回滚本身不存在产生回滚-------------------------------------
请再仔细读一读,参考
http://www.itpub.net/showthread.php?threadid=217094
|