Skip site navigation (1) Skip section navigation (2)

Re: COPY with hints, rebirth

From: "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
To: "Simon Riggs" <simon(at)2ndQuadrant(dot)com>, "PostgreSQL-development" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: COPY with hints, rebirth
Date: 2012-02-25 18:24:37
Message-ID: 4F48D3050200002500045BC8@gw.wicourts.gov (view raw or flat)
Thread:
Lists: pgsql-hackers
Simon Riggs <simon(at)2ndQuadrant(dot)com> wrote:
 
> This patch extends that and actually sets the tuple header flag as
> HEAP_XMIN_COMMITTED during the load.
 
Fantastic!
 
So, without bulk-load conditions, a long-lived tuple in PostgreSQL
is written to disk at least five times[1]:
 
(1) The WAL record for the inserted tuple is written.
(2) The inserted tuple is written.
(3) The HEAP_XMIN_COMMITTED bit is set and the tuple is re-written
    in place some time after the inserting transaction's COMMIT.
(4) The WAL record for the "freeze" in write 5 is written.
(5) The xmin is set to frozen and the tuple is rewritten in place
    some time after every other connection can see it.
 
Prior to your patch, bulk load omitted write 1.  With your patch we
will also omit write 3.
 
Since you've just been looking at this area, do you have any
thoughts about writes 4 and 5 being rendered unnecessary by writing
bulk-loaded tuples with a frozen xmin, and having transactions with
a snapshot which doesn't include the bulk load's transaction just
not seeing the table?  (Or am I just dreaming about those?)
 
-Kevin
 
[1] If you are archiving, it could be more.

In response to

Responses

pgsql-hackers by date

Next:From: Simon RiggsDate: 2012-02-25 18:58:12
Subject: Re: COPY with hints, rebirth
Previous:From: Kevin GrittnerDate: 2012-02-25 18:06:38
Subject: Re: foreign key locks, 2nd attempt

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group