Bo's Oracle Station

查看: 2027|回复: 4

请教redo日志的大小的问题

[复制链接]

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
发表于 2016-10-26 09:09:36 | 显示全部楼层 |阅读模式
唐sir:
    这几天在看梁老师的书(收获,不止oracle),有一处产生些疑问
     书上134-135页在讨论redo日志的大小,分为3种情况:删除,插入,更新
     过程是这样的:
      1,建表:create table t as select * from dba_objects;
      2,删表内记录并查看日志:delete from t;    日志约:20MB
      3,再插入数据并查看日志:insert into t select * from dba_objects; 日志约6MB
      4,再更新记录并查看日志:update t set object_id=rownum; 日志约7MB

       查看redo日志用创建视图的查询的方式:
       create or replace view v_redo_size
       as
       select a.name,b.value
       from v$statname a,v$mystat b
       where a.statistic#=b.statistic#
       and a.name='redo size';

        最后得出的结论是,delete动作产生的redo日志最多,insert的最少
        我在自己尝试的环节,发现结果跟这里不一样,结果为update最多(约35M),其次delete(约30M),最后是insert(10M)
        我试了3次,都是类似的结果,update最多
        这与书上的结论差距很大,尤其在update日志大小的结果上
        请教唐sir,结论真的是delete最多吗?我做出来的结果不对,是哪里错错了?

回复

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2016-10-26 11:40:39 | 显示全部楼层
下午梁老师会上线,直接回答大家的问题。
有任何问题,大家都欢迎在这里问梁老师。
回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2016-10-26 11:42:51 | 显示全部楼层
在147-149页全局临时表的时候,又遇到这个问题
回想起上一个帖子中提到的nologging的相关疑问,感觉都是相关的,同一个问题。

尝试了很多次,发现差别处在数据库是不是在归档模式上
在归档模式下,我的结果是对的,无论是不是全局临时表,update都产生大量的日志,要略多于delete,全局临时表在这里无效。
在非归档模式下,梁老师的结果是对的,无论是不是全局临时表,update都产生很少量的日志,只略多于insert,全局临时表相对普通表更少一些

回到上一个帖子的问题,增加nologging参数,在归档模式下并不会有太大的差异,依然产生很多的redo日志

再会想起唐老师的课程,涉及到直接路径加载与普通加载,在时间上的差别那一节课程演示的过程。
课程过程通过反复的插入大数据,证明直接路径加载要快于普通加载
当时课下我做实验的时候,发现这个差距远不如上课时演示的那么大,但还是有些很小的差异,当时不很理解
现在回想起来,这个实验也要在非归档模式下做,否则append一样会产生大量的redo

唐老师,我这样的理解是对的吗?当时课堂上的演示环境确实是在非归档下做的吗?
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2016-10-26 12:01:43 | 显示全部楼层
本帖最后由 botang 于 2016-10-26 12:11 编辑
lujiaguai 发表于 2016-10-26 11:42
在147-149页全局临时表的时候,又遇到这个问题
回想起上一个帖子中提到的nologging的相关疑问,感觉都是相 ...

append我是在归档模式下做的。高水位线后并发插入,直接从PGA过,没有commit用DATA SAVE内部技术。我的演示环境都归档了。
附上:1. create tablespace  xxx  nologging的话,append几乎没有什么日志了。 但是2. 即使表空间alter tablespace xxx nologging后, append还是会有一些日志。
          3. alter database force logging的话,第1条失效。


其他的梁老师会聊聊。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2016-10-26 16:20:17 | 显示全部楼层
delete改变数据库块,同时delete产生的UNDO最大,而UNDO又需要REDO来保护,所以产生的日志消耗一般是最大的 。
这里其实倒是不要纠结太多,UNDO的量的比较会意义更大一些。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-12-5 10:30 , Processed in 0.036019 second(s), 24 queries .

快速回复 返回顶部 返回列表