Rename pending_list_cleanup_size to gin_pending_list_limit.

Since this parameter is only for GIN index, it's better to
add "gin" to the parameter name for easier understanding.
This commit is contained in:
Fujii Masao 2014-11-13 12:14:48 +09:00
parent 677708032c
commit c291503b1c
13 changed files with 23 additions and 23 deletions

View File

@ -5911,10 +5911,10 @@ SET XML OPTION { DOCUMENT | CONTENT };
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry id="guc-pending-list-cleanup-size" xreflabel="pending_list_cleanup_size"> <varlistentry id="guc-gin-pending-list-limit" xreflabel="gin_pending_list_limit">
<term><varname>pending_list_cleanup_size</varname> (<type>integer</type>) <term><varname>gin_pending_list_limit</varname> (<type>integer</type>)
<indexterm> <indexterm>
<primary><varname>pending_list_cleanup_size</> configuration parameter</primary> <primary><varname>gin_pending_list_limit</> configuration parameter</primary>
</indexterm> </indexterm>
</term> </term>
<listitem> <listitem>

View File

@ -729,7 +729,7 @@
<acronym>GIN</> is capable of postponing much of this work by inserting <acronym>GIN</> is capable of postponing much of this work by inserting
new tuples into a temporary, unsorted list of pending entries. new tuples into a temporary, unsorted list of pending entries.
When the table is vacuumed, or if the pending list becomes larger than When the table is vacuumed, or if the pending list becomes larger than
<xref linkend="guc-pending-list-cleanup-size">, the entries are moved to the <xref linkend="guc-gin-pending-list-limit">, the entries are moved to the
main <acronym>GIN</acronym> data structure using the same bulk insert main <acronym>GIN</acronym> data structure using the same bulk insert
techniques used during initial index creation. This greatly improves techniques used during initial index creation. This greatly improves
<acronym>GIN</acronym> index update speed, even counting the additional <acronym>GIN</acronym> index update speed, even counting the additional
@ -812,22 +812,22 @@
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><xref linkend="guc-pending-list-cleanup-size"></term> <term><xref linkend="guc-gin-pending-list-limit"></term>
<listitem> <listitem>
<para> <para>
During a series of insertions into an existing <acronym>GIN</acronym> During a series of insertions into an existing <acronym>GIN</acronym>
index that has <literal>fastupdate</> enabled, the system will clean up index that has <literal>fastupdate</> enabled, the system will clean up
the pending-entry list whenever the list grows larger than the pending-entry list whenever the list grows larger than
<varname>pending_list_cleanup_size</>. To avoid fluctuations in observed <varname>gin_pending_list_limit</>. To avoid fluctuations in observed
response time, it's desirable to have pending-list cleanup occur in the response time, it's desirable to have pending-list cleanup occur in the
background (i.e., via autovacuum). Foreground cleanup operations background (i.e., via autovacuum). Foreground cleanup operations
can be avoided by increasing <varname>pending_list_cleanup_size</> can be avoided by increasing <varname>gin_pending_list_limit</>
or making autovacuum more aggressive. or making autovacuum more aggressive.
However, enlarging the threshold of the cleanup operation means that However, enlarging the threshold of the cleanup operation means that
if a foreground cleanup does occur, it will take even longer. if a foreground cleanup does occur, it will take even longer.
</para> </para>
<para> <para>
<varname>pending_list_cleanup_size</> can be overridden for individual <varname>gin_pending_list_limit</> can be overridden for individual
GIN indexes by changing storage parameters, and which allows each GIN indexes by changing storage parameters, and which allows each
GIN index to have its own cleanup threshold. GIN index to have its own cleanup threshold.
For example, it's possible to increase the threshold only for the GIN For example, it's possible to increase the threshold only for the GIN

View File

@ -371,10 +371,10 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] <replaceable class=
</variablelist> </variablelist>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><literal>pending_list_cleanup_size</></term> <term><literal>gin_pending_list_limit</></term>
<listitem> <listitem>
<para> <para>
Custom <xref linkend="guc-pending-list-cleanup-size"> parameter. Custom <xref linkend="guc-gin-pending-list-limit"> parameter.
This value is specified in kilobytes. This value is specified in kilobytes.
</para> </para>
</listitem> </listitem>

View File

@ -218,7 +218,7 @@ static relopt_int intRelOpts[] =
}, },
{ {
{ {
"pending_list_cleanup_size", "gin_pending_list_limit",
"Maximum size of the pending list for this GIN index, in kilobytes.", "Maximum size of the pending list for this GIN index, in kilobytes.",
RELOPT_KIND_GIN RELOPT_KIND_GIN
}, },

View File

@ -26,7 +26,7 @@
#include "utils/rel.h" #include "utils/rel.h"
/* GUC parameter */ /* GUC parameter */
int pending_list_cleanup_size = 0; int gin_pending_list_limit = 0;
#define GIN_PAGE_FREESIZE \ #define GIN_PAGE_FREESIZE \
( BLCKSZ - MAXALIGN(SizeOfPageHeaderData) - MAXALIGN(sizeof(GinPageOpaqueData)) ) ( BLCKSZ - MAXALIGN(SizeOfPageHeaderData) - MAXALIGN(sizeof(GinPageOpaqueData)) )
@ -426,7 +426,7 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
* call it when it can do all the work in a single collection cycle. In * call it when it can do all the work in a single collection cycle. In
* non-vacuum mode, it shouldn't require maintenance_work_mem, so fire it * non-vacuum mode, it shouldn't require maintenance_work_mem, so fire it
* while pending list is still small enough to fit into * while pending list is still small enough to fit into
* pending_list_cleanup_size. * gin_pending_list_limit.
* *
* ginInsertCleanup() should not be called inside our CRIT_SECTION. * ginInsertCleanup() should not be called inside our CRIT_SECTION.
*/ */

View File

@ -526,7 +526,7 @@ ginoptions(PG_FUNCTION_ARGS)
int numoptions; int numoptions;
static const relopt_parse_elt tab[] = { static const relopt_parse_elt tab[] = {
{"fastupdate", RELOPT_TYPE_BOOL, offsetof(GinOptions, useFastUpdate)}, {"fastupdate", RELOPT_TYPE_BOOL, offsetof(GinOptions, useFastUpdate)},
{"pending_list_cleanup_size", RELOPT_TYPE_INT, offsetof(GinOptions, {"gin_pending_list_limit", RELOPT_TYPE_INT, offsetof(GinOptions,
pendingListCleanupSize)} pendingListCleanupSize)}
}; };

View File

@ -2543,12 +2543,12 @@ static struct config_int ConfigureNamesInt[] =
}, },
{ {
{"pending_list_cleanup_size", PGC_USERSET, CLIENT_CONN_STATEMENT, {"gin_pending_list_limit", PGC_USERSET, CLIENT_CONN_STATEMENT,
gettext_noop("Sets the maximum size of the pending list for GIN index."), gettext_noop("Sets the maximum size of the pending list for GIN index."),
NULL, NULL,
GUC_UNIT_KB GUC_UNIT_KB
}, },
&pending_list_cleanup_size, &gin_pending_list_limit,
4096, 64, MAX_KILOBYTES, 4096, 64, MAX_KILOBYTES,
NULL, NULL, NULL NULL, NULL, NULL
}, },

View File

@ -519,7 +519,7 @@
#bytea_output = 'hex' # hex, escape #bytea_output = 'hex' # hex, escape
#xmlbinary = 'base64' #xmlbinary = 'base64'
#xmloption = 'content' #xmloption = 'content'
#pending_list_cleanup_size = 4MB #gin_pending_list_limit = 4MB
# - Locale and Formatting - # - Locale and Formatting -

View File

@ -1172,7 +1172,7 @@ psql_completion(const char *text, int start, int end)
pg_strcasecmp(prev_wd, "(") == 0) pg_strcasecmp(prev_wd, "(") == 0)
{ {
static const char *const list_INDEXOPTIONS[] = static const char *const list_INDEXOPTIONS[] =
{"fillfactor", "fastupdate", "pending_list_cleanup_size", NULL}; {"fillfactor", "fastupdate", "gin_pending_list_limit", NULL};
COMPLETE_WITH_LIST(list_INDEXOPTIONS); COMPLETE_WITH_LIST(list_INDEXOPTIONS);
} }

View File

@ -67,7 +67,7 @@ typedef char GinTernaryValue;
/* GUC parameters */ /* GUC parameters */
extern PGDLLIMPORT int GinFuzzySearchLimit; extern PGDLLIMPORT int GinFuzzySearchLimit;
extern int pending_list_cleanup_size; extern int gin_pending_list_limit;
/* ginutil.c */ /* ginutil.c */
extern void ginGetStats(Relation index, GinStatsData *stats); extern void ginGetStats(Relation index, GinStatsData *stats);

View File

@ -326,7 +326,7 @@ typedef struct GinOptions
((relation)->rd_options && \ ((relation)->rd_options && \
((GinOptions *) (relation)->rd_options)->pendingListCleanupSize != -1 ? \ ((GinOptions *) (relation)->rd_options)->pendingListCleanupSize != -1 ? \
((GinOptions *) (relation)->rd_options)->pendingListCleanupSize : \ ((GinOptions *) (relation)->rd_options)->pendingListCleanupSize : \
pending_list_cleanup_size) gin_pending_list_limit)
/* Macros for buffer lock/unlock operations */ /* Macros for buffer lock/unlock operations */

View File

@ -2244,14 +2244,14 @@ DROP TABLE array_gin_test;
-- Test GIN index's reloptions -- Test GIN index's reloptions
-- --
CREATE INDEX gin_relopts_test ON array_index_op_test USING gin (i) CREATE INDEX gin_relopts_test ON array_index_op_test USING gin (i)
WITH (FASTUPDATE=on, PENDING_LIST_CLEANUP_SIZE=128); WITH (FASTUPDATE=on, GIN_PENDING_LIST_LIMIT=128);
\d+ gin_relopts_test \d+ gin_relopts_test
Index "public.gin_relopts_test" Index "public.gin_relopts_test"
Column | Type | Definition | Storage Column | Type | Definition | Storage
--------+---------+------------+--------- --------+---------+------------+---------
i | integer | i | plain i | integer | i | plain
gin, for table "public.array_index_op_test" gin, for table "public.array_index_op_test"
Options: fastupdate=on, pending_list_cleanup_size=128 Options: fastupdate=on, gin_pending_list_limit=128
-- --
-- HASH -- HASH

View File

@ -658,7 +658,7 @@ DROP TABLE array_gin_test;
-- Test GIN index's reloptions -- Test GIN index's reloptions
-- --
CREATE INDEX gin_relopts_test ON array_index_op_test USING gin (i) CREATE INDEX gin_relopts_test ON array_index_op_test USING gin (i)
WITH (FASTUPDATE=on, PENDING_LIST_CLEANUP_SIZE=128); WITH (FASTUPDATE=on, GIN_PENDING_LIST_LIMIT=128);
\d+ gin_relopts_test \d+ gin_relopts_test
-- --