Re: How to rebuild index efficiently

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Ron <ronljohnsonjr(at)gmail(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: How to rebuild index efficiently
Date: 2020-08-04 06:07:37
Message-ID: 20200804060737.GD2091@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Aug 03, 2020 at 01:04:45PM -0500, Ron wrote:
> same definition, and when that is complete, drop the old index. The
> locking that is required here is modest: CREATE INDEX CONCURRENTLY
> needs to lock the table briefly at a couple of points in the
> operation, and dropping the old index requires a brief lock on the
> table. It is, however, much less overall lock time than REINDEX would be.
>
> Of course, you need enough disk space... :)

A SHARE UPDATE EXCLUSIVE lock is taken during a CIC, meaning that
writes and reads are allowed on the parent table while the operation
works, but no DDLs are allowed (roughly). The operation takes a
couple of transactions to complete, and there are two wait points
after building and validating the new index to make sure that there
are no transactions remaining around that may cause visiblity issues
once the new index is ready to use and becomes valid. So the
operation is longer, takes more resources, but it has the advantage to
be non-disruptive.
--
Michael

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ian Lawrence Barwick 2020-08-04 08:24:08 Re: Keeping state in a foreign data wrapper
Previous Message Stelios Sfakianakis 2020-08-04 05:54:14 Re: Keeping state in a foreign data wrapper