mirror of
https://github.com/postgres/postgres.git
synced 2025-08-06 18:42:54 +03:00
Add option SKIP_LOCKED to VACUUM and ANALYZE
When specified, this option allows VACUUM to skip the work on a relation if there is a conflicting lock on it when trying to open it at the beginning of its processing. Similarly to autovacuum, this comes with a couple of limitations while the relation is processed which can cause the process to still block: - when opening the relation indexes. - when acquiring row samples for table inheritance trees, partition trees or certain types of foreign tables, and that a lock is taken on some leaves of such trees. Author: Nathan Bossart Reviewed-by: Michael Paquier, Andres Freund, Masahiko Sawada Discussion: https://postgr.es/m/9EF7EBE4-720D-4CF1-9D0E-4403D7E92990@amazon.com Discussion: https://postgr.es/m/20171201160907.27110.74730@wrigleys.postgresql.org
This commit is contained in:
@@ -27,6 +27,7 @@ ANALYZE [ VERBOSE ] [ <replaceable class="parameter">table_and_columns</replacea
|
||||
<phrase>where <replaceable class="parameter">option</replaceable> can be one of:</phrase>
|
||||
|
||||
VERBOSE
|
||||
SKIP_LOCKED
|
||||
|
||||
<phrase>and <replaceable class="parameter">table_and_columns</replaceable> is:</phrase>
|
||||
|
||||
@@ -76,6 +77,24 @@ ANALYZE [ VERBOSE ] [ <replaceable class="parameter">table_and_columns</replacea
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>SKIP_LOCKED</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies that <command>ANALYZE</command> should not wait for any
|
||||
conflicting locks to be released when beginning work on a relation:
|
||||
if a relation cannot be locked immediately without waiting, the relation
|
||||
is skipped. Note that even with this option, <command>ANALYZE</command>
|
||||
may still block when opening the relation's indexes or when acquiring
|
||||
sample rows from partitions, table inheritance children, and some
|
||||
types of foreign tables. Also, while <command>ANALYZE</command>
|
||||
ordinarily processes all partitions of specified partitioned tables,
|
||||
this option will cause <command>ANALYZE</command> to skip all
|
||||
partitions if there is a conflicting lock on the partitioned table.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">table_name</replaceable></term>
|
||||
<listitem>
|
||||
|
@@ -31,6 +31,7 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ <replaceable class="paramet
|
||||
VERBOSE
|
||||
ANALYZE
|
||||
DISABLE_PAGE_SKIPPING
|
||||
SKIP_LOCKED
|
||||
|
||||
<phrase>and <replaceable class="parameter">table_and_columns</replaceable> is:</phrase>
|
||||
|
||||
@@ -160,6 +161,26 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ <replaceable class="paramet
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>SKIP_LOCKED</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies that <command>VACUUM</command> should not wait for any
|
||||
conflicting locks to be released when beginning work on a relation:
|
||||
if a relation cannot be locked immediately without waiting, the relation
|
||||
is skipped. Note that even with this option,
|
||||
<command>VACUUM</command> may still block when opening the relation's
|
||||
indexes. Additionally, <command>VACUUM ANALYZE</command> may still
|
||||
block when acquiring sample rows from partitions, table inheritance
|
||||
children, and some types of foreign tables. Also, while
|
||||
<command>VACUUM</command> ordinarily processes all partitions of
|
||||
specified partitioned tables, this option will cause
|
||||
<command>VACUUM</command> to skip all partitions if there is a
|
||||
conflicting lock on the partitioned table.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">table_name</replaceable></term>
|
||||
<listitem>
|
||||
|
Reference in New Issue
Block a user