Oracle append Hint(三)

如果一个表上有索引,那么直接加载又会是什么情况呢?产生的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 whererownum<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 whererownum<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掉,然后加载数据,再建立索引。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值