love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

redo wastage

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: redo wastage

今天在看oracle core 第6章时,里面提到了redo wastage的概念,针对该概念,以前
也有所了解,不过并不是太清楚,今天正好简单记录一下。

这里部分内容其实是redo log 的头部,一共16个bytes,所以我这里50m的redo log,其实
可以用的空间大概如下:

从上来看来,其实对于50m的redo log,实际上可用的空间的比例约为94.5左右,同理,对于archivelog 也是一样
的道理,对于产生的50m的archive log而言,里面有5.5m是空洞。

为什么会产生redo wastage的情况下,可用这样简单的理解:

oracle 写log buffer内容到disk的过程,仍然是以block为单位的,redo log block size为512 bytes,也就是说,
oracle每次写都是block size的整数倍,如果说某个时刻,lgwr进程在写某个block,仅仅写了400个bytes,此时
事务commit或者发现redo log 切换,该block将被写入到redo log file中,而此时该block中还有112 个bytes是空的。

针对这类的redo wastage 浪费比例计算,我这样计算其实并不准确,严格来讲,应该计算多天的平均值。

在oracle core第6章中,L大师提到,对于block size更大的情况,redo wastage可能也就更为严重,但是redo log
block大小不是我们能够决定的,是由操作系统本身决定的,针对不同的平台,redo log block size不同,如下表:
redo wastage插图

oracle 为什么要这样设计,L大师是这样简单总结了一句话:
So Oracle’s strategy is simple: move the pointer to the end of the block, write the block, never read,
and never look back. The aim is to keep the code as simple as possible and keep streaming the log to disk
without interruptions.

总的来说,只有redo wastage 比较严重的情况下,我们才会加以关注。

2 Responses to “redo wastage”

  1. lizhenxu Says:
  2. eagle_eye Says:

    问一个问题,怎么从日志的块头信息看出块头的长度为16bytes的?

Leave a Reply

You must be logged in to post a comment.