zoukankan      html  css  js  c++  java
  • imu 和 private redo

    在传统的undo管理模式中,Oracle对undo和data block是一视同仁。这样大致会有三种弊端:

    1)事务开始时,存放事务表的段头不在内存,server process需要将此i/o上来

    2)存放旧值的回滚块不在内存

    3)rollback或者CR读的时候,所需的回滚块被DBWn写到磁盘,oracle也需将此i/o,可能会产生大量的consistent gets和physical reads

    UNDO 也是受redo保护的,因此更是造成了额外的开销。

    10g中引入private redo 和 IMU。 提高了CR的速度,减少了I/O.

    IMU也就是in memory undo。实际上是在shared pool中开辟一块区域来存放undo信息。通常情况下oracle会尽量把新生成的undo放入 shared pool中的undo buffer。这个行为不受redo保护。

    在以下两种情况,undo数据会被写到回滚块:

    a.  IMU buffer空间不足时,会发生IMU flush,将undo flush到database_buffer_cache里的回滚块中

    b.  LGWR将redo写到redo log file时,会发生IMU commit,将private redo strands写到redo log file,将IMU buffer写到回滚块

  • 相关阅读:
    CJB的大作
    OI省选算法汇总
    bzoj1078【SCOI2008】斜堆
    zrt中文题
    bzoj4726【POI2017】Sabota?
    bzoj4591 【Shoi2015】超能粒子炮·改
    bzoj2086【Poi2010】Blocks
    bzoj2091【Poi2010】The Minima Game
    bzoj2038小z的袜子
    bzoj4282慎二的随机数列
  • 原文地址:https://www.cnblogs.com/kramer/p/3487314.html
Copyright © 2011-2022 走看看