summaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/config.sgml41
-rw-r--r--doc/src/sgml/perform.sgml43
2 files changed, 39 insertions, 45 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 92681cf4530..aa46cc78fcd 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2171,16 +2171,19 @@ include_dir 'conf.d'
levels. This parameter can only be set at server start.
</para>
<para>
- In <literal>minimal</> level, WAL-logging of some bulk
- operations can be safely skipped, which can make those
- operations much faster (see <xref linkend="populate-pitr">).
- Operations in which this optimization can be applied include:
+ In <literal>minimal</literal> level, no information is logged for
+ permanent relations for the remainder of a transaction that creates or
+ rewrites them. This can make operations much faster (see
+ <xref linkend="populate-pitr">). Operations that initiate this
+ optimization include:
<simplelist>
- <member><command>CREATE TABLE AS</></member>
- <member><command>CREATE INDEX</></member>
- <member><command>CLUSTER</></member>
- <member><command>COPY</> into tables that were created or truncated in the same
- transaction</member>
+ <member><command>ALTER ... SET TABLESPACE</command></member>
+ <member><command>CLUSTER</command></member>
+ <member><command>CREATE TABLE</command></member>
+ <member><command>REFRESH MATERIALIZED VIEW</command>
+ (without <option>CONCURRENTLY</option>)</member>
+ <member><command>REINDEX</command></member>
+ <member><command>TRUNCATE</command></member>
</simplelist>
But minimal WAL does not contain enough information to reconstruct the
data from a base backup and the WAL logs, so <literal>replica</> or
@@ -2569,6 +2572,26 @@ include_dir 'conf.d'
</listitem>
</varlistentry>
+ <varlistentry id="guc-wal-skip-threshold" xreflabel="wal_skip_threshold">
+ <term><varname>wal_skip_threshold</varname> (<type>integer</type>)
+ <indexterm>
+ <primary><varname>wal_skip_threshold</varname> configuration parameter</primary>
+ </indexterm>
+ </term>
+ <listitem>
+ <para>
+ When <varname>wal_level</varname> is <literal>minimal</literal> and a
+ transaction commits after creating or rewriting a permanent relation,
+ this setting determines how to persist the new data. If the data is
+ smaller than this setting, write it to the WAL log; otherwise, use an
+ fsync of affected files. Depending on the properties of your storage,
+ raising or lowering this value might help if such commits are slowing
+ concurrent transactions. The default is two megabytes
+ (<literal>2MB</literal>).
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="guc-commit-delay" xreflabel="commit_delay">
<term><varname>commit_delay</varname> (<type>integer</type>)
<indexterm>
diff --git a/doc/src/sgml/perform.sgml b/doc/src/sgml/perform.sgml
index 9a1c21a5425..981080e92d9 100644
--- a/doc/src/sgml/perform.sgml
+++ b/doc/src/sgml/perform.sgml
@@ -1394,42 +1394,13 @@ SELECT * FROM x, y, a, b, c WHERE something AND somethingelse;
</para>
<para>
- Aside from avoiding the time for the archiver or WAL sender to
- process the WAL data,
- doing this will actually make certain commands faster, because they
- are designed not to write WAL at all if <varname>wal_level</varname>
- is <literal>minimal</>. (They can guarantee crash safety more cheaply
- by doing an <function>fsync</> at the end than by writing WAL.)
- This applies to the following commands:
- <itemizedlist>
- <listitem>
- <para>
- <command>CREATE TABLE AS SELECT</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>CREATE INDEX</command> (and variants such as
- <command>ALTER TABLE ADD PRIMARY KEY</command>)
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER TABLE SET TABLESPACE</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>CLUSTER</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>COPY FROM</command>, when the target table has been
- created or truncated earlier in the same transaction
- </para>
- </listitem>
- </itemizedlist>
+ Aside from avoiding the time for the archiver or WAL sender to process the
+ WAL data, doing this will actually make certain commands faster, because
+ they do not to write WAL at all if <varname>wal_level</varname>
+ is <literal>minimal</literal> and the current subtransaction (or top-level
+ transaction) created or truncated the table or index they change. (They
+ can guarantee crash safety more cheaply by doing
+ an <function>fsync</function> at the end than by writing WAL.)
</para>
</sect2>