Provide better guidance for adjusting shared_buffers.

This change was previously committed to HEAD, but the consensus seems to be
in favor of back-patching it.  I'm only backpatching as far as 8.3.X, however,
because it's not clear to me to what degree this advice applies to older
branches, and in any case our first advice to anyone attempting to tune those
versions is likely to be "upgrade".
This commit is contained in:
Robert Haas 2010-04-18 23:59:55 +00:00
parent b2bc12af46
commit a696df1b57

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.220.2.3 2010/03/17 18:04:29 mha Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.220.2.4 2010/04/18 23:59:55 rhaas Exp $ -->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@ -757,9 +757,32 @@ SET ENABLE_SEQSCAN TO OFF;
This setting must be at least 128 kilobytes. (Non-default
values of <symbol>BLCKSZ</symbol> change the minimum.) However,
settings significantly higher than the minimum are usually needed
for good performance. Several tens of megabytes are recommended
for production installations. This parameter can only be set at
server start.
for good performance. This parameter can only be set at server start.
</para>
<para>
If you have a dedicated database server with 1GB or more of RAM, a
reasonable starting value for <varname>shared_buffers</varname> is 25%
of the memory in your system. There are some workloads where even
large settings for <varname>shared_buffers</varname> are effective, but
because <productname>PostgreSQL</productname> also relies on the
operating system cache, it is unlikely that an allocation of more than
40% of RAM to <varname>shared_buffers</varname> will work better than a
smaller amount. Larger settings for <varname>shared_buffers</varname>
usually require a corresponding increase in
<varname>checkpoint_segments</varname>, in order to spread out the
process of writing large quantities of new or changed data over a
longer period of time.
</para>
<para>
On systems with less than 1GB of RAM, a smaller percentage of RAM is
appropriate, so as to leave adequate space for the operating system.
Also, on Windows, large values for <varname>shared_buffers</varname>
aren't as effective. You may find better results keeping the setting
relatively low and using the operating system cache more instead. The
useful range for <varname>shared_buffers</varname> on Windows systems
is generally from 64MB to 512MB.
</para>
<para>