随笔 - 196  文章 - 0 评论 - 69 阅读 - 170万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

2011年1月14日

 

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方式是无效的。

 

 

posted on   蓝紫  阅读(9005)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示