]> granicus.if.org Git - postgresql/commitdiff
docs: add mention of index swapping
authorBruce Momjian <bruce@momjian.us>
Thu, 30 Jan 2014 17:48:21 +0000 (12:48 -0500)
committerBruce Momjian <bruce@momjian.us>
Thu, 30 Jan 2014 17:48:21 +0000 (12:48 -0500)
Backpatch to 9.3

Greg Smith

doc/src/sgml/maintenance.sgml
doc/src/sgml/ref/create_index.sgml

index ca1e82018f9a1e935ebf4e05bf799a909c9de8e1..ae6456bc45ec701712ef1a53389c23ba2217186a 100644 (file)
@@ -750,8 +750,9 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu
 
   <para>
    In some situations it is worthwhile to rebuild indexes periodically
-   with the <xref linkend="sql-reindex">
-   command.
+   with the <xref linkend="sql-reindex"> command or a series of individual
+   rebuilding steps.
+
   </para>
 
   <para>
@@ -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.
   </para>
+
+  <para>
+   <xref linkend="sql-reindex"> 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
+   <xref linkend="sql-createindex"> with the <literal>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 <xref linkend="sql-alterindex">
+   and <xref linkend="sql-dropindex">. When an index is used to enforce
+   uniqueness or other constraints, <xref linkend="sql-altertable"> 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.
+  </para>
  </sect1>
 
 
index 01faa3afcf78bd2feb3255c4db18e994ff11e38e..9a6a683e12d41c7928568a5b00348174f3225c1d 100644 (file)
@@ -405,7 +405,7 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ <replaceable class="parameter">name</
    </para>
 
    <para>
-    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 <command>CREATE INDEX</>
     command will fail but leave behind an <quote>invalid</> index. This index
     will be ignored for querying purposes because it might be incomplete;