diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/config.sgml | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 2f04702b6e5..f9ba1487822 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -2041,6 +2041,42 @@ include_dir 'conf.d' </para> </listitem> </varlistentry> + + <varlistentry id="guc-old-snapshot-threshold" xreflabel="old_snapshot_threshold"> + <term><varname>old_snapshot_threshold</varname> (<type>integer</type>) + <indexterm> + <primary><varname>old_snapshot_threshold</> configuration parameter</primary> + </indexterm> + </term> + <listitem> + <para> + Sets the minimum time that a snapshot can be used without risk of a + <literal>snapshot too old</> error occurring when using the snapshot. + This parameter can only be set at server start. + </para> + + <para> + Beyond the threshold, old data may be vacuumed away. This can help + prevent bloat in the face of snapshots which remain in use for a + long time. To prevent incorrect results due to cleanup of data which + would otherwise be visible to the snapshot, an error is generated + when the snapshot is older than this threshold and the snapshot is + used to read a page which has been modified since the snapshot was + built. + </para> + + <para> + A value of <literal>-1</> disables this feature, and is the default. + Useful values for production work probably range from a small number + of hours to a few days. The setting will be coerced to a granularity + of minutes, and small numbers (such as <literal>0</> or + <literal>1min</>) are only allowed because they may sometimes be + useful for testing. While a setting as high as <literal>60d</> is + allowed, please note that in many workloads extreme bloat or + transaction ID wraparound may occur in much shorter time frames. + </para> + </listitem> + </varlistentry> </variablelist> </sect2> </sect1> @@ -3051,6 +3087,10 @@ include_dir 'conf.d' You should also consider setting <varname>hot_standby_feedback</> on standby server(s) as an alternative to using this parameter. </para> + <para> + This does not prevent cleanup of dead rows which have reached the age + specified by <varname>old_snapshot_threshold</>. + </para> </listitem> </varlistentry> @@ -3198,6 +3238,16 @@ include_dir 'conf.d' until it eventually reaches the primary. Standbys make no other use of feedback they receive other than to pass upstream. </para> + <para> + This setting does not override the behavior of + <varname>old_snapshot_threshold</> on the primary; a snapshot on the + standby which exceeds the primary's age threshold can become invalid, + resulting in cancellation of transactions on the standby. This is + because <varname>old_snapshot_threshold</> is intended to provide an + absolute limit on the time which dead rows can contribute to bloat, + which would otherwise be violated because of the configuration of a + standby. + </para> </listitem> </varlistentry> |