mirror of
https://github.com/postgres/postgres.git
synced 2025-08-18 12:22:09 +03:00
Implement "fastupdate" support for GIN indexes, in which we try to accumulate
multiple index entries in a holding area before adding them to the main index structure. This helps because bulk insert is (usually) significantly faster than retail insert for GIN. This patch also removes GIN support for amgettuple-style index scans. The API defined for amgettuple is difficult to support with fastupdate, and the previously committed partial-match feature didn't really work with it either. We might eventually figure a way to put back amgettuple support, but it won't happen for 8.4. catversion bumped because of change in GIN's pg_am entry, and because the format of GIN indexes changed on-disk (there's a metapage now, and possibly a pending list). Teodor Sigaev
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/ref/create_index.sgml,v 1.70 2009/02/02 19:31:38 alvherre Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/ref/create_index.sgml,v 1.71 2009/03/24 20:17:08 tgl Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
@@ -294,6 +294,37 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] <replaceable class="parameter">name</re
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>
|
||||
<literal>GIN</literal> indexes accept a different parameter:
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>FASTUPDATE</></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This setting controls usage of the fast update technique described in
|
||||
<xref linkend="gin-fast-update">. It is a Boolean parameter:
|
||||
<literal>ON</> enables fast update, <literal>OFF</> disables it.
|
||||
(Alternative spellings of <literal>ON</> and <literal>OFF</> are
|
||||
allowed as described in <xref linkend="config-setting">.) The
|
||||
default is <literal>ON</>.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
Turning <literal>FASTUPDATE</> off via <command>ALTER INDEX</> prevents
|
||||
future insertions from going into the list of pending index entries,
|
||||
but does not in itself flush previous entries. You might want to
|
||||
<command>VACUUM</> the table afterward to ensure the pending list is
|
||||
emptied.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="SQL-CREATEINDEX-CONCURRENTLY">
|
||||
@@ -501,6 +532,13 @@ CREATE UNIQUE INDEX title_idx ON films (title) WITH (fillfactor = 70);
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To create a <acronym>GIN</> index with fast updates disabled:
|
||||
<programlisting>
|
||||
CREATE INDEX gin_idx ON documents_table (locations) WITH (fastupdate = off);
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To create an index on the column <literal>code</> in the table
|
||||
<literal>films</> and have the index reside in the tablespace
|
||||
|
Reference in New Issue
Block a user