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写到回滚块

  • 相关阅读:
    问答
    正在设计taijilang的解析器,真可谓尸横遍地
    因为这些理由而坚持用grunt?其实它们都不成立。
    开始设计taijijs
    从grunt转到gulp
    google 索引
    :: operator
    用coffeescript写构造函数
    jade与angular.js
    angular.js 资料收集
  • 原文地址:https://www.cnblogs.com/kramer/p/3487314.html
Copyright © 2011-2022 走看看