ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 日志管理-8

日志管理-8

原创 Linux操作系统 作者:xhailiang 时间:2006-11-27 00:00:00 0 删除 编辑
上次介绍了关于REDO日志的统计信息,这次要说明为什么执行写入的数据块数和实际写入的数据量(byte数)不成比例。

──REDO日志是一种浪费?──

[transaction]
──SQL语句──
*************************************************************
UPDATE WORK03
SET ENAME = 'haneda'
WHERE EMPNO = 1001 ;
1行更新了。

COMMIT ;
Commit结束。
※ EMPNO尚未创见索引。
*************************************************************


下图显示了一些必须的统计信息,用于确定对REDO日志实际执行的写入量。

这些是累计值,所以必须求出更新前后的差,为了调查写入量所需的统计信息在更新前后的差如下。
1. redo size = 448
2. redo wastage = 544
3. redo blocks written = 2

请先注意看redo blocks written,这里的数据块不是Oracle的数据块,而是OS的数据块,因此512×2,也就是写入了1024byte。接下来,再看看代表实际入的byte数的redo size,结果是448,未满1024。以16进制打开OS上的文件以确定内容,发现数据块里面的确有很多部分并未写入任何东西。

REDO日志文件的16进位表示结果

换句话说,执行写入的时候是以要写到REDO日志文件的格式为基准,所以会有空白部分。redo wastage表示没有写入任何数据的量,至于实际上的写入量则是从redo wastage和redo blocks written求得,结果如下。
1024(redo blocks written)-544(redo wastage)-16(Header)×2(数据块数)=448(redo size)
※在各个数据块的Header分别有16byte的标题信息,所以要除去这个部分。

换句话说,为了更新6byte,结果消耗1K byte的空间,其中有544 byte是因为以512byte为单位执行写入——也就是因为格式原因导致的浪费。以OS的数据块大小为单位(512byte)执行写入可以提高性能。“浪费”的说法也许不是很恰当,但即使采用优先考虑性能的格式执行写入,还是有可以改善的地方的。

下次我们要讨论即使内容完全一样,写入时所需的数据块数也会因为写入REDO日志文件的时间不同而有所改变的现象。

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

上一篇: 日志管理-7
下一篇: 日志管理-9
请登录后发表评论 登录
全部评论

注册时间:2008-02-17

  • 博文量
    270
  • 访问量
    417078