From: Bruce Momjian Date: Thu, 30 Jan 2014 17:48:21 +0000 (-0500) Subject: docs: add mention of index swapping X-Git-Tag: REL9_3_3~51 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3ec8015d073e5aef10c2618904b20c07bddd904;p=postgresql docs: add mention of index swapping Backpatch to 9.3 Greg Smith --- diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index ca1e82018f..ae6456bc45 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -750,8 +750,9 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu In some situations it is worthwhile to rebuild indexes periodically - with the - command. + with the command or a series of individual + rebuilding steps. + @@ -777,6 +778,23 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu (This consideration does not apply to non-B-tree indexes.) It might be worthwhile to reindex periodically just to improve access speed. + + + can be used safely and easily in all cases. + But since the command requires an exclusive table lock, it is + often preferable to execute an index rebuild with a sequence of + creation and replacement steps. Index types that support + with the CONCURRENTLY + option can instead be recreated that way. If that is successful and the + resulting index is valid, the original index can then be replaced by + the newly built one using a combination of + and . When an index is used to enforce + uniqueness or other constraints, might + be necessary to swap the existing constraint with one enforced by + the new index. Review this alternate multi-step rebuild approach + carefully before using it as there are limitations on which + indexes can be reindexed this way, and errors must be handled. + diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index 01faa3afcf..9a6a683e12 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -405,7 +405,7 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name - If a problem arises while scanning the table, such as a + If a problem arises while scanning the table, such as a deadlock or a uniqueness violation in a unique index, the CREATE INDEX command will fail but leave behind an invalid index. This index will be ignored for querying purposes because it might be incomplete;