append与nologging的使用

select * from v$version;--10.2.0.1.0

首先测试非归档下append,nologging,append+nologging的比较

1.非归档模式 append,nologging,append+nologging 三种情况数据产生REDO的对比
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 567
当前日志序列 569

create table t as select * from dba_objects where owner='GWM';
select name,value,class from v$sysstat where name='redo size'; --7653452

insert into t select * from dba_objects;--86894行插入 什么都没使用
select name,value,class from v$sysstat where name='redo size'; --17362192

insert /*+append*/ into t select * from dba_objects;--86894行插入 append的使用
select name,value,class from v$sysstat where name='redo size';--17414176

select (17362192-7653452) redo1,(17414176-17362192) redo2 from dual;
REDO1 REDO2
---------- ----------
9708740 51984

drop table t;
create table t nologging as select * from dba_objects where owner='GWM';
select name,value,class from v$sysstat where name='redo size';--27239040

insert into t select * from dba_objects;--86894行插入 单独nologging的情况下

select name,value,class from v$sysstat where name='redo size';--36950884

insert /*+append*/ into t select * from dba_objects;--86894行插入 append+nologging一起使用

select name,value,class from v$sysstat where name='redo size';--36994588

select (36950884-27239040) redo1,(36994588-36950884) redo2 from dual;
REDO1 REDO2
---------- ----------
9711844 43704

再测试归档下append,nologging,append+nologging的比较

2.归档下:append,nologging,append+nologging 三种情况数据产生REDO的对比
select flashback_on from v$database; --NO
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 568
下一个存档日志序列 570
当前日志序列 570
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG

create table t as select * from dba_objects where owner='GWM';
select name,value from v$sysstat where name='redo size'; --262896

insert into t select * from dba_objects;--86894行插入 均无使用append及nologging

select name,value from v$sysstat where name='redo size';--9975812 使用append

insert /*+append*/ into t select * from dba_objects;--86894行插入
select name,value from v$sysstat where name='redo size';--19765100

select (9975812-262896) redo1,(19765100-9975812) redo2 from dual;
REDO1 REDO2
---------- ----------
9712916 9789288

truncate table t;
alter table t nologging;
select name,value from v$sysstat where name='redo size';--19881868

insert into t select * from dba_objects;--86894行插入 只使用nologging
select name,value from v$sysstat where name='redo size';--29590564

insert /*+append*/ into t select * from dba_objects;--86894行插入 使用append和nologging

select name,value from v$sysstat where name='redo size';--29627424

select (29590564-19881868) redo1,(29627424-29590564) redo2 from dual;
REDO1 REDO2
---------- ----------
9708696 36860


总结:
非归档
append 9708740 51984
append与nologging一块使用 9711844 43704
归档下
append 9712916 9789288
append与nologging一块使用 9708696 36860


可以看出

1. 不管哪种模式下append要与nologging方式联用才能达到很好的效果。

2. 非归档与归档方式,只用NOLOGGING是不起效果的。

3. 非归档下append已达到不错的效果,但不及与nologging的联用方式。

4. 归档下单append起不到效果。


NOLOGGING插完后最好做个备份。

另外,如果库处在FORCELOGGING模式下,此时的nologging方式是无效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值