Re: How is statement level read consistency implemented?

From: "Pavan Deolasee" <pavan(dot)deolasee(at)gmail(dot)com>
To: "Thomas Kellerer" <spam_eater(at)gmx(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: How is statement level read consistency implemented?
Date: 2008-04-22 10:57:17
Message-ID: 2e78013d0804220357j53f5bf98w8cb23ef14434fc1b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, Apr 22, 2008 at 4:11 PM, Thomas Kellerer <spam_eater(at)gmx(dot)net> wrote:
>
>
> I am interested in the technical details on how PG determines that a block
> needs to be read from from "some other place than the data block" because
> another transaction has updated the data block.
>

Postgres uses MVCC for transaction consistency. When a row is updated,
a new copy of the row is created and the old version is marked for
deletion (though its not removed immediately). The old readers
continue to read from the old copy whereas new transactions see the
new copy. This is all managed by XMIN and XMAX which are transaction
ids of the inserting and deleting transactions respectively and
control the visibility of the different versions.

If you want to understand MVCC, please see this excellent
documentation by Tom Lane:
http://www.postgresql.org/files/developer/transactions.pdf

Thanks,
Pavan

--
Pavan Deolasee
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Martijn van Oosterhout 2008-04-22 11:07:30 Re: How is statement level read consistency implemented?
Previous Message Thomas Kellerer 2008-04-22 10:41:08 How is statement level read consistency implemented?