一个关于redo size的实验

今天一个朋友问我,什么情况下insert不产生redo,这本来是个比较容易回答的问题,直接路径写,可本着任何问题都严谨回答的态度,我还是做了实验,得出来以下结论,试验过程不再赘述,就是比较v$mystat的redo size的变化。

结论:

archive mode
1.logging
 1.1 insert----have redo
 1.2 insert /*+ APPEND */----have redo
2.nologging
 2.1 insert----have redo
 2.3 insert /*+ APPEND */----do not have redo
在归档模式下,只有表是nologging,并且直接路径写才不会产生redo

noarchive mode
1.nologging
 1.1 insert----have redo
 1.2 insert /*+ APPEND */----do not have redo
2.logging
 2.1 insert----have redo
 2.2 insert /*+ APPEND */----do not have redo
在非归档模式下,无论表是否是nologging模式,直接路径写都不产生redo。

那么nologging和logging该怎么用?于是我做了以下测试

noarchive mode
1.create table t nologging as select * from all_objects----do not have redo
2.create table t as select * from all_objects----do not have redo

archive mode
1.create table t nologging as select * from all_objects ----do not have redo
2.create table t as select * from all_objects----have redo

那么nologging对于表到底起啥作用?在归档模式下,也就是大部分生产库上,如果要加速操作速度,并且不插入日志,你可以选择两种操作:
1.先create一个nologging的表,然后用insert /*+ APPEND */来插入数据。
2.如果要进行复制表的操作,那么直接create table t nologging即可。

nologging对索引也有作用,alter index test_1 nologging,能有啥用?在rebuild索引时,可以先将索引nologging,然后rebuild时就不会产生大量redo。

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

转载于:http://blog.itpub.net/16628454/viewspace-600883/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值