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:
parent
677708032c
commit
c291503b1c
@ -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>
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
},
|
},
|
||||||
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
@ -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)}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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
|
||||||
},
|
},
|
||||||
|
@ -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 -
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
--
|
--
|
||||||
|
Loading…
x
Reference in New Issue
Block a user