CrazyCoder
CrazyCoder

Reputation: 2605

How does Postgres support rollback without undo logs

I was going through this link and it is mentioned that PostgreSQL does not support undo log. So I am wondering how PostgreSQL rollback a transaction without undo log.

Upvotes: 0

Views: 1821

Answers (1)

Laurenz Albe
Laurenz Albe

Reputation: 248125

When a row is updated or deleted in PostgreSQL, it is not really updated or deleted. The old row version just remains in the table and is marked as removed by a certain transaction. That makes an update much like a delete of the old and insert of the new row version.

To roll back a transaction is nothing but to mark the transaction as aborted. Then the old row version automatically becomes the current row version again, without a need for undoing anything.

The Achilles' heel of this technique is that data modifications produce “dead row versions”, which have to be reclaimed later by a background procedure called “vacuuming”.

Upvotes: 4

Related Questions