关于redo(二)插入更新数据时的效率比较

本文通过实验对比分析,在Oracle 11g环境下,使用nologging和append策略对大表进行插入和更新操作的性能影响。发现nologging和append策略能有效提高插入操作效率,但对更新操作效果有限。实验结果强调了不同操作类型在选择性能优化策略时的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     继续昨天的问题。我曾经面对一个工作,要把一张很大的表中,3个月前的数据删掉,转储到历史表中。这将是一个很大的工程,需要在一周内完成,而且只能在夜里进行工作。这就需要考虑到性能问题了,考虑到网上很多人说nologging会很快,我就做个试验,比较一下效率。

     实验环境:windows7 x64。oracle11g,11.2.0.1.0。归档模式,实验表:test1(create table test1 as select * from dba_objects;)。

     实验步骤:

实验之前记录的 redo size:35580568
insert的比较:
insert into test1 (select * from dba_objects);
commit; 

 
直接插入,redo size:49178876 产生的redo size:13598308
nologging插入,redo size:65167892 产生的redo size:15989016
append插入,redo size:78455764 产生的redo size:13287872

更改表为nologging,记录当前的redo size:78626484
直接插入,redo size:92136040 产生的redo size:13509556
append插入,redo size:99624700 产生的redo size:7488660

update的比较
update test1 set object_id = XXXX;
commit;


记录redo size: 107764388
直接更新,redo size:212615144 产生的redo size:104850756
nologging更新,redo size:319452512 产生的redo size:106837368
append更新,redo size:425422288 产生的redo size:105969776

更改表为nologging,redo size:621576604
直接更新,redo size: 726667444 产生的redo size:105090840
append更新,redo size:827687192 产生的redo size:101019748

     综上,可以看到联合使用nologging和append可以很有效的提高insert的效率,但是对于update就不是这么灵光了。
     查询oracle11gR2的官方帮助文档中关于append的部分,发现如下:
Conventional INSERT is the default in serial mode. In serial mode, direct path can be used only if you include the APPEND hint.
Direct-path INSERT is the default in parallel mode. In parallel mode, conventional insert can be used only if you specify the NOAPPEND hint.
In direct-path INSERT, data is appended to the end of the table, rather than using existing space currently allocated to the table. As a result, direct-path INSERT can be considerably faster than conventional INSERT.
     由上述说明可以看出,append只是对insert起作用,直接将数据插入表的表尾,而不是去插入表中空闲的区域。但是这样提升效率我却有点不安,是不是会有些连带的问题现在还没有展现出来。接下来我会关于这个继续研究。

转载于:https://www.cnblogs.com/wingsless/archive/2011/12/07/2279222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值