As announced elsewhere[1][2][3], at EnterpriseDB we are working on a proposal to add in-place updates with undo logs to PostgreSQL. The goal is to improve performance and resource usage by recycling space better.
The lowest level piece of this work is a physical undo log manager, which I've personally been working on. Later patches will build on top, adding record-oriented access and then the main "zheap" access manager and related infrastructure. My colleagues will write about those.
The README files[4][5] explain in more detail, but here is a bullet-point description of what the attached patch set gives you:
1. Efficient appending of new undo data from many concurrent backends. Like logs. 2. Efficient discarding of old undo data that isn't needed anymore. Like queues. 3. Efficient buffered random reading of undo data. Like relations.
A test module is provided that can be used to exercise the undo log code paths without needing any of the later zheap patches.
This is work in progress. A few aspects are under active development and liable to change, as indicated by comments, and there are no doubt bugs and room for improvement. The code is also available at github.com/EnterpriseDB/zheap (these patches are from the undo-log-storage branch, see also the master branch which has the full zheap feature). We'd be grateful for any questions, feedback or ideas.
The contents of this email are confidential and may be subject to legal or professional privilege and copyright. No representation is made that this email is free of viruses or other defects. If you have received this communication in error, you may not copy or distribute any part of it or otherwise disclose its contents to anyone. Please advise the sender of your incorrect receipt of this correspondence.