ITPub博客

首页 > 数据库 > Oracle > Oracle append Hint(三)

Oracle append Hint(三)

原创 Oracle 作者:ningaichao 时间:2012-07-04 22:44:29 0 删除 编辑

如果一个表上有索引,那么直接加载又会是什么情况呢?产生的redo量跟传统加载又相差多少呢?例子:

sys@ORCL> create table t

2 as

3 select * from dba_objects where 1=0;

Table created.

sys@ORCL> create index t_ind on t(object_id);

Index created.

sys@ORCL> set autotrace trace stat;

首先看下传统加载在有索引列产生的redo量

sys@ORCL> insert into t

2 select * from dba_objects where rownum<10000;

9999 rows created.

Statistics

----------------------------------------------------------

1067 recursive calls

1608 db block gets

2926 consistent gets

78 physical reads

1746900 redo size

918 bytes sent via SQL*Net to client

973 bytes received via SQL*Net from client

6 SQL*Net roundtrips to/from client

1 sorts (memory)

0 sorts (disk)

9999 rows processed

sys@ORCL> rollback;

Rollback complete.

再看直接加载在有索引列产生的redo

sys@ORCL> insert/*+append*/ into t

2 select * from dba_objects where rownum<10000;

9999 rows created.

Statistics

----------------------------------------------------------

40 recursive calls

295 db block gets

2283 consistent gets

22 physical reads

1326520 redo size

903 bytes sent via SQL*Net to client

987 bytes received via SQL*Net from client

6 SQL*Net roundtrips to/from client

2 sorts (memory)

0 sorts (disk)

9999 rows processed

通过对比可以发现两者相差的redo量并不是很多。因此使用直接加载时,通常是针对非常大的表。如果这些表存在索引,将会带来很大的性能影响,可以考虑将索引disable或者drop掉,然后加载数据,再建立索引。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26738398/viewspace-1058723/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    21
  • 访问量
    115217