diff options
author | Noah Misch <noah@leadboat.com> | 2020-03-22 09:24:09 -0700 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2020-03-22 09:24:15 -0700 |
commit | 348f15e22e9456bf53bba1a1ca4e2279fb3e507a (patch) | |
tree | db1e69dcebf5fc5131b908b3abfb386a9f768bd3 /doc/src | |
parent | a653bd8aa76e7c734388cc39663f45f9c8483b0f (diff) |
Revert "Skip WAL for new relfilenodes, under wal_level=minimal."
This reverts commit cb2fd7eac285b1b0a24eeb2b8ed4456b66c5a09f. Per
numerous buildfarm members, it was incompatible with parallel query, and
a test case assumed LP64. Back-patch to 9.5 (all supported versions).
Discussion: https://postgr.es/m/20200321224920.GB1763544@rfd.leadboat.com
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/config.sgml | 41 | ||||
-rw-r--r-- | doc/src/sgml/perform.sgml | 43 |
2 files changed, 45 insertions, 39 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index aa46cc78fcd..92681cf4530 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -2171,19 +2171,16 @@ include_dir 'conf.d' levels. This parameter can only be set at server start. </para> <para> - 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: + 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: <simplelist> - <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> + <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> </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 @@ -2572,26 +2569,6 @@ 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 981080e92d9..9a1c21a5425 100644 --- a/doc/src/sgml/perform.sgml +++ b/doc/src/sgml/perform.sgml @@ -1394,13 +1394,42 @@ 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 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.) + 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> </para> </sect2> |