From: | Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Rewritten rows on unchanged values |
Date: | 2013-03-22 13:16:11 |
Message-ID: | 514C599B.1060508@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 03/22/2013 05:32 AM, Bertrand Janin wrote:
> I noticed how rows were re-written to a different location (new ctid) even
> without changes to the values. This illustrate what I mean:
>
> CREATE TABLE demo (id serial, value text);
>
> -- generate a few pages of dummy data
> INSERT INTO demo (value)
> SELECT md5(s.a::text)
> FROM generate_series(1, 1000) AS s(a);
>
> -- ctid = (0,1)
> SELECT id, xmin, ctid, value
> FROM demo
> WHERE id = 1;
>
> UPDATE demo
> SET value = value
> WHERE id = 1;
>
> -- ctid = (8,41)
> SELECT id, xmin, ctid, value
> FROM demo
> WHERE id = 1;
>
> I'm curious as to what would prevent keeping the row where it is and maybe
> change xmin in place?
Because Postgres uses MVCC:
http://www.postgresql.org/docs/9.2/static/mvcc-intro.html
So an update is a delete and an insert and you are really seeing a new row.
>
> Thanks,
> -b
>
>
--
Adrian Klaver
adrian(dot)klaver(at)gmail(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Albe Laurenz | 2013-03-22 13:33:15 | Re: Rewritten rows on unchanged values |
Previous Message | Bertrand Janin | 2013-03-22 12:32:54 | Rewritten rows on unchanged values |