2011年1月14日
首先测试非归档下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方式是无效的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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