Re: Support for REINDEX CONCURRENTLY - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: Support for REINDEX CONCURRENTLY
Date
Msg-id CAB7nPqSLDdCBWVimLiBc6t1C+Lck-GVoK7KdLXo62MX0J5wT8A@mail.gmail.com
Whole thread Raw
In response to Re: Support for REINDEX CONCURRENTLY  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers


On Thu, Oct 4, 2012 at 11:51 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Greg Stark <stark@mit.edu> writes:
> I'm a bit puzzled why we're so afraid of swapping the relfilenodes
> when that's what the current REINDEX does.

Swapping the relfilenodes is fine *as long as you have exclusive lock*.
The trick is to make it safe without that.  It will definitely not work
to do that without exclusive lock, because at the instant you would try
it, people will be accessing the new index (by OID).
OK, so index swapping could be done by:
1) Index name switch. This is not thought as safe as the system does not pay attention on index names at all.

2) relfilenode switch. An ExclusiveLock is necessary.The lock that would be taken is not compatible with a concurrent operation, except if we consider that the lock will not be taken for a long time, only during the swap moment. Reindex uses this mechanism, so it would be good for consistency.

3) Switch the OIDs of indexes. Looks safe from the system prospective and it will be necessary to invalidate the cache entries for both relations after swap. Any opinions on this one?
--
Michael Paquier
http://michael.otacoo.com

pgsql-hackers by date:

Previous
From: Boszormenyi Zoltan
Date:
Subject: Re: [PATCH] Make pg_basebackup configure and start standby [Review]
Next
From: Heikki Linnakangas
Date:
Subject: Re: Re: [WIP] Performance Improvement by reducing WAL for Update Operation