pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Kevin Grittner <Kevin.Grittner@wicourts.gov>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Joshua D. Drake <jd@commandprompt.com>
Cc: Peter Koczan <pjkoczan@gmail.com>
Cc: Scott Marlowe <scott.marlowe@gmail.com>
Cc: Markus Bertheau <mbertheau.pg@googlemail.com>
Cc: pgsql-performance <pgsql-performance@postgresql.org>
Subject: Re: disabling an index without deleting it?
Date: Wed, 27 Feb 2008 17:18:50 -0600
Message-ID: <47C59B79.EE98.0025.0@wicourts.gov> (raw)
In-Reply-To: <10385.1204153217@sss.pgh.pa.us>
References: <4544e0330802261246t574167fdpc47629d1bbe64fed@mail.gmail.com>
	<dcc563d10802261257h6abfbc92x62a7569b8610ecc4@mail.gmail.com>
	<20080226130339.64bd4ec3@commandprompt.com>
	<9050.1204064560@sss.pgh.pa.us>
	<684362e10802261848j79686752k6dfbe032e985b131@mail.gmail.com>
	<684362e10802261848j79686752k6dfbe032e985b131@mail.gmail.com>
	<13604.1204087729@sss.pgh.pa.us>
	<47C578A1.EE98.0025.0@wicourts.gov>
	<47C578A1.EE98.0025.0@wicourts.gov>
	<10385.1204153217@sss.pgh.pa.us>

>>> On Wed, Feb 27, 2008 at  5:00 PM, in message <10385.1204153217@sss.pgh.pa.us>,
Tom Lane <tgl@sss.pgh.pa.us> wrote: 
> "Kevin Grittner" <Kevin.Grittner@wicourts.gov> writes:
>> Out of curiosity, couldn't any transaction using a snapshot prior to
>> the commit of the DROP continue to use it (just like an uncommited
>> DELETE of a row)?  The transaction doing the DROP wouldn't maintain
>> it for modifications, which is fine whether it is committed or
>> rolled back.  There would just be the matter of "vacuuming" the
>> index out of physical existence once all transactions which could
>> see it are gone.
> 
> You can't just lazily remove the index after the last xact stops using
> it; there has to be an agreed synchronization point among all the
> transactions.  Otherwise you could have xact A expecting the index to
> contain entries from the already-committed xact B, but B thought the
> index was dead and didn't bother updating it.
 
If xact A is using a snapshot from before the commit of the index
DROP, it shouldn't see anything done after the drop anyway.  If
it's using a snapshot from after the DROP, it won't see the index.
xact B would only fail to update the index if it was using a
snapshot after the drop, so I'm having trouble grasping the
sequence of events where this is a problem.  Could you outline
the series of events where the problem occurs?
 
> In the particular case at hand, a planner hook to make it ignore the
> index is a far better solution anyway...
 
Agreed -- I was just curious whether we could eliminate a source of
blocking raised in the discussion; and failing that, improve my
grasp of the PostgreSQL MVCC implementation.
 
-Kevin
 




view thread (18+ messages)  latest in thread

Message-ID: <47C59B79.EE98.0025.0@wicourts.gov>
Permalink:  ../47C59B79.EE98.0025.0@wicourts.gov/
Also on:    postgresql.org/message-id/47C59B79.EE98.0025.0@wicourts.gov

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: Kevin.Grittner@wicourts.gov, tgl@sss.pgh.pa.us, jd@commandprompt.com, pjkoczan@gmail.com, scott.marlowe@gmail.com, mbertheau.pg@googlemail.com
  Subject: Re: disabling an index without deleting it?
  In-Reply-To: <47C59B79.EE98.0025.0@wicourts.gov>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox