前两天我在相关的网上看到了一篇关于技术文档 All About Oracle's In-Memory Undo,其中主要是对 Oracle In-Memory Undo (IMU)的研讨,在前几年我们大家有对其强烈谈论过,大部分基于猜测,这算是看到的第一篇比较细致的东西。
Oracle 公司在 10g 推出 IMU 这个特性(已经申请了专利)。Undo 作为最重要的组成部分之一,其高效与否直接关系到整个 DB 的能力。Undo 旧有的基于 Block 的段(Segment,指存储层的概念)管理模式方式,UNDO 本身的变化要记录到 Redo Log Buffer 里,而 IMU 避免了这个操作(因为是内存而不是存储),从而减小了生成的 Redo 量。
另外,因为读一致性开销直接到了内存里而不再依赖存储段, 整体也大大降低,CPU 的负荷也会有效降低。其应用模式应该说是适合一致读的需求量比较大的 OLTP。
Oracle 10g 默认是使用 IMU 这个特性的。通过隐含参数 _in_memory_undo 可以关闭这个特性。因为是隐含参数,也侧面反映出该特性并非那么成熟。搜索一下 Metalink,有不少关于 IMU 的 Bug,而 UNOD 的 Bug 一旦遇到,不停 DB 恐怕都很难解决。所以,对于可用性要求比较高的系统,现在起用该特性还是需要三思。
以上的相关内容就是对Oracle In-Memory Undo的讨论,望你能有所收获。
文章出自:http://www.programbbs.com/doc/class10-2.htm
【编辑推荐】