From: | Scott Marlowe <scott(dot)marlowe(at)gmail(dot)com> |
---|---|
To: | Ravi Krishna <sravikrishna3(at)gmail(dot)com> |
Cc: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: PG and undo logging |
Date: | 2015-05-24 02:12:05 |
Message-ID: | CAOR=d=2nFvt-CZL1R3cXy_NTkwNCRw+DzAJqDyRHgeaRmVtuQw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Sat, May 23, 2015 at 2:34 PM, Ravi Krishna <sravikrishna3(at)gmail(dot)com> wrote:
> Is it true that PG does not log undo information, only redo. If true,
> then how does it bring a database back to consistent state during
> crash recovery. Just curious.
PostgreSQL is NOT oracle. And it doesn't work like oracle. This is normal.
Ever run an insert with 1M rows, and roll it back in postgresql and
compare that to oracle. Time the rollback in both. That should give
you an idea of how differently the two dbs operate.
A rollback in postgres is immediate because it's already "rolled back"
so to speak. NONE of it's in the main data store yet, it's all in the
transaction log waiting.
Oracle spends it's time and effort creating an "undo" log because it
commits every so often, whether or not you've committed your
transaction.
PostgreSQL doesn't. The whole transaction exists in the transaction
log (called xlog dir in pg lingo.)
When you roll back a pg transaction it literally requires almost no
work. Mark the transaction as aborted etc and get on with life.
Transaction logs get cleaned up as usual in the background and we go
on our way.
This means that Oracle uses space for rollback, while postgres uses
space for "roll forward" (aka the transaction logs) so to speak.
--
To understand recursion, one must first understand recursion.
From | Date | Subject | |
---|---|---|---|
Next Message | Bill Moran | 2015-05-24 02:44:05 | Re: FW: Constraint exclusion in partitions |
Previous Message | Daniel Begin | 2015-05-24 01:46:01 | Re: FW: Constraint exclusion in partitions |