insert中启用错误日志的问题及分析

2014-11-24 17:18:56 · 作者: · 浏览: 0

1* select count(*)from mo1_memo_error
SQL> /
COUNT(*)
----------
907544

错误日志里面有详细的数据信息。但是如果足够细心查看执行时间的话,就会发现如果不使用append,性能就会差很多。
下面是一个简单的测试,
如果不使用append的时候,插入80万左右的数据在1分钟左右,如果使用了append就只需要大概13秒左右。
还有上面的测试结果,如果80万记录中99%左右的数据有冗余,插入错误日志就需要大概4分钟的样子
SQL> insert into mo1_memo select * from mo1_memo_ext_99 LOG ERRORS INTO MO1_MEMO_ERROR REJECT LIMIT UNLIMITED;
877245 rows created.
Elapsed: 00:01:12.91

SQL> insert into mo1_memo select * from mo1_memo_ext_98;
753637 rows created.
Elapsed: 00:01:04.75

SQL> rollback;
Rollback complete.
Elapsed: 00:00:56.35

SQL> insert /*+append*/ into mo1_memo select *from mo1_memo_ext_98;
753637 rows created.
Elapsed: 00:00:13.20

所以启用错误日志可以根据大家的需求来选择,有利有弊。