summaryrefslogtreecommitdiff
path: root/doc/src/sgml/config.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/config.sgml')
-rw-r--r--doc/src/sgml/config.sgml307
1 files changed, 161 insertions, 146 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 077039e3e1..d6c739d96b 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.248 2010/02/01 13:40:28 sriggs Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.249 2010/02/03 17:25:05 momjian Exp $ -->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@@ -21,10 +21,10 @@
<para>
All parameter names are case-insensitive. Every parameter takes a
value of one of five types: Boolean, integer, floating point,
- string or enum. Boolean values can be written as <literal>ON</literal>,
- <literal>OFF</literal>, <literal>TRUE</literal>,
- <literal>FALSE</literal>, <literal>YES</literal>,
- <literal>NO</literal>, <literal>1</literal>, <literal>0</literal>
+ string or enum. Boolean values can be written as <literal>on</literal>,
+ <literal>off</literal>, <literal>true</literal>,
+ <literal>false</literal>, <literal>yes</literal>,
+ <literal>no</literal>, <literal>1</literal>, <literal>0</literal>
(all case-insensitive) or any unambiguous prefix of these.
</para>
@@ -66,8 +66,8 @@ shared_buffers = 128MB
</programlisting>
One parameter is specified per line. The equal sign between name and
value is optional. Whitespace is insignificant and blank lines are
- ignored. Hash marks (<literal>#</literal>) introduce comments
- anywhere. Parameter values that are not simple identifiers or
+ ignored. Hash marks (<literal>#</literal>) designate the rest of the
+ line as a comment. Parameter values that are not simple identifiers or
numbers must be single-quoted. To embed a single quote in a parameter
value, write either two quotes (preferred) or backslash-quote.
</para>
@@ -155,9 +155,9 @@ SET ENABLE_SEQSCAN TO OFF;
values for the parameter. Some parameters cannot be changed via
<command>SET</command>: for example, if they control behavior that
cannot be changed without restarting the entire
- <productname>PostgreSQL</productname> server. Also, some parameters can
- be modified via <command>SET</command> or <command>ALTER</> by superusers,
- but not by ordinary users.
+ <productname>PostgreSQL</productname> server. Also,
+ some <command>SET</command> or <command>ALTER</> parameter modifications
+ require superuser permission.
</para>
<para>
@@ -329,7 +329,7 @@ SET ENABLE_SEQSCAN TO OFF;
at all, in which case only Unix-domain sockets can be used to connect
to it.
The default value is <systemitem class="systemname">localhost</>,
- which allows only local <quote>loopback</> connections to be
+ which allows only local TCP/IP <quote>loopback</> connections to be
made. While client authentication (<xref
linkend="client-authentication">) allows fine-grained control
over who can access the server, <varname>listen_addresses</varname>
@@ -440,8 +440,8 @@ SET ENABLE_SEQSCAN TO OFF;
server.) In combination with the parameter
<varname>unix_socket_permissions</varname> this can be used as
an additional access control mechanism for Unix-domain connections.
- By default this is the empty string, which selects the default
- group for the current user. This parameter can only be set at
+ By default this is the empty string, which uses the default
+ group of the server user. This parameter can only be set at
server start.
</para>
</listitem>
@@ -457,7 +457,7 @@ SET ENABLE_SEQSCAN TO OFF;
Sets the access permissions of the Unix-domain socket. Unix-domain
sockets use the usual Unix file system permission set.
The parameter value is expected to be a numeric mode
- specification in the form accepted by the
+ specified in the format accepted by the
<function>chmod</function> and <function>umask</function>
system calls. (To use the customary octal format the number
must start with a <literal>0</literal> (zero).)
@@ -469,7 +469,7 @@ SET ENABLE_SEQSCAN TO OFF;
<literal>0770</literal> (only user and group, see also
<varname>unix_socket_group</varname>) and <literal>0700</literal>
(only user). (Note that for a Unix-domain socket, only write
- permission matters and so there is no point in setting or revoking
+ permission matters, so there is no point in setting or revoking
read or execute permissions.)
</para>
@@ -581,7 +581,7 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
Maximum time to complete client authentication, in seconds. If a
would-be client has not completed the authentication protocol in
- this much time, the server breaks the connection. This prevents
+ this much time, the server closes the connection. This prevents
hung clients from occupying a connection indefinitely.
The default is one minute (<literal>1m</>).
This parameter can only be set in the <filename>postgresql.conf</>
@@ -707,8 +707,9 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
With this parameter enabled, you can still create ordinary global
users. Simply append <literal>@</> when specifying the user
- name in the client. The <literal>@</> will be stripped off
- before the user name is looked up by the server.
+ name in the client, e.g. <literal>joe@</>. The <literal>@</>
+ will be stripped off before the user name is looked up by the
+ server.
</para>
<para>
@@ -783,15 +784,15 @@ SET ENABLE_SEQSCAN TO OFF;
session. These are session-local buffers used only for access to
temporary tables. The default is eight megabytes
(<literal>8MB</>). The setting can be changed within individual
- sessions, but only up until the first use of temporary tables
- within a session; subsequent attempts to change the value will
+ sessions, but only before the first use of temporary tables
+ within the session; subsequent attempts to change the value will
have no effect on that session.
</para>
<para>
A session will allocate temporary buffers as needed up to the limit
given by <varname>temp_buffers</>. The cost of setting a large
- value in sessions that do not actually need a lot of temporary
+ value in sessions that do not actually need many temporary
buffers is only a buffer descriptor, or about 64 bytes, per
increment in <varname>temp_buffers</>. However if a buffer is
actually used an additional 8192 bytes will be consumed for it
@@ -849,13 +850,13 @@ SET ENABLE_SEQSCAN TO OFF;
<listitem>
<para>
Specifies the amount of memory to be used by internal sort operations
- and hash tables before switching to temporary disk files. The value
+ and hash tables before writing to temporary disk files. The value
defaults to one megabyte (<literal>1MB</>).
Note that for a complex query, several sort or hash operations might be
- running in parallel; each one will be allowed to use as much memory
- as this value specifies before it starts to put data into temporary
+ running in parallel; each operation will be allowed to use as much memory
+ as this value specifies before it starts to write data into temporary
files. Also, several running sessions could be doing such operations
- concurrently. So the total memory used could be many
+ concurrently. Therefore, the total memory used could be many
times the value of <varname>work_mem</varname>; it is necessary to
keep this fact in mind when choosing the value. Sort operations are
used for <literal>ORDER BY</>, <literal>DISTINCT</>, and
@@ -873,7 +874,7 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm>
<listitem>
<para>
- Specifies the maximum amount of memory to be used in maintenance
+ Specifies the maximum amount of memory to be used by maintenance
operations, such as <command>VACUUM</command>, <command>CREATE
INDEX</>, and <command>ALTER TABLE ADD FOREIGN KEY</>. It defaults
to 16 megabytes (<literal>16MB</>). Since only one of these
@@ -916,9 +917,9 @@ SET ENABLE_SEQSCAN TO OFF;
the actual kernel limit will mean that a runaway recursive function
can crash an individual backend process. On platforms where
<productname>PostgreSQL</productname> can determine the kernel limit,
- it will not let you set this variable to an unsafe value. However,
- not all platforms provide the information, so caution is recommended
- in selecting a value.
+ the server will not allow this variable to be set to an unsafe
+ value. However, not all platforms provide the information,
+ so caution is recommended in selecting a value.
</para>
</listitem>
</varlistentry>
@@ -942,7 +943,7 @@ SET ENABLE_SEQSCAN TO OFF;
a safe per-process limit, you don't need to worry about this setting.
But on some platforms (notably, most BSD systems), the kernel will
allow individual processes to open many more files than the system
- can really support when a large number of processes all try to open
+ can actually support if many processes all try to open
that many files. If you find yourself seeing <quote>Too many open
files</> failures, try reducing this setting.
This parameter can only be set at server start.
@@ -957,14 +958,14 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm>
<listitem>
<para>
- This variable specifies one or more shared libraries that are
- to be preloaded at server start. If more than one library is to be
- loaded, separate their names with commas. For example,
+ This variable specifies one or more shared libraries
+ to be preloaded at server start. For example,
<literal>'$libdir/mylib'</literal> would cause
<literal>mylib.so</> (or on some platforms,
<literal>mylib.sl</>) to be preloaded from the installation's
standard library directory.
- This parameter can only be set at server start.
+ If more than one library is to be loaded, separate their names
+ with commas. This parameter can only be set at server start.
</para>
<para>
@@ -1024,15 +1025,15 @@ SET ENABLE_SEQSCAN TO OFF;
various I/O operations that are performed. When the accumulated
cost reaches a limit (specified by
<varname>vacuum_cost_limit</varname>), the process performing
- the operation will sleep for a while (specified by
- <varname>vacuum_cost_delay</varname>). Then it will reset the
+ the operation will sleep for a short period of time, as specified by
+ <varname>vacuum_cost_delay</varname>. Then it will reset the
counter and continue execution.
</para>
<para>
The intent of this feature is to allow administrators to reduce
the I/O impact of these commands on concurrent database
- activity. There are many situations in which it is not very
+ activity. There are many situations where it is not
important that maintenance commands like
<command>VACUUM</command> and <command>ANALYZE</command> finish
quickly; however, it is usually very important that these
@@ -1156,15 +1157,15 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
There is a separate server
process called the <firstterm>background writer</>, whose function
- is to issue writes of <quote>dirty</> shared buffers. The intent is
- that server processes handling user queries should seldom or never have
- to wait for a write to occur, because the background writer will do it.
- However there is a net overall
- increase in I/O load, because a repeatedly-dirtied page might
- otherwise be written only once per checkpoint interval, but the
- background writer might write it several times in the same interval.
- The parameters discussed in this subsection can be used to
- tune the behavior for local needs.
+ is to issue writes of <quote>dirty</> (new or modified) shared
+ buffers. It writes shared buffers so server processes handling
+ user queries seldom or never need to wait for a write to occur.
+ However, the background writer does cause a net overall
+ increase in I/O load, because while a repeatedly-dirtied page might
+ otherwise be written only once per checkpoint interval, the
+ background writer might write it several times as it is dirtied
+ in the same interval. The parameters discussed in this subsection
+ can be used to tune the behavior for local needs.
</para>
<variablelist>
@@ -1329,7 +1330,9 @@ SET ENABLE_SEQSCAN TO OFF;
allowed to do its best in buffering, ordering, and delaying
writes. This can result in significantly improved performance.
However, if the system crashes, the results of the last few
- committed transactions might be lost in part or whole. In the
+ committed transactions might be completely lost, or worse,
+ might appear partially committed, leaving the database in an
+ inconsistent state. In the
worst case, unrecoverable data corruption might occur.
(Crashes of the database software itself are <emphasis>not</>
a risk factor here. Only an operating-system-level crash
@@ -1357,7 +1360,7 @@ SET ENABLE_SEQSCAN TO OFF;
</para>
<para>
- This parameter can only be set in the <filename>postgresql.conf</>
+ <varname>fsync</varname> can only be set in the <filename>postgresql.conf</>
file or on the server command line.
If you turn this parameter off, also consider turning off
<xref linkend="guc-full-page-writes">.
@@ -1409,7 +1412,7 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
Method used for forcing WAL updates out to disk.
If <varname>fsync</varname> is off then this setting is irrelevant,
- since updates will not be forced out at all.
+ since WAL file updates will not be forced out at all.
Possible values are:
</para>
<itemizedlist>
@@ -1468,8 +1471,8 @@ SET ENABLE_SEQSCAN TO OFF;
that contains a mix of old and new data. The row-level change data
normally stored in WAL will not be enough to completely restore
such a page during post-crash recovery. Storing the full page image
- guarantees that the page can be correctly restored, but at a price
- in increasing the amount of data that must be written to WAL.
+ guarantees that the page can be correctly restored, but at the price
+ of increasing the amount of data that must be written to WAL.
(Because WAL replay always starts from a checkpoint, it is sufficient
to do this during the first change of each page after a checkpoint.
Therefore, one way to reduce the cost of full-page writes is to
@@ -1483,7 +1486,7 @@ SET ENABLE_SEQSCAN TO OFF;
<varname>fsync</>, though smaller. It might be safe to turn off
this parameter if you have hardware (such as a battery-backed disk
controller) or file-system software that reduces
- the risk of partial page writes to an acceptably low level (e.g., ReiserFS 4).
+ the risk of partial page writes to an acceptably low level (e.g., ZFS).
</para>
<para>
@@ -1630,8 +1633,8 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm>
<listitem>
<para>
- Specifies the target length of checkpoints, as a fraction of
- the checkpoint interval. The default is 0.5.
+ Specifies the target of checkpoint completion, as a fraction of
+ total time between checkpoints. The default is 0.5.
This parameter can only be set in the <filename>postgresql.conf</>
file or on the server command line.
@@ -1671,7 +1674,7 @@ SET ENABLE_SEQSCAN TO OFF;
<listitem>
<para>
When <varname>archive_mode</> is enabled, completed WAL segments
- can be sent to archive storage by setting
+ are sent to archive storage by setting
<xref linkend="guc-archive-command">.
<varname>archive_mode</> and <varname>archive_command</> are
separate variables so that <varname>archive_command</> can be
@@ -1688,10 +1691,10 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm>
<listitem>
<para>
- The shell command to execute to archive a completed segment of
- the WAL file series. Any <literal>%p</> in the string is
+ The shell command to execute to archive a completed WAL file
+ segment. Any <literal>%p</> in the string is
replaced by the path name of the file to archive, and any
- <literal>%f</> is replaced by the file name only.
+ <literal>%f</> is replaced by only the file name.
(The path name is relative to the working directory of the server,
i.e., the cluster's data directory.)
Use <literal>%%</> to embed an actual <literal>%</> character in the
@@ -1701,9 +1704,13 @@ SET ENABLE_SEQSCAN TO OFF;
file or on the server command line. It is ignored unless
<varname>archive_mode</> was enabled at server start.
If <varname>archive_command</> is an empty string (the default) while
- <varname>archive_mode</> is enabled, then WAL archiving is temporarily
+ <varname>archive_mode</> is enabled, WAL archiving is temporarily
disabled, but the server continues to accumulate WAL segment files in
- the expectation that a command will soon be provided.
+ the expectation that a command will soon be provided. Setting
+ <varname>archive_mode</> to a command that does nothing but
+ return true, e.g. <literal>/bin/true</>, effectively disables
+ archiving, but also breaks the chain of WAL files needed for
+ archive recovery, so it should only be used in unusual circumstances.
</para>
<para>
It is important for the command to return a zero exit status if
@@ -1723,11 +1730,11 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
</indexterm>
<listitem>
<para>
- The <xref linkend="guc-archive-command"> is only invoked on
+ The <xref linkend="guc-archive-command"> is only invoked for
completed WAL segments. Hence, if your server generates little WAL
traffic (or has slack periods where it does so), there could be a
long delay between the completion of a transaction and its safe
- recording in archive storage. To put a limit on how old unarchived
+ recording in archive storage. To limit how old unarchived
data can be, you can set <varname>archive_timeout</> to force the
server to switch to a new WAL segment file periodically. When this
parameter is greater than zero, the server will switch to a new
@@ -1854,16 +1861,15 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
These configuration parameters provide a crude method of
influencing the query plans chosen by the query optimizer. If
the default plan chosen by the optimizer for a particular query
- is not optimal, a temporary solution can be found by using one
+ is not optimal, a <emphasis>temporary</> solution is to use one
of these configuration parameters to force the optimizer to
- choose a different plan. Turning one of these settings off
- permanently is seldom a good idea, however.
+ choose a different plan.
Better ways to improve the quality of the
plans chosen by the optimizer include adjusting the <xref
linkend="runtime-config-query-constants"
- endterm="runtime-config-query-constants-title">, running <xref
- linkend="sql-analyze" endterm="sql-analyze-title"> more
- frequently, increasing the value of the <xref
+ endterm="runtime-config-query-constants-title">, running <xref
+ linkend="sql-analyze" endterm="sql-analyze-title"> manually, increasing
+ the value of the <xref
linkend="guc-default-statistics-target"> configuration parameter,
and increasing the amount of statistics collected for
specific columns using <command>ALTER TABLE SET
@@ -1950,7 +1956,7 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<listitem>
<para>
Enables or disables the query planner's use of nested-loop join
- plans. It's not possible to suppress nested-loop joins entirely,
+ plans. It is impossible to suppress nested-loop joins entirely,
but turning this variable off discourages the planner from using
one if there are other methods available. The default is
<literal>on</>.
@@ -1969,7 +1975,7 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<listitem>
<para>
Enables or disables the query planner's use of sequential scan
- plan types. It's not possible to suppress sequential scans
+ plan types. It is impossible to suppress sequential scans
entirely, but turning this variable off discourages the planner
from using one if there are other methods available. The
default is <literal>on</>.
@@ -1985,7 +1991,7 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<listitem>
<para>
Enables or disables the query planner's use of explicit sort
- steps. It's not possible to suppress explicit sorts entirely,
+ steps. It is impossible to suppress explicit sorts entirely,
but turning this variable off discourages the planner from
using one if there are other methods available. The default
is <literal>on</>.
@@ -2017,8 +2023,8 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
The <firstterm>cost</> variables described in this section are measured
on an arbitrary scale. Only their relative values matter, hence
scaling them all up or down by the same factor will result in no change
- in the planner's choices. Traditionally, these variables have been
- referenced to sequential page fetches as the unit of cost; that is,
+ in the planner's choices. By default, these cost variables are based on
+ the cost of sequential page fetches; that is,
<varname>seq_page_cost</> is conventionally set to <literal>1.0</>
and the other cost variables are set with reference to that. But
you can use a different scale if you prefer, such as actual execution
@@ -2029,7 +2035,7 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<para>
Unfortunately, there is no well-defined method for determining ideal
values for the cost variables. They are best treated as averages over
- the entire mix of queries that a particular installation will get. This
+ the entire mix of queries that a particular installation will receive. This
means that changing them on the basis of just a few experiments is very
risky.
</para>
@@ -2193,8 +2199,8 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<para>
Enables or disables genetic query optimization.
This is on by default. It is usually best not to turn it off in
- production; the <varname>geqo_threshold</varname> variable provides a
- more granular way to control use of GEQO.
+ production; the <varname>geqo_threshold</varname> variable provides
+ more granular control of GEQO.
</para>
</listitem>
</varlistentry>
@@ -2211,7 +2217,8 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<literal>FULL OUTER JOIN</> construct counts as only one <literal>FROM</>
item.) The default is 12. For simpler queries it is usually best
to use the deterministic, exhaustive planner, but for queries with
- many tables the deterministic planner takes too long.
+ many tables the deterministic planner takes too long, often
+ longer than the penalty of executing a suboptimal plan.
</para>
</listitem>
</varlistentry>
@@ -2320,8 +2327,8 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
</indexterm>
<listitem>
<para>
- Sets the default statistics target for table columns that have
- not had a column-specific target set via <command>ALTER TABLE
+ Sets the default statistics target for table columns without
+ a column-specific target set via <command>ALTER TABLE
SET STATISTICS</>. Larger values increase the time needed to
do <command>ANALYZE</>, but might improve the quality of the
planner's estimates. The default is 100. For more information
@@ -2349,7 +2356,9 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
<literal>partition</> (examine constraints only for inheritance child
tables and <literal>UNION ALL</> subqueries).
<literal>partition</> is the default setting.
- </para>
+ It is often used with inheritance and partitioned tables to
+ improve performance.
+ </para>
<para>
When this parameter allows it for a particular table, the planner
@@ -2366,9 +2375,7 @@ SELECT * FROM parent WHERE key = 2400;
</programlisting>
With constraint exclusion enabled, this <command>SELECT</>
- will not scan <structname>child1000</> at all. This can
- improve performance when inheritance is used to build
- partitioned tables.
+ will not scan <structname>child1000</> at all, improving performance.
</para>
<para>
@@ -2449,8 +2456,8 @@ SELECT * FROM parent WHERE key = 2400;
for most uses. Setting it to 1 prevents any reordering of
explicit <literal>JOIN</>s. Thus, the explicit join order
specified in the query will be the actual order in which the
- relations are joined. The query planner does not always choose
- the optimal join order; advanced users can elect to
+ relations are joined. Because the query planner does not always choose
+ the optimal join order, advanced users can elect to
temporarily set this variable to 1, and then specify the join
order they desire explicitly.
For more information see <xref linkend="explicit-joins">.
@@ -2505,7 +2512,8 @@ SELECT * FROM parent WHERE key = 2400;
<para>
If <systemitem>csvlog</> is included in <varname>log_destination</>,
log entries are output in <quote>comma separated
- value</> format, which is convenient for loading them into programs.
+ value</> (<acronym>CSV</>) format, which is convenient for
+ loading logs into programs.
See <xref linkend="runtime-config-logging-csvlog"> for details.
<varname>logging_collector</varname> must be enabled to generate
CSV-format log output.
@@ -2521,7 +2529,7 @@ SELECT * FROM parent WHERE key = 2400;
<literal>LOCAL0</> through <literal>LOCAL7</> (see <xref
linkend="guc-syslog-facility">), but the default
<application>syslog</application> configuration on most platforms
- will discard all such messages. You will need to add something like
+ will discard all such messages. You will need to add something like:
<programlisting>
local0.* /var/log/postgresql
</programlisting>
@@ -2539,9 +2547,8 @@ local0.* /var/log/postgresql
</indexterm>
<listitem>
<para>
- This parameter allows messages sent to <application>stderr</>,
- and CSV-format log output, to be
- captured and redirected into log files.
+ This parameter captures plain and CSV-format log messages
+ sent to <application>stderr</> and redirects them into log files.
This approach is often more useful than
logging to <application>syslog</>, since some types of messages
might not appear in <application>syslog</> output (a common example
@@ -2832,7 +2839,11 @@ local0.* /var/log/postgresql
Controls the amount of detail written in the server log for each
message that is logged. Valid values are <literal>TERSE</>,
<literal>DEFAULT</>, and <literal>VERBOSE</>, each adding more
- fields to displayed messages.
+ fields to displayed messages. <literal>VERBOSE</> logging
+ output includes the <link
+ linkend="errcodes-appendix">SQLSTATE</> error
+ code and the source code file name, function name,
+ and line number that generated the error.
Only superusers can change this setting.
</para>
</listitem>
@@ -2845,8 +2856,8 @@ local0.* /var/log/postgresql
</indexterm>
<listitem>
<para>
- Controls whether or not the SQL statement that causes an error
- condition will be recorded in the server log. The current
+ Controls which SQL statements that cause an error
+ condition are recorded in the server log. The current
SQL statement is included in the log entry for any message of
the specified severity or higher.
Valid values are <literal>DEBUG5</literal>,
@@ -3165,7 +3176,7 @@ local0.* /var/log/postgresql
<listitem>
<para>
By default, connection log messages only show the IP address of the
- connecting host. Turning on this parameter causes logging of the
+ connecting host. Turning this parameter on causes logging of the
host name as well. Note that depending on your host name resolution
setup this might impose a non-negligible performance penalty.
This parameter can only be set in the <filename>postgresql.conf</>
@@ -3312,7 +3323,7 @@ FROM pg_stat_activity;
If you set a nonempty value for <varname>log_line_prefix</>,
you should usually make its last character be a space, to provide
visual separation from the rest of the log line. A punctuation
- character could be used too.
+ character can be used too.
</para>
</tip>
@@ -3392,11 +3403,11 @@ FROM pg_stat_activity;
</indexterm>
<listitem>
<para>
- Controls logging of use of temporary files.
+ Controls logging of temporary file names and sizes.
Temporary files can be
created for sorts, hashes, and temporary query results.
A log entry is made for each temporary file when it is deleted.
- A value of zero logs all temporary files, while positive
+ A value of zero logs all temporary file information, while positive
values log only files whose size is greater than or equal to
the specified number of kilobytes. The
default setting is <literal>-1</>, which disables such logging.
@@ -3415,7 +3426,7 @@ FROM pg_stat_activity;
Sets the time zone used for timestamps written in the log.
Unlike <xref linkend="guc-timezone">, this value is cluster-wide,
so that all sessions will report timestamps consistently.
- The default is <literal>unknown</>, which means to use whatever
+ The default is <literal>unknown</>, which means use whatever
the system environment specifies as the time zone. See <xref
linkend="datatype-timezones"> for more information.
This parameter can only be set in the <filename>postgresql.conf</>
@@ -3432,7 +3443,8 @@ FROM pg_stat_activity;
<para>
Including <literal>csvlog</> in the <varname>log_destination</> list
provides a convenient way to import log files into a database table.
- This option emits log lines in comma-separated-value format,
+ This option emits log lines in comma-separated-values
+ (<acronym>CSV</>) format,
with these columns:
timestamp with milliseconds,
user name,
@@ -3503,7 +3515,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<para>
There are a few things you need to do to simplify importing CSV log
- files easily and automatically:
+ files:
<orderedlist>
<listitem>
@@ -3575,11 +3587,11 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<listitem>
<para>
Enables the collection of information on the currently
- executing command of each session, along with the time at
- which that command began execution. This parameter is on by
+ executing command of each session, along with the time when
+ that command began execution. This parameter is on by
default. Note that even when enabled, this information is not
visible to all users, only to superusers and the user owning
- the session being reported on; so it should not represent a
+ the session being reported on, so it should not represent a
security risk.
Only superusers can change this setting.
</para>
@@ -3666,8 +3678,8 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<para>
Sets the directory to store temporary statistics data in. This can be
a path relative to the data directory or an absolute path. The default
- is <filename>pg_stat_tmp</filename>. Pointing this at a RAM based
- filesystem will decrease physical I/O requirements and can lead to
+ is <filename>pg_stat_tmp</filename>. Pointing this at a RAM-based
+ file system will decrease physical I/O requirements and can lead to
improved performance.
This parameter can only be set in the <filename>postgresql.conf</>
file or on the server command line.
@@ -3701,9 +3713,10 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
</indexterm>
<listitem>
<para>
- For each query, write performance statistics of the respective
+ For each query, output performance statistics of the respective
module to the server log. This is a crude profiling
- instrument. <varname>log_statement_stats</varname> reports total
+ instrument, similar to the Unix <function>getrusage()</> operating
+ system facility. <varname>log_statement_stats</varname> reports total
statement statistics, while the others report per-module statistics.
<varname>log_statement_stats</varname> cannot be enabled together with
any of the per-module options. All of these options are disabled by
@@ -3742,7 +3755,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<para>
Controls whether the server should run the
autovacuum launcher daemon. This is on by default; however,
- <xref linkend="guc-track-counts"> must also be turned on for
+ <xref linkend="guc-track-counts"> must also be enabled for
autovacuum to work.
This parameter can only be set in the <filename>postgresql.conf</>
file or on the server command line.
@@ -3800,7 +3813,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
database. In each round the daemon examines the
database and issues <command>VACUUM</> and <command>ANALYZE</> commands
as needed for tables in that database. The delay is measured
- in seconds, and the default is one minute (<literal>1m</>).
+ in seconds, and the default is one minute (<literal>1min</>).
This parameter can only be set in the <filename>postgresql.conf</>
file or on the server command line.
</para>
@@ -3965,7 +3978,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<para>
This variable specifies the order in which schemas are searched
when an object (table, data type, function, etc.) is referenced by a
- simple name with no schema component. When there are objects of
+ simple name with no schema specified. When there are objects of
identical names in different schemas, the one found first
in the search path is used. An object that is not in any of the
schemas in the search path can only be referenced by specifying
@@ -3973,7 +3986,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
</para>
<para>
- The value for <varname>search_path</varname> has to be a comma-separated
+ The value for <varname>search_path</varname> must be a comma-separated
list of schema names. If one of the list items is
the special value <literal>$user</literal>, then the schema
having the name returned by <function>SESSION_USER</> is substituted, if there
@@ -3993,9 +4006,9 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<literal>pg_temp_<replaceable>nnn</></>, is always searched if it
exists. It can be explicitly listed in the path by using the
alias <literal>pg_temp</>. If it is not listed in the path then
- it is searched first (before even <literal>pg_catalog</>). However,
+ it is searched first (even before <literal>pg_catalog</>). However,
the temporary schema is only searched for relation (table, view,
- sequence, etc) and data type names. It will never be searched for
+ sequence, etc) and data type names. It is never searched for
function or operator names.
</para>
@@ -4022,7 +4035,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
via the <acronym>SQL</acronym> function
<function>current_schemas()</>. This is not quite the same as
examining the value of <varname>search_path</varname>, since
- <function>current_schemas()</> shows how the requests
+ <function>current_schemas()</> shows how the items
appearing in <varname>search_path</varname> were resolved.
</para>
@@ -4075,11 +4088,11 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<indexterm><primary>tablespace</><secondary>temporary</></>
<listitem>
<para>
- This variable specifies tablespace(s) in which to create temporary
+ This variable specifies tablespaces in which to create temporary
objects (temp tables and indexes on temp tables) when a
<command>CREATE</> command does not explicitly specify a tablespace.
Temporary files for purposes such as sorting large data sets
- are also created in these tablespace(s).
+ are also created in these tablespaces.
</para>
<para>
@@ -4210,8 +4223,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
milliseconds, starting from the time the command arrives at the server
from the client. If <varname>log_min_error_statement</> is set to
<literal>ERROR</> or lower, the statement that timed out will also be
- logged. A value of zero (the default) turns off the
- limitation.
+ logged. A value of zero (the default) turns this off.
</para>
<para>
@@ -4527,7 +4539,9 @@ SET XML OPTION { DOCUMENT | CONTENT };
<para>
Only superusers can change this setting, because it affects the
- messages sent to the server log as well as to the client.
+ messages sent to the server log as well as to the client, and
+ an improper value might obscure the readability of the server
+ logs.
</para>
</listitem>
</varlistentry>
@@ -4631,12 +4645,12 @@ SET XML OPTION { DOCUMENT | CONTENT };
</para>
<para>
- The value for <varname>dynamic_library_path</varname> has to be a
+ The value for <varname>dynamic_library_path</varname> must be a
list of absolute directory paths separated by colons (or semi-colons
on Windows). If a list element starts
with the special string <literal>$libdir</literal>, the
compiled-in <productname>PostgreSQL</productname> package
- library directory is substituted for <literal>$libdir</literal>. This
+ library directory is substituted for <literal>$libdir</literal>; this
is where the modules provided by the standard
<productname>PostgreSQL</productname> distribution are installed.
(Use <literal>pg_config --pkglibdir</literal> to find out the name of
@@ -4674,7 +4688,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</indexterm>
<listitem>
<para>
- Soft upper limit of the size of the set returned by GIN index. For more
+ Soft upper limit of the size of the set returned by GIN index scans. For more
information see <xref linkend="gin-tips">.
</para>
</listitem>
@@ -4711,7 +4725,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</para>
<para>
- There is no performance advantage to loading a library at session
+ Unlike <varname>local_preload_libraries</>, there is no
+ performance advantage to loading a library at session
start rather than when it is first used. Rather, the intent of
this feature is to allow debugging or performance-measurement
libraries to be loaded into specific sessions without an explicit
@@ -4761,10 +4776,10 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<para>
This is the amount of time, in milliseconds, to wait on a lock
before checking to see if there is a deadlock condition. The
- check for deadlock is relatively slow, so the server doesn't run
+ check for deadlock is relatively expensive, so the server doesn't run
it every time it waits for a lock. We optimistically assume
that deadlocks are not common in production applications and
- just wait on the lock for a while before starting the check for a
+ just wait on the lock for a while before checking for a
deadlock. Increasing this value reduces the amount of time
wasted in needless deadlock checks, but slows down reporting of
real deadlock errors. The default is one second (<literal>1s</>),
@@ -4792,7 +4807,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</indexterm>
<listitem>
<para>
- The shared lock table is created to track locks on
+ The shared lock table tracks locks on
<varname>max_locks_per_transaction</varname> * (<xref
linkend="guc-max-connections"> + <xref
linkend="guc-max-prepared-transactions">) objects (e.g., tables);
@@ -4889,7 +4904,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<para>
Note that in a standard-conforming string literal, <literal>\</> just
- means <literal>\</> anyway. This parameter affects the handling of
+ means <literal>\</> anyway. This parameter only affects the handling of
non-standard-conforming literals, including
escape string syntax (<literal>E'...'</>).
</para>
@@ -4908,9 +4923,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
newly-created tables, if neither <literal>WITH OIDS</literal>
nor <literal>WITHOUT OIDS</literal> is specified. It also
determines whether OIDs will be included in tables created by
- <command>SELECT INTO</command>. In <productname>PostgreSQL</>
- 8.1 <varname>default_with_oids</> is <literal>off</> by default; in
- prior versions of <productname>PostgreSQL</productname>, it
+ <command>SELECT INTO</command>. The parameter is <literal>off</>
+ by default; in <productname>PostgreSQL</> 8.0 and earlier, it
was on by default.
</para>
@@ -4983,7 +4997,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<listitem>
<para>
This controls the inheritance semantics. If turned <literal>off</>,
- subtables are not included by various commands by default; basically
+ subtables are not accessed by various commands by default; basically
an implied <literal>ONLY</literal> key word. This was added for
compatibility with releases prior to 7.1. See
<xref linkend="ddl-inherit"> for more information.
@@ -5006,12 +5020,13 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<productname>PostgreSQL</productname> to have its historical
behavior of treating backslashes as escape characters.
The default will change to <literal>on</> in a future release
- to improve compatibility with the standard.
+ to improve compatibility with the SQL standard.
Applications can check this
parameter to determine how string literals will be processed.
The presence of this parameter can also be taken as an indication
that the escape string syntax (<literal>E'...'</>) is supported.
- Escape string syntax should be used if an application desires
+ Escape string syntax (<xref linkend="sql-syntax-strings-escape">)
+ should be used if an application desires
backslashes to be treated as escape characters.
</para>
</listitem>
@@ -5072,11 +5087,11 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
null values, so if you use that interface to access the database you
might want to turn this option on. Since expressions of the
form <literal><replaceable>expr</> = NULL</literal> always
- return the null value (using the correct interpretation) they are not
- very useful and do not appear often in normal applications, so
+ return the null value (using the SQL standard interpretation), they are not
+ very useful and do not appear often in normal applications so
this option does little harm in practice. But new users are
frequently confused about the semantics of expressions
- involving null values, so this option is not on by default.
+ involving null values, so this option is off by default.
</para>
<para>
@@ -5200,7 +5215,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
less than the value of <literal>NAMEDATALEN</> when building
the server. The default value of <literal>NAMEDATALEN</> is
64; therefore the default
- <varname>max_identifier_length</varname> is 63 bytes.
+ <varname>max_identifier_length</varname> is 63 bytes, which
+ can be less than 63 characters when using multi-byte encodings.
</para>
</listitem>
</varlistentry>
@@ -5355,8 +5371,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
module for a specific class is loaded, it will add the proper variable
definitions for its class name, convert any placeholder
values according to those definitions, and issue warnings for any
- placeholders of its class that remain (which presumably would be
- misspelled configuration variables).
+ unrecognized placeholders of its class that remain.
</para>
<para>
@@ -5377,9 +5392,9 @@ plruby.use_strict = true # generates error: unknown class name
<para>
The following parameters are intended for work on the
- <productname>PostgreSQL</productname> source, and in some cases
+ <productname>PostgreSQL</productname> source code, and in some cases
to assist with recovery of severely damaged databases. There
- should be no reason to use them in a production database setup.
+ should be no reason to use them on a production database.
As such, they have been excluded from the sample
<filename>postgresql.conf</> file. Note that many of these
parameters require special source compilation flags to work at all.
@@ -5445,7 +5460,7 @@ plruby.use_strict = true # generates error: unknown class name
<para>
If nonzero, a delay of this many seconds occurs when a new
server process is started, after it conducts the
- authentication procedure. This is intended to give an
+ authentication procedure. This is intended to give developers an
opportunity to attach to the server process with a debugger.
This parameter cannot be changed after session start.
</para>
@@ -5461,7 +5476,7 @@ plruby.use_strict = true # generates error: unknown class name
<para>
If nonzero, a delay of this many seconds occurs just after a
new server process is forked, before it conducts the
- authentication procedure. This is intended to give an
+ authentication procedure. This is intended to give developers an
opportunity to attach to the server process with a debugger to
trace down misbehavior in authentication.
This parameter can only be set in the <filename>postgresql.conf</>
@@ -5482,7 +5497,7 @@ plruby.use_strict = true # generates error: unknown class name
commands. <xref linkend="guc-client-min-messages"> or
<xref linkend="guc-log-min-messages"> must be
<literal>DEBUG1</literal> or lower to send this output to the
- client or server log, respectively.
+ client or server logs, respectively.
</para>
</listitem>
</varlistentry>
@@ -5719,9 +5734,9 @@ plruby.use_strict = true # generates error: unknown class name
namely all the rows on the damaged page. But it allows you to get
past the error and retrieve rows from any undamaged pages that might
be present in the table. So it is useful for recovering data if
- corruption has occurred due to hardware or software error. You should
+ corruption has occurred due to a hardware or software error. You should
generally not set this on until you have given up hope of recovering
- data from the damaged page(s) of a table. The
+ data from the damaged pages of a table. The
default setting is <literal>off</>, and it can only be changed
by a superuser.
</para>