1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Allow the wal_buffers setting to be auto-tuned to a reasonable value.

If wal_buffers is initially set to -1 (which is now the default), it's
replaced by 1/32nd of shared_buffers, with a minimum of 8 (the old default)
and a maximum of the XLOG segment size.  The allowed range for manual
settings is still from 4 up to whatever will fit in shared memory.

Greg Smith, with implementation correction by me.
This commit is contained in:
Tom Lane
2011-01-22 20:31:24 -05:00
parent 518b1e96c0
commit 0f73aae13d
4 changed files with 61 additions and 9 deletions

View File

@ -1638,12 +1638,25 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm>
<listitem>
<para>
The amount of memory used in shared memory for WAL data. The
default is 64 kilobytes (<literal>64kB</>). The setting need only
be large enough to hold the amount of WAL data generated by one
typical transaction, since the data is written out to disk at
every transaction commit. This parameter can only be set at server
start.
The amount of shared memory used for WAL data that has not yet been
written to disk. The default setting of -1 selects a size equal to
1/32nd (about 3%) of <xref linkend="guc-shared-buffers">, but not less
than <literal>64kB</literal> nor more than the size of one WAL
segment, typically <literal>16MB</literal>. This value can be set
manually if the automatic choice is too large or too small,
but any positive value less than <literal>32kB</literal> will be
treated as <literal>32kB</literal>.
This parameter can only be set at server start.
</para>
<para>
The contents of the WAL buffers are written out to disk at every
transaction commit, so extremely large values are unlikely to
provide a significant benefit. However, setting this value to at
least a few megabytes can improve write performance on a busy
server where many clients are committing at once. The auto-tuning
selected by the default setting of -1 should give reasonable
results in most cases.
</para>
<para>