如何减少刷新物化视图时redo的大小-转贴?

SQL> create table testabc(Id number ,description char(1000));

Table created

SQL> alter table testabc add primary key(id);

Table altered

SQL>for i in 1.. 50001

loop

insert into testabc values(i,to_char(i))

end loop;

PL/SQL procedure successfully completed

SQL> select count(*) from testabc;

COUNT(*)

----------

50001

1. 物化视图上没有索引,且没有设置nologging

SQL> create materialized view testabc_mv as select * from testabc;

Materialized view created

SQL> column value new_val V

SQL> set verify off

SQL>

SQL> select a.name, b.value

2 from v$statname a, v$mystat b

3 where a.statistic# = b.statistic#

4 and a.name = 'redo size'

5 /

NAME VALUE

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

redo size 63358940

SQL> exec dbms_mview.refresh( 'testabc_mv', 'C' );

PL/SQL procedure successfully completed

SQL>

SQL> select a.name, b.value, to_char( b.value-&V,

2 '999,999,999,999' ) diff from v$statname a, v$mystat b

3 where a.statistic# = b.statistic#

4 and a.name = 'redo size'

5 ;

NAME VALUE DIFF

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

redo size 125733284 62,374,344

2.设置物化视图nologging;

SQL> alter table testabc_mv nologging;

Table altered

SQL> exec dbms_mview.refresh( 'testabc_mv', 'C' );

PL/SQL procedure successfully completed

SQL>

SQL> select a.name, b.value, to_char( b.value-&V,

2 '999,999,999,999' ) diff from v$statname a, v$mystat b

3 where a.statistic# = b.statistic#

4 and a.name = 'redo size'

5 ;

NAME VALUE DIFF

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

redo size 128937592 3,204,308

3.在物化视图上创建索引

SQL> create index ind_testabc_mv on testabc_Mv(description) ;

Index created

SQL>

SQL> select a.name, b.value

2 from v$statname a, v$mystat b

3 where a.statistic# = b.statistic#

4 and a.name = 'redo size'

5 ;

NAME VALUE

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

redo size 187908916

SQL> exec dbms_mview.refresh( 'testabc_mv', 'C' );

PL/SQL procedure successfully completed

SQL>

SQL> select a.name, b.value, to_char( b.value-&V,

2 '999,999,999,999' ) diff from v$statname a, v$mystat b

3 where a.statistic# = b.statistic#

4 and a.name = 'redo size'

5 ;

NAME VALUE DIFF

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

redo size 682009972 494,101,056

由以上可得得出,redo的变化:

方法

Redo变化

正常

62,374,344

nologing

3,204,308

加索引

494,101,056

当刷新物化视图时,作以下准备大大减少redo的产生,因此速度上也会快很多:


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

转载于:http://blog.itpub.net/694276/viewspace-51402/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值