mvcc & DML on the same row

From: matteo durighetto <desmodemone(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: mvcc & DML on the same row
Date: 2010-12-15 19:50:43
Message-ID: AANLkTikU9GVTAK9weE_XW4V_OFjFfg4t3uHpE8sa-i68@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,
I have an idea about mvcc and different DML of the same row in the
same transaction.
Normally when a backend do an unpdate on a row ( call it X ) , we done
an insert and logical delete on this row (0,1,2..N are the "version
of the row) :

X0 (delete "old" row)
X1 (insert "new" row)

if we continue the transaction and we do for example another update
on this row (X) , we again redo the same operation:

X0 (deleted "old" row)
X1 (row inserted, NOW deleted) => not needed for rollback
X2 (insert "new" row )

But why we need all these versions of the same row on table, if for
rollback we need only the original row X (X0) ?

So I think we need it in memory, not on physical space of table (ok
there is the cache, but ..) or something similar, or this method is
for transaction with isolation level at "read uncommited"?

Kind Regards

Matteo Durighetto

-----------------------

desmodemone(at)gmail(dot)com
m(dot)durighetto(at)miriade(dot)it

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2010-12-15 19:51:04 Re: Segfault related to pg_authid when running initdb from git master
Previous Message Robert Haas 2010-12-15 19:43:24 Re: Segfault related to pg_authid when running initdb from git master