|
本帖最后由 ri6789 于 2014-1-8 09:47 编辑
1、什么是IMU?
In Memory Undo
2、在哪些场景下不会使用IMU特性?(Oracle10g出现了IMU,默认开启IMU)
IMU未开启
事物过大
在RAC环境中IMU不被支持
3、如何手动关闭IMU?
修改隐藏参数
alter system set "_in_memory_undo"=false;
4、谈谈一条UPDATE语句从第一步到第九步的整个过程?在IMU模式下对REDO日志做DUMP分析(上图所示:IMU模式的REDO格式)。
1.将new的数据存放到GPG
2.将BUFFER CACHE 中 old的数据放到IMU buffer(私有的)
3.将PGA中 old的数据存放到private redo
4.修改buffre cache中的数据
5.构建一个CR块存放修改前的数据
6.IMU buffer日志写入 redo log file
7.private redo 日志写入redo log file
8. 由lgwr写出log buffer到redo log file
9. dbwr 将脏数据写入data file
两个update在同一张表上修改两行数据并提交
一条记日志==》6个CHANGE VECTOR
CHANGE #1 ==>OP:11.5 -->UPDATE 修改数据
CHANGE #2 ==>OP:5.2 -->开始一个事务
CHANGE #3 ==>OP:11.5 —>UPDATE 修改数据
CHANGE #4 ==>OP:5.4 --->COMMIT
CHANGE #5 ==>OP:5.1 --->UNDO
CHANGE #6 ==>OP:5.1 --->UNDO
5、IMU的主要作用是什么,也就是说为了解决什么问题?
提高CR读的速度
减少I/O
把多条日志条目合并成一条,减少LATCH
避免Undo信息以前在Buffer Cache中的读写操作
减少Redo生成,同时可以大大减少以前的UNDO SEGMENT的操作 |
|