redo wastage

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: redo wastage

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

SQL>   SELECT name,VALUE FROM v$sysstat WHERE name LIKE '%redo%';NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo synch writes                                                       264
redo synch TIME                                                         344
redo blocks READ FOR recovery                                         25479
redo entries                                                        2158328
redo SIZE                                                         605152164
redo buffer allocation retries                                           46
redo wastage                                                        1357540
redo writer latching TIME                                                16
redo writes                                                            5050
redo blocks written                                                 1225607
redo WRITE TIME                                                        5262NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo log SPACE requests                                                  35
redo log SPACE wait TIME                                                177
redo log switch interrupts                                                0
redo ordering marks                                                       4
redo subscn MAX counts                                                    0
redo WRITE broadcast ack TIME                                             017 ROWS selected.SQL>   CREATE TABLE t AS SELECT * FROM dba_objects;TABLE created.SQL>   SELECT name,VALUE FROM v$sysstat WHERE name LIKE '%redo%';NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo synch writes                                                       265
redo synch TIME                                                         344
redo blocks READ FOR recovery                                         25479
redo entries                                                        2159471
redo SIZE                                                         611007860
redo buffer allocation retries                                           46
redo wastage                                                        1358616
redo writer latching TIME                                                16
redo writes                                                            5059
redo blocks written                                                 1237416
redo WRITE TIME                                                        5266NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo log SPACE requests                                                  35
redo log SPACE wait TIME                                                177
redo log switch interrupts                                                0
redo ordering marks                                                       4
redo subscn MAX counts                                                    0
redo WRITE broadcast ack TIME                                             017 ROWS selected.SQL>
SQL>   SELECT a.name,b.VALUE2  FROM v$statname a ,v$mystat b3  WHERE a.statistic#=b.statistic# AND a.name LIKE '%redo%';NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo synch writes                                                         5
redo synch TIME                                                           0
redo blocks READ FOR recovery                                             0
redo entries                                                          12561
redo SIZE                                                          14319932
redo buffer allocation retries                                            0
redo wastage                                                              0
redo writer latching TIME                                                 0
redo writes                                                               0
redo blocks written                                                       0
redo WRITE TIME                                                           0NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo log SPACE requests                                                   0
redo log SPACE wait TIME                                                  0
redo log switch interrupts                                                0
redo ordering marks                                                       0
redo subscn MAX counts                                                    0
redo WRITE broadcast ack TIME                                             017 ROWS selected.SQL>
SQL>   BEGIN2    FOR i IN 1 .. 100 loop3      DELETE FROM t WHERE rownum  SELECT name,VALUE FROM v$sysstat WHERE name LIKE '%redo%';NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo synch writes                                                       266
redo synch TIME                                                         344
redo blocks READ FOR recovery                                         25479
redo entries                                                        2159888
redo SIZE                                                         611345536
redo buffer allocation retries                                           46
redo wastage                                                        1366480
redo writer latching TIME                                                16
redo writes                                                            5097
redo blocks written                                                 1238113
redo WRITE TIME                                                        5270NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo log SPACE requests                                                  35
redo log SPACE wait TIME                                                177
redo log switch interrupts                                                0
redo ordering marks                                                       4
redo subscn MAX counts                                                    0
redo WRITE broadcast ack TIME                                             017 ROWS selected.SQL>   SELECT a.name, b.VALUE2    FROM v$statname a, v$mystat b3   WHERE a.statistic# = b.statistic#4     AND a.name LIKE '%redo%';NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo synch writes                                                         6
redo synch TIME                                                           0
redo blocks READ FOR recovery                                             0
redo entries                                                          12925
redo SIZE                                                          14652304
redo buffer allocation retries                                            0
redo wastage                                                              0
redo writer latching TIME                                                 0
redo writes                                                               0
redo blocks written                                                       0
redo WRITE TIME                                                           0NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo log SPACE requests                                                   0
redo log SPACE wait TIME                                                  0
redo log switch interrupts                                                0
redo ordering marks                                                       0
redo subscn MAX counts                                                    0
redo WRITE broadcast ack TIME                                             017 ROWS selected.
------Redo wastage size (bytes)SQL>   select (1366480-1358616) from dual;(1366480-1358616)
-----------------7864---Redo log size (bytes)SQL>   select 14652304-14319932 from dual;  ---session级别14652304-14319932
-----------------332372SQL>   select 611345536-611007860 from dual; ---系统级别611345536-611007860
-------------------337676SQL>        对于多出的redo log bytes,其实就是递归操作产生的。       SQL>   select 7864/337676 from dual;7864/337676
-----------.023288596我们可以发现,此时redo log 浪费的比例约为2.3%。此时的redo log block_size为512 bytes。
SQL>   conn /AS sysdba
Connected.
SQL>   SELECT MAX(lebsz) FROM x$kccle;MAX(LEBSZ)
----------512SQL>   SELECT * FROM v$log;GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1        286   52428800          1 NO  CURRENT                3411998 17-JUN-122          1        284   52428800          1 YES INACTIVE               3407009 17-JUN-123          1        285   52428800          1 YES INACTIVE               3410228 17-JUN-12SQL>   SELECT * FROM v$logfile;GROUP# STATUS  TYPE    MEMBER                                                       IS_
---------- ------- ------- ------------------------------------------------------------ ---3         ONLINE  /home/ora10g/oradata/roger/redo03.log                        NO2         ONLINE  /home/ora10g/oradata/roger/redo02.log                        NO1         ONLINE  /home/ora10g/oradata/roger/redo01.log                        NOSQL>   ALTER SYSTEM DUMP LOGFILE '/home/ora10g/oradata/roger/redo01.log';System altered.-----trace如下:
DUMP OF REDO FROM FILE '/home/ora10g/oradata/roger/redo01.log'Opcodes *.*RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffffSCNs: scn: 0x0000.00000000 thru scn: 0xffff.ffffffffTimes: creation thru eternityFILE HEADER:Compatibility Vsn = 169870592=0xa200500Db ID=2466925865=0x930a4d29, Db Name='ROGER'Activation ID=2470475068=0x9340753cControl Seq=4397=0x112d, File SIZE=102400=0x19000File NUMBER=1, Blksiz=512, File TYPE=2 LOG

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

SQL>    SELECT 50*1024*1024 - (50*1024*1024*0.023 + 102400*16) FROM dual;50*1024*1024-(50*1024*1024*0.023+102400*16)
-------------------------------------------49584537.6SQL>   SELECT  49584537.6/52428800 FROM dual;49584537.6/52428800
-------------------.94575

从上来看来,其实对于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不同,如下表:

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 比较严重的情况下,我们才会加以关注。

对redo wastage这个概念的说明相关推荐

  1. Redo Wastage

    一般的,lgwr写到current log buffer block并且包括current log buffer block,(writes up to and including the curre ...

  2. 关于redo wastage的测试

    通过查看v$sysstat视图可以找到与redo相关的状态记录: select name, value from v$sysstat where name like '%redo%'; Oracle ...

  3. Redo wastage产生的原因

    Redo wastage产生的原因[@more@] Redo wastage产生的原因 在v$sysstat中有一个统计是redo wastage,这个究竟是什么意思,为什么汇产生这个问题哪?reod ...

  4. MySQL binlog和redo/undo的概念

    binlog:binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新(比如DELETE语句执行删除而实际并没有符合条件的数据),在mysql主从复制中就是依靠的binlog.在mysq ...

  5. 重做日志浪费(redo wastage)

    Oracle中联机日志文件(online redo log)在大多平台上以512 字节为一个标准块. (HPUX,Tru64 Unix上是1024bytes,SCO UNIX,Reliant UNIX ...

  6. 有关 Oracle redo log

    Redo的内容 Oracle通过Redo来实现快速提交,一方面是因为Redo Log File可以连续.顺序地快速写出,另一个方面也和Redo记录的精简内容有关. 两个概念: 改变向量(Change ...

  7. 必须了解的MySQL三大日志:binlog、redo log和undo log

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者: 六点半起床 juejin.im/post/68602522 ...

  8. 必须了解的mysql三大日志-binlog、redo log和undo log

    来源:https://juejin.im/post/6860252224930070536 日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息.mysql日志主要包括错误日志. ...

  9. 说说你对binlog、redo log和undo log的理解

    这里写自定义目录标题 说说你对binlog.redo log和undo log的理解 binlog binlog使用场景 binlog日志格式 redo log 为什么需要redo log redo ...

最新文章

  1. R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表
  2. c++设计模式:访问者模式(visitor模式)
  3. andoid 打包短信发送到gmail邮箱
  4. 快速入门PyTorch(2)--如何构建一个神经网络
  5. linux查看磁盘占用
  6. vim 高亮显示php代码
  7. python调用ping命令_在Python中调用Ping命令,批量IP的方法
  8. 船舶和计算机结合论文格式,近海船舶监控系统中航迹关联算法的计算机研究与实现...
  9. CSS 笔记——盒子模型
  10. java 文件内容读取到字符串中,从文本文件中将字符串值读取到Java中的Jav...
  11. StyleGAN v2:对StyleGAN v1的思考与改进
  12. 怎么修改计算机日志里的用户,修改电脑日志保存位置的方法
  13. 机械--NX2007(UG)有限元分析教程1--简单物体
  14. 白话讲解RPC调用和HTTP调用的区别
  15. java jbutton 大小_Java swing JButton的顺序和大小
  16. mysql 百万级数据库优化方案
  17. 少儿编程学习(顺序结构)
  18. 3dmax:3dmax的三维动画之3Dmax导入BIP动作的简介之详细攻略
  19. 百度啊,你是新年第一惨
  20. linux运行openfoam,OpenFOAM应用的准备工作

热门文章

  1. python多个版本可不可以装在一起_可以在同一台计算机上安装多个Python版本。
  2. 一文总结Spring 注解及作用详解
  3. 电脑如何设置开机自启软件?
  4. pandas数据处理效率提升方法
  5. [前沿技术] AMD FSR 1.0源码分析(二)
  6. OSChina 周日乱弹 —— 对,今天都是笑话
  7. QQ圈圈99+ 进群免费拉
  8. [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互
  9. python 批量合并Excel表格
  10. python训练_Python(练习)