由于传统的UNDO管理模式,oracle对于undo和data block,需要先读入到data

buffer中进行修改,并产生data的redo。

修改的过程:产生undo的redo,更改undo block,产生data的redo,修改data

block

这就会产出i/o问题。

第一,undo信息如果不在data buffer中,首先要从外部文件读入

第二,undo的所有变化都要同时产生redo,在事务递交时候被写入到redo log中

从oracle10g开始,引入了in memory undo的新技术,IMU技术就是在shared

pool中分配一片内存空间imu pool。用来避免undo信息以前在buffer cache中的

读写操作,从而可以进一步减少redo生成,同时可以大大减少以前的undo

segment的操作。

每个新的事务都会分配一个imu buffer,用来记录undo的信息。

总结 imu机制好处:1提高CR读的速度 2减少i/o

隐含参数_in_memory_undo 来控制该特性是否启动.默认是true。

隐含参数_imu_pools 默认值3 提供并发

imu的使用信息,如递交次数可以通过v$sysstat视图查询

select name ,value from v$sysstat where name like ‘%commits’;

v$sgastat查询系统当前的imu内存分配大小

select * from v$sgastat where name=‘KTI-UNDO’;

select name,gets,misses,immediate_gets,sleeps from v

$latch_children where name like ‘%undo latch’;

imu模式下,undo信息依然会被redo保护,因为instance recovery需要undo信息

来回滚未提交的事务,是数据库处于一致性状态。

事务开始时,依旧会在数据块的头部分配ITL,并且,指向undo segment header

的事务表,但回滚块的信息不需要马上写入。这时,undo数据是被记录在imu

buffer里面,这个行为不被redo保护。 一下二种情况,undo数据会被写回到

undo块:

1.imu buffer空间不足时,会发生imu flush,将undo flush到

database_buffer_cache里的回滚块中

2.LGWR将redo写到redo log file时,会发生imu commit,将private redo

strands写到redo log file,将imu buffer 写到回滚块

当imu buffer flush到回滚块时,oracle会进行合并处理,减少回滚块的消耗以

及redo的产生。

在10g开始,同时会在shared pool里,分配一个private redo buffer,每个事

务产生的redo都会放在这里。

有了private redo strands机制,针对imu buffer产生的日志,就直接在shared

pool里面记录。

rac和streams里面imu默认没有开启的

imu和redo private strands技术,参考了redo log buffer 和

database_buffer_cache的关系模拟出来的。

附上几张UNDO的图

imu oracle,IMU技术相关推荐

  1. Oracle内核技术揭密

    数据库技术丛书 Oracle内核技术揭密 吕海波 著 图书在版编目(CIP)数据 Oracle内核技术揭密/吕海波著. -北京:机械工业出版社,2014.7 (数据库技术丛书) ISBN 978-7- ...

  2. 阅读《Oracle内核技术揭秘》的读书笔记

    阅读<Oracle内核技术揭秘>,对oracle的内存结构.锁.共享池.undo.redo等整理成了如下的思维导图: 转载于:https://www.cnblogs.com/hikeepg ...

  3. oracle订阅推送,ERP一部推送 | Oracle优化技术分享

    原标题:ERP一部推送 | Oracle优化技术分享 看到图片中酷酷的小哥哥们了吗?他们是来自中ERP一部的许斌哲,有颜有才的他今天为我们带来的技术分享是关于 Oracle优化方面的,欢迎感兴趣的小伙 ...

  4. Oracle分区技术特性详细解读

    老张拉呱:thomas zhang,甲骨文云平台事业部资深技术顾问,2008年加入甲骨文公司数据库咨询部门,10+年甲骨文解决方案咨询支持经验,资深系统工程师.Oracle OCM认证专家,具有丰富的 ...

  5. 2如何看表分区字段_技术分享|Oracle分区技术的实现总结

    郝秉睿 青岛科技研发中心 相信对于分区技术,大家一定都有所了解.但是你知道Oracle一共有多少种分区技术么?它们的适用范围和规范是怎样?今天让我们一起来看一看Oracle分区技术的魅力. 在大型的数 ...

  6. 《Oracle内核技术解密》读书笔记(一)

    最近阅读了吕海波的<Oracle内核技术解密>,感觉受益匪浅,但是由于篇幅的原因,一些测试被作者略过了,估计是认为太简单了..因此按照自己的理解补上了. 目录 存储结构 区(extent) ...

  7. oracle数据库方案模式,Oracle数据库技术服务方案.doc

    Oracle技术服务方案书 第 PAGE 2 页/总 NUMPAGES 8 页 Oracle数据库技术服务方案 (V1.0) 目录 TOC \o "1-3" \h \z HYPER ...

  8. Oracle索引技术pdf

    下载地址:网盘下载 内容介绍 编辑 正确使用Oracle数据库的索引不仅可以实现良好的性能,更重要的是能够创造出可伸缩的数据库应用程序.本书在介绍各种类型索引的过程中,始终围绕性能这一主线,透彻分析了 ...

  9. oracle数据库的基本教程 pdf,Oracle数据库技术基础教程 PDF 下载

    相关截图: 资料简介: 本书主要介绍Oracle数据库的基本概念.知识和技术,注重培养Oracle数据库技术的基本操作技能.本书内容体系完整,覆盖了Oracle数据库技术的主要组成部分,设置有Orac ...

最新文章

  1. java jni key_JNIKeyProtection
  2. hub,桥,交换机,路由器的区别
  3. Java基础--继承、this、super、抽象类
  4. Qt之创建并使用共享库
  5. boost::core模块实现fn地址
  6. unable to access ‘https://github.com/***.git‘: OpenSSL SSL_read: Connection was reset, errno 10054
  7. 使用Mac App Store更新、下载软件时出现未知错误的解决方法
  8. imos 学习笔记四 录像 c#
  9. Python字符串加密
  10. Chatopera王海良:大厂螺丝钉还是开源极客?年轻技术人如何选择?
  11. 阿里巴巴的26款超神Java开源项目!
  12. (SSM,JQUERY-EASYUI,MYSQL)快递物流系统
  13. c++ day12 虚继承和多态概念的抛出
  14. java set 删除_Java Set remove()用法及代码示例
  15. oracle级联怎么设置,Oracle级联操作详解
  16. ABAP 生产订单的创建与修改函数
  17. android拷贝设备断连接,android – Firebase Messaging Inactivity,断开与AppMeasurementService的连接[复制]...
  18. 前台js MD5加密 后台 java MD5解密
  19. canvas实现 行人 走路的动画(完整实现)
  20. Mysql(Innodb)如何避免幻读

热门文章

  1. linux常用命令:iconv 命令(用于文件的编码转换),还可以用UE另存
  2. shineblink HC-SR505人体红外感应传感器
  3. 软件设计师(软考中级)考试大纲
  4. 【深度之眼Python基础+数据科学入门训练营】第八章 文件、异常和模块
  5. java多线程归并排序_并行计算实验-串、并行排序算法
  6. Unity游戏画面参数解析与应用:垂直同步、动态模糊、抗锯齿
  7. android ios动态模糊效果,iOS实现模糊效果的几种方法
  8. WeDrivePlugin64_24.dll 引发win7系统不能进入桌面
  9. 2022第四届长安杯复盘(WP)
  10. 【NFS共享存储服务】