Presented by: Craig Shallahamer, Founder, Orapub
I attended Craig’s second presentation, this on In-Memory Undo (IMU). This was another great presentation on a feature I have to admit I really knew nothing about.
In a nutshell, “traditional” undo uses physical blocks, just like any other segment. If a query needs to read an undo block to maintain read-consistency, it still has to go through all the latch and potentially I/O overhead of any other query. Additionally (and this was new for me, but now seems obvious), undo block changes also must maintain redo information for recovery purposes.
In-memory undo replaces undo blocks with an in-memory control structure called an IMU node. Instead of writing a change to an undo buffer, undo is written to the IMU node and persists in memory even after commit. A read-consistent query needs none of the overhead associated with physical blocks, so speed is dramatically improved.
Craig’s tests showed a 21% drop in CPU time and a 6.5% drop in wall-clock time for a load test that used IMU versus one that used physical undo. He attributes the not-as-dramatic wall-clock improvement to I/O overhead that isn’t reflected in the CPU timing.
Overall, a great presentation on a feature I knew nothing about. You can download the presentation and find more details at Orapub: http://www.orapub.com