Re: REINDEX and blocking SELECT queries

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Satoshi Nagayasu <snaga(at)uptime(dot)jp>
Cc: pgsql-docs(at)postgresql(dot)org
Subject: Re: REINDEX and blocking SELECT queries
Date: 2016-09-09 13:41:36
Message-ID: 19413.1473428496@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

Satoshi Nagayasu <snaga(at)uptime(dot)jp> writes:
> According to the manual, running REINDEX does not take any locks
> on the parent table which block read operations.
> Actually, REINDEX blocks SELECT queries, maybe in the planning phase.

Hm. REINDEX does take out only ShareLock on the table, which would not
block DML, but it takes out AccessExclusiveLock on the index. That
blocks the planner's attempts to acquire information about the table's
indexes.

In the case of an update query I think there's little we can do about
this; the executor would have to update the index anyway. For a pure
SELECT, you could imagine having the planner do a conditional lock acquire
and ignore the index if that fails. Would that be better than blocking?
Not sure. You could end up with a really bad plan if the index was
critical for efficient processing of the query.

regards, tom lane

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Vik Fearing 2016-09-09 13:52:20 Re: REINDEX and blocking SELECT queries
Previous Message Satoshi Nagayasu 2016-09-09 11:48:23 REINDEX and blocking SELECT queries