+
+
+
Connections and Authentication
- ">
- Planner and Optimizer Tuning
+ ">
+ Connection Settings
-
+
+
- CPU_INDEX_TUPLE_COST (floating point)
+ TCPIP_SOCKET (boolean)
- Sets the query planner's estimate of the cost of processing
- each index tuple during an index scan. This is measured as a
- fraction of the cost of a sequential page fetch.
+ If this is true, then the server will accept TCP/IP connections.
+ Otherwise only local Unix domain socket connections are
+ accepted. It is off by default. This option can only be set at
+ server start.
-
+
- CPU_OPERATOR_COST (floating point)
+ MAX_CONNECTIONS (integer)
- Sets the planner's estimate of the cost of processing each
- operator in a WHERE> clause. This is measured as a fraction of
- the cost of a sequential page fetch.
+ Determines the maximum number of concurrent connections to the
+ database server. The default is 32 (unless altered while
+ building the server). This parameter can only be set at server
+ start.
-
+
- CPU_TUPLE_COST (floating point)
+ SUPERUSER_RESERVED_CONNECTIONS
+ (integer)
- Sets the query planner's estimate of the cost of processing
- each tuple during a query. This is measured as a fraction of
- the cost of a sequential page fetch.
+ Determines the number of connection slots
that
+ are reserved for connections by
PostgreSQL>
+ superusers. At most max_connections> connections can
+ ever be active simultaneously. Whenever the number of active
+ concurrent connections is at least max_connections> minus
+ superuser_reserved_connections, new connections
+ will be accepted only for superusers.
+
+
+ The default value is 2. The value must be less than the value of
+ max_connections. This parameter can only be
+ set at server start.
-
+
- DEFAULT_STATISTICS_TARGET (integer)
+ PORT (integer)
- Sets the default statistics target for table columns that have not
- had a column-specific target set via ALTER TABLE SET
- STATISTICS>. Larger values increase the time needed to do
- ANALYZE>, but may improve the quality of the planner's
- estimates. The default value is 10.
+ The TCP port the server listens on; 5432 by default. This
+ option can only be set at server start.
-
+
+
- EFFECTIVE_CACHE_SIZE (floating point)
+ UNIX_SOCKET_DIRECTORY (string)
- Sets the planner's assumption about the effective size of the
- disk cache (that is, the portion of the kernel's disk cache that
- will be used for
PostgreSQL data
- files). This is measured in disk pages, which are normally 8 kB
- each.
+ Specifies the directory of the Unix-domain socket on which the
+ server is to listen for
+ connections from client applications. The default is normally
+ /tmp, but can be changed at build time.
- ENABLE_HASHAGG (boolean)
+ UNIX_SOCKET_GROUP (string)
- Enables or disables the query planner's use of hashed aggregation
- plan types. The default is on. This is used for debugging the query
- planner.
+ Sets the group owner of the Unix domain socket. (The owning
+ user of the socket is always the user that starts the
+ server.) In combination with the option
+ UNIX_SOCKET_PERMISSIONS this can be used as
+ an additional access control mechanism for this socket type.
+ By default this is the empty string, which uses the default
+ group for the current user. This option can only be set at
+ server start.
- ENABLE_HASHJOIN (boolean)
+ UNIX_SOCKET_PERMISSIONS (integer)
- Enables or disables the query planner's use of hash-join plan
- types. The default is on. This is used for debugging the
- query planner.
+ Sets the access permissions of the Unix domain socket. Unix
+ domain sockets use the usual Unix file system permission set.
+ The option value is expected to be an numeric mode
+ specification in the form accepted by the
+ chmod and umask
+ system calls. (To use the customary octal format the number
+ must start with a 0 (zero).)
-
-
-
-
-
+ The default permissions are 0777, meaning
+ anyone can connect. Reasonable alternatives are
+ 0770 (only user and group, see also under
+ UNIX_SOCKET_GROUP) and 0700
+ (only user). (Note that actually for a Unix domain socket, only write
+ permission matters and there is no point in setting or revoking
+ read or execute permissions.)
+
- ENABLE_INDEXSCAN (boolean)
-
- Enables or disables the query planner's use of index-scan plan
- types. The default is on. This is used to debugging the
- query planner.
+ This access control mechanism is independent of the one
+ described in .
-
-
-
- ENABLE_MERGEJOIN (boolean)
-
- Enables or disables the query planner's use of merge-join plan
- types. The default is on. This is used for debugging the
- query planner.
+ This option can only be set at server start.
-
+
+
+
+
+
Security and Authentication
+
+
- ENABLE_NESTLOOP (boolean)
+ AUTHENTICATION_TIMEOUT (integer)
+
timeout>authentication>
- Enables or disables the query planner's use of nested-loop join
- plans. It's not possible 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
- on. This is used for debugging the query planner.
+ 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
+ hung clients from occupying a connection indefinitely. This
+ option can only be set at server start or in the
+ postgresql.conf file.
-
+
- ENABLE_SEQSCAN (boolean)
+ SSL (boolean)
- Enables or disables the query planner's use of sequential scan
- plan types. It's not possible 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 on. This is used for debugging the query planner.
+ Enables
SSL> connections. Please read
+ before using this. The default
+ is off.
- ENABLE_SORT (boolean)
+ KRB_SERVER_KEYFILE (string)
- Enables or disables the query planner's use of explicit sort
- steps. It's not possible 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 on. This is used for debugging the query planner.
+ Sets the location of the Kerberos server key file. See
+ for details.
- ENABLE_TIDSCAN (boolean)
+ VIRTUAL_HOST (string)
- Enables or disables the query planner's use of
TID> scan plan
- types. The default is on. This is used for debugging the
- query planner.
+ Specifies the host name or IP address on which the server is
+ to listen for connections from client applications. The
+ default is to listening on all configured addresses (including
+ localhost>).
- FROM_COLLAPSE_LIMIT (integer)
+ DB_USER_NAMESPACE (boolean)
- The planner will merge sub-queries into upper queries if the resulting
- FROM list would have no more than this many items. Smaller values
- reduce planning time but may yield inferior query plans.
- The default is 8. It is usually wise to keep this less than
- GEQO_THRESHOLD>.
+ This allows per-database user names. It is off by default.
-
-
-
-
-
genetic query optimization
-
-
- genetic query optimization
-
+ If this is on, you should create users as username@dbname>.
+ When username> is passed by a connecting client,
+ @> and the database name is appended to the user
+ name and that database-specific user name is looked up by the
+ server. Note that when you create users with names containing
+ @> within the SQL environment, you will need to
+ quote the user name.
+
- GEQO (boolean)
-
- Enables or disables genetic query optimization, which is an
- algorithm that attempts to do query planning without exhaustive
- searching. This is on by default. See also the various other
- GEQO_ settings.
+ With this option enabled, you can still create ordinary global
+ users. Simply append @> when specifying the user
+ name in the client. The @> will be stripped off
+ before the user name is looked up by the server.
+
+
+ This feature is intended as a temporary measure until a
+ complete solution is found. At that time, this option will
+ be removed.
+
+
+
+
+
+
+
+
Resource Usage (Except WAL)
+
+
+
Memory
+
+
- GEQO_EFFORT (integer)
- GEQO_GENERATIONS (integer)
- GEQO_POOL_SIZE (integer)
- GEQO_RANDOM_SEED (integer)
- GEQO_SELECTION_BIAS (floating point)
+ SHARED_BUFFERS (integer)
- Various tuning parameters for the genetic query optimization
- algorithm: The pool size is the number of individuals in one
- population. Valid values are between 128 and 1024. If it is set
- to 0 (the default) a pool size of 2^(QS+1), where QS is the
- number of FROM> items in the query, is taken. The effort is used
- to calculate a default for generations. Valid values are between
- 1 and 80, 40 being the default. Generations specifies the number
- of iterations in the algorithm. The number must be a positive
- integer. If 0 is specified then Effort *
- Log2(PoolSize) is used. The run time of the algorithm
- is roughly proportional to the sum of pool size and generations.
- The selection bias is the selective pressure within the
- population. Values can be from 1.50 to 2.00; the latter is the
- default. The random seed can be set to get reproducible results
- from the algorithm. If it is set to -1 then the algorithm
- behaves non-deterministically.
+ Sets the number of shared memory buffers used by the database
+ server. The default is 64. Each buffer is typically 8192
+ bytes. This must be greater than 16, as well as at least twice
+ the value of MAX_CONNECTIONS; however, a
+ higher value can often improve performance.
+ Values of a few thousand are recommended
+ for production installations. This option can only be set at
+ server start.
+
+
+ Increasing this parameter may cause
PostgreSQL>
+ to request more System V> shared
+ memory than your operating system's default configuration
+ allows. See for information on how to
+ adjust these parameters, if necessary.
- GEQO_THRESHOLD (integer)
+ SORT_MEM (integer)
- Use genetic query optimization to plan queries with at least
- this many FROM> items involved. (Note that an outer
- JOIN> construct counts as only one FROM>
- item.) The default is 11. 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.
+ Specifies the amount of memory to be used by internal sort operations and
+ hash tables before switching to temporary disk files. The value is
+ specified in kilobytes, and defaults to 1024 kilobytes (1 MB).
+ 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
+ files. Also, several running sessions could be doing
+ sort operations simultaneously. So the total memory used could be many
+ times the value of SORT_MEM. Sort operations are used
+ by ORDER BY>, merge joins, and CREATE INDEX>.
+ Hash tables are used in hash joins, hash-based aggregation, and
+ hash-based processing of IN> subqueries.
-
+
- JOIN_COLLAPSE_LIMIT (integer)
+ VACUUM_MEM (integer)
- The planner will flatten explicit inner JOIN> constructs
- into lists of FROM> items whenever a list of no more than
- this many items would result. Usually this is set the same as
- FROM_COLLAPSE_LIMIT>. Setting it to 1 prevents any
- flattening of inner JOIN>s, allowing explicit
- JOIN> syntax to be used to control the join order.
- Intermediate values might be useful to trade off planning time
- against quality of plan.
+ Specifies the maximum amount of memory to be used by
+ VACUUM to keep track of to-be-reclaimed
+ tuples. The value is specified in kilobytes, and defaults to
+ 8192 kilobytes. Larger settings may improve the speed of
+ vacuuming large tables that have many deleted tuples.
+
+
+
+
Free Space Map
+
+
- RANDOM_PAGE_COST (floating point)
+ MAX_FSM_PAGES (integer)
- Sets the query planner's estimate of the cost of a
- nonsequentially fetched disk page. This is measured as a
- multiple of the cost of a sequential page fetch. A higher
- value makes it more likely a sequential scan will be used,
- a lower value makes it more likely an index scan will be used.
+ Sets the maximum number of disk pages for which free space will
+ be tracked in the shared free-space map. Six bytes of shared memory
+ are consumed for each page slot. This setting must be more than
+ 16 * max_fsm_relations. The default is 20000.
+ This option can only be set at server start.
-
-
- Unfortunately, there is no well-defined method for determining
- ideal values for the family of cost
variables that
- were just described. You are encouraged to experiment and share
- your findings.
-
-
+
+ MAX_FSM_RELATIONS (integer)
+
+ Sets the maximum number of relations (tables and indexes) for which
+ free space will be tracked in the shared free-space map. Roughly
+ fifty bytes of shared memory are consumed for each slot.
+ The default is 1000.
+ This option can only be set at server start.
+
+
+
+
+
+
+
+
Disk Resource Usage
+
+
+
+ MAX_FILES_PER_PROCESS (integer)
+
+ Sets the maximum number of simultaneously open files allowed to each
+ server subprocess. The default is 1000. The limit actually used
+ by the code is the smaller of this setting and the result of
+ sysconf(_SC_OPEN_MAX). Therefore, on systems
+ where sysconf> returns a reasonable limit, you don't
+ need to worry about this setting. But on some platforms
+ (notably, most BSD systems), sysconf> returns a
+ value that is much larger than the system can really support
+ when a large number of processes all try to open that many
+ files. If you find yourself seeing Too many open files>
+ failures, try reducing this setting. This option can only be set
+ at server start or in the postgresql.conf
+ configuration file; if changed in the configuration file, it
+ only affects subsequently-started server subprocesses.
+
+
+
+
+
+ PRELOAD_LIBRARIES (string)
+
+ This variable specifies one or more shared libraries that are
+ to be preloaded at server start. An initialization function
+ can also be optionally specified by adding a colon followed by
+ the name of the initialization function after the library
+ name. For example
+ '$libdir/mylib:init_mylib' would cause
+ mylib> to be preloaded and init_mylib>
+ to be executed. If more than one library is to be loaded, they
+ must be delimited with a comma.
+
+ If mylib> is not found, the server will fail to
+ start. However, if init_mylib> is not found,
+ mylib> will still be preloaded without executing
+ the initialization function.
+
+
+ By preloading a shared library (and initializing it if
+ applicable), the library startup time is avoided when the
+ library is first used.
+
+
+
+
+
+
- logging">
-
Logging and Debugging
+ runtime-config-wal">
+
Write Ahead Logging
-
+ See also for details on WAL
+ tuning.
+
+
+
+
Settings
+
+
- CLIENT_MIN_MESSAGES (string)
+
+
+
+ FSYNC (boolean)
- This controls which message levels are send to the client.
- client. Valid values are DEBUG5>,
- DEBUG4>, DEBUG3>, DEBUG2>,
- DEBUG1>, LOG>, NOTICE>,
- WARNING>, and ERROR>. Each level
- includes all the levels that follow it. The later the level,
- the fewer messages are sent. The default is
- NOTICE>. Note that LOG> has a different
- rank here than in LOG_MIN_MESSAGES>.
+ If this option is on, the
PostgreSQL> server
+ will use the fsync()> system call in several places
+ to make sure that updates are physically written to disk. This
+ insures that a database cluster will recover to a
+ consistent state after an operating system or hardware crash.
+ (Crashes of the database server itself are not>
+ related to this.)
- Here is a list of the various message types:
- <variablelist>
-
- DEBUG[1-5]
-
- Provides information for use by developers.
-
-
- >
+ However, this operation does slow down
+ <productname>PostgreSQL> because at transaction commit it has
+ wait for the operating system to flush the write-ahead log.
+ Without fsync>, the operating system is allowed to
+ do its best in buffering, sorting, and delaying writes, which
+ can considerably increase performance. However, if the system
+ crashes, the results of the last few committed transactions may
+ be lost in part or whole. In the worst case, unrecoverable data
+ corruption may occur.
+ >
-
- INFO
-
- Provides information implicitly requested by the user,
- e.g., during VACUUM VERBOSE>.
-
-
-
+ For the above reasons, everyone can decide for himself what to
+ do with the fsync> option. Some administrators
+ always leave it off, some turn it off only for bulk loads,
+ where there is a clear restart point if something goes wrong,
+ and some leave it on just to be on the safe side. The default
+ is on so that you are on the safe side. If you trust your
+ operating system, your hardware, and your utility company (or
+ better your battery backup), you can consider disabling
+ fsync.
+
-
- NOTICE
-
- Provides information that may be helpful to users, e.g.,
- truncation of long identifiers and the creation of indexes as part
- of primary keys.
-
-
-
+ It should be noted that the performance penalty of having
+ fsync> on is considerably less in
+
PostgreSQL> version 7.1 and later. If you
+ previously suppressed fsync> for performance
+ reasons, you may wish to reconsider your choice.
+
-
- WARNING
-
- Provides warnings to the user, e.g., COMMIT>
- outside a transaction block.
-
-
-
+ This option can only be set at server start or in the
+ postgresql.conf file.
+
+
+
+
+
+ WAL_SYNC_METHOD (string)
+
+ Method used for forcing WAL updates out to disk. Possible
+ values are
+ FSYNC> (call fsync()> at each commit),
+ FDATASYNC> (call fdatasync()> at each commit),
+ OPEN_SYNC> (write WAL files with open()> option O_SYNC>), and
+ OPEN_DATASYNC> (write WAL files with open()> option O_DSYNC>).
+ Not all of these choices are available on all platforms.
+ This option can only be set at server start or in the
+ postgresql.conf file.
+
+
+
+
+
+ WAL_BUFFERS (integer)
+
+ Number of disk-page buffers in shared memory for WAL
+ logging. The default is 4. This option can only be set at
+ server start.
+
+
+
-
- ERROR
-
- Reports an error that caused the current transaction to abort.
-
-
-
+
+
+
+
Checkpoints
-
- LOG
-
- Reports information of interest to administrators, e.g.,
- checkpoint activity.
-
-
-
+
+
+ CHECKPOINT_SEGMENTS (integer)
+
+ Maximum distance between automatic WAL checkpoints, in log file
+ segments (each segment is normally 16 megabytes).
+ This option can only be set at server start or in the
+ postgresql.conf file.
+
+
+
-
- FATAL
-
- Reports an error that caused the current session to abort.
-
-
-
+
+ CHECKPOINT_TIMEOUT (integer)
+
+ Maximum time between automatic WAL checkpoints, in seconds.
+ This option can only be set at server start or in the
+ postgresql.conf file.
+
+
+
-
- PANIC
-
- Reports an error that caused all sessions to abort.
-
-
-
-
+
+ CHECKPOINT_WARNING (integer)
+
+ Send a message to the server logs if checkpoints caused by the
+ filling of checkpoint segment files happens more frequently than
+ this number of seconds. Zero turns off the warning.
+
+
+
+
+
+
+ COMMIT_DELAY (integer)
+
+ Time delay between writing a commit record to the WAL buffer and
+ flushing the buffer out to disk, in microseconds. A nonzero
+ delay allows multiple transactions to be committed with only one
+ fsync system call, if system load is high
+ enough additional transactions may become ready to commit within
+ the given interval. But the delay is just wasted if no other
+ transactions become ready to commit. Therefore, the delay is
+ only performed if at least COMMIT_SIBLINGS other transactions
+ are active at the instant that a server process has written its commit
+ record.
- DEBUG_ASSERTIONS (boolean)
+ COMMIT_SIBLINGS (integer)
- Turns on various assertion checks. This is a debugging aid. If
- you are experiencing strange problems or crashes you might want
- to turn this on, as it might expose programming mistakes. To use
- this option, the macro USE_ASSERT_CHECKING
- must be defined when
PostgreSQL is
- built (accomplished by the configure option
- ). Note that
- DEBUG_ASSERTIONS defaults to on if
-
PostgreSQL has been built with
- assertions enabled.
+ Minimum number of concurrent open transactions to require before
+ performing the COMMIT_DELAY> delay. A larger value
+ makes it more probable that at least one other transaction will
+ become ready to commit during the delay interval.
+
+
+
+
+
+
+
Query Tuning
+
+
+
Planner Method Enabling
+
+
- DEBUG_PRINT_PARSE (boolean)
- DEBUG_PRINT_REWRITTEN (boolean)
- DEBUG_PRINT_PLAN (boolean)
- DEBUG_PRETTY_PRINT (boolean)
+ ENABLE_HASHAGG (boolean)
- These options enable various debugging output to be sent to the
- client or server log. For each executed query, they print the resulting
- parse tree, the query rewriter output, or the execution plan.
- indents these displays to
- produce a more readable but much longer output format.
- or
- must be DEBUG1 or lower to send output to the client
- or server logs.
+ Enables or disables the query planner's use of hashed aggregation
+ plan types. The default is on. This is used for debugging the query
+ planner.
- EXPLAIN_PRETTY_PRINT (boolean)
+ ENABLE_HASHJOIN (boolean)
- Determines whether EXPLAIN VERBOSE> uses the indented
- or non-indented format for displaying detailed query-tree dumps.
+ Enables or disables the query planner's use of hash-join plan
+ types. The default is on. This is used for debugging the
+ query planner.
- LOG_HOSTNAME (boolean)
+
+
+
+ ENABLE_INDEXSCAN (boolean)
- By default, connection logs only show the IP address of the
- connecting host. If you want it to show the host name you can
- turn this on, but depending on your host name resolution setup
- it might impose a non-negligible performance penalty. This
- option can only be set at server start.
+ Enables or disables the query planner's use of index-scan plan
+ types. The default is on. This is used to debugging the
+ query planner.
- LOG_CONNECTIONS (boolean)
+ ENABLE_MERGEJOIN (boolean)
- This outputs a line to the server logs detailing each successful
- connection. This is off by default, although it is probably very
- useful. This option can only be set at server start or in the
- postgresql.conf configuration file.
+ Enables or disables the query planner's use of merge-join plan
+ types. The default is on. This is used for debugging the
+ query planner.
- LOG_DURATION (boolean)
+ ENABLE_NESTLOOP (boolean)
- Causes the duration of every completed statement to be logged.
- To use this option, enable LOG_STATEMENT> and
- LOG_PID> so you can link the statement to the
- duration using the process ID.
+ Enables or disables the query planner's use of nested-loop join
+ plans. It's not possible 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
+ on. This is used for debugging the query planner.
- LOG_MIN_DURATION_STATEMENT (integer)
+
+
+
+ ENABLE_SEQSCAN (boolean)
- Sets a minimum statement execution time (in milliseconds)
- above which a statement will be logged. All SQL statements
- that run longer than the time specified will be logged together
- with the duration, in seconds. The default is 0
- (turning this feature off). For example, if you set it
- to 250 then all SQL statements that run longer
- than 250ms will be logged along with the duration. Enabling this
- option can be useful in tracking down unoptimized queries in
- your applications.
+ Enables or disables the query planner's use of sequential scan
+ plan types. It's not possible 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 on. This is used for debugging the query planner.
- LOG_MIN_ERROR_STATEMENT (string)
+ ENABLE_SORT (boolean)
- Controls whether or not the SQL statement that causes an error
- condition will also be recorded in the server log. All SQL
- statements that cause an error of the specified level, or a
- higher level, are logged. The default is
- PANIC (effectively turning this feature
- off). Valid values are DEBUG5,
- DEBUG4, DEBUG3,
- DEBUG2, DEBUG1,
- INFO, NOTICE,
- WARNING, ERROR,
- FATAL, and PANIC. For
- example, if you set this to ERROR then all
- SQL statements causing errors, fatal errors, or panics will be
- logged. Enabling this option can be helpful in tracking down
- the source of any errors that appear in the server log.
+ Enables or disables the query planner's use of explicit sort
+ steps. It's not possible 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 on. This is used for debugging the query planner.
+
+
+
+ ENABLE_TIDSCAN (boolean)
+
- It is recommended you enable LOG_PID as well
- so you can more easily match the error statement with the error
- message.
+ Enables or disables the query planner's use of
TID> scan plan
+ types. The default is on. This is used for debugging the
+ query planner.
+
+
+
+
+
Planner Cost Constants
+
+ Unfortunately, there is no well-defined method for determining
+ ideal values for the family of cost
variables that
+ below. You are encouraged to experiment and share
+ your findings.
+
+
+
+
+
- LOG_MIN_MESSAGES (string)
+ EFFECTIVE_CACHE_SIZE (floating point)
- This controls which message levels are written to the server
- log. Valid values are DEBUG5>, DEBUG4>,
- DEBUG3>, DEBUG2>, DEBUG1>,
- INFO>, NOTICE>, WARNING>,
- ERROR>, LOG>, FATAL>, and
- PANIC>. Each level includes all the levels that
- follow it. The later the level, the fewer messages are sent
- to the log. The default is NOTICE>. Note that
- LOG> has a different rank here than in
- CLIENT_MIN_MESSAGES>. Also see that section for an
- explanation of the various values.
+ Sets the planner's assumption about the effective size of the
+ disk cache (that is, the portion of the kernel's disk cache that
+ will be used for
PostgreSQL data
+ files). This is measured in disk pages, which are normally 8 kB
+ each.
+
+
+
+ RANDOM_PAGE_COST (floating point)
+
+ Sets the query planner's estimate of the cost of a
+ nonsequentially fetched disk page. This is measured as a
+ multiple of the cost of a sequential page fetch. A higher
+ value makes it more likely a sequential scan will be used,
+ a lower value makes it more likely an index scan will be used.
+
+
+
- LOG_PID (boolean)
+ CPU_INDEX_TUPLE_COST (floating point)
- Prefixes each message in the server log file with the process ID of
- the server process. This is useful to sort out which messages
- pertain to which connection. The default is off. This parameter
- does not affect messages logged via
syslog>, which always contain
- the process ID.
+ Sets the query planner's estimate of the cost of processing
+ each index tuple during an index scan. This is measured as a
+ fraction of the cost of a sequential page fetch.
+
+
+
+
+
+ CPU_OPERATOR_COST (floating point)
+
+ Sets the planner's estimate of the cost of processing each
+ operator in a WHERE> clause. This is measured as a fraction of
+ the cost of a sequential page fetch.
- LOG_STATEMENT (boolean)
+ CPU_TUPLE_COST (floating point)
- Causes each SQL statement to be logged.
+ Sets the query planner's estimate of the cost of processing
+ each tuple during a query. This is measured as a fraction of
+ the cost of a sequential page fetch.
+
+
+
+
Genetic Estimate Query Optimizer
+
+
+
- LOG_TIMESTAMP (boolean)
+
+
genetic query optimization
+
+
+ genetic query optimization
+
+ GEQO (boolean)
- Prefixes each server log message with a time stamp. The default
- is off.
+ Enables or disables genetic query optimization, which is an
+ algorithm that attempts to do query planning without exhaustive
+ searching. This is on by default. See also the various other
+ GEQO_ settings.
- LOG_STATEMENT_STATS (boolean)
- LOG_PARSER_STATS (boolean)
- LOG_PLANNER_STATS (boolean)
- LOG_EXECUTOR_STATS (boolean)
+ GEQO_THRESHOLD (integer)
- For each query, write performance statistics of the respective
- module to the server log. This is a crude profiling
- instrument.
+ Use genetic query optimization to plan queries with at least
+ this many FROM> items involved. (Note that an outer
+ JOIN> construct counts as only one FROM>
+ item.) The default is 11. 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.
- LOG_SOURCE_PORT (boolean)
+ GEQO_EFFORT (integer)
+ GEQO_GENERATIONS (integer)
+ GEQO_POOL_SIZE (integer)
+ GEQO_RANDOM_SEED (integer)
+ GEQO_SELECTION_BIAS (floating point)
- Shows the outgoing port number of the connecting host in the
- connection log messages. You could trace back the port number
- to find out what user initiated the connection. Other than
- that, it's pretty useless and therefore off by default. This
- option can only be set at server start.
+ Various tuning parameters for the genetic query optimization
+ algorithm: The pool size is the number of individuals in one
+ population. Valid values are between 128 and 1024. If it is set
+ to 0 (the default) a pool size of 2^(QS+1), where QS is the
+ number of FROM> items in the query, is taken. The effort is used
+ to calculate a default for generations. Valid values are between
+ 1 and 80, 40 being the default. Generations specifies the number
+ of iterations in the algorithm. The number must be a positive
+ integer. If 0 is specified then Effort *
+ Log2(PoolSize) is used. The run time of the algorithm
+ is roughly proportional to the sum of pool size and generations.
+ The selection bias is the selective pressure within the
+ population. Values can be from 1.50 to 2.00; the latter is the
+ default. The random seed can be set to get reproducible results
+ from the algorithm. If it is set to -1 then the algorithm
+ behaves non-deterministically.
+
+
+
+
+
Other Query Modifiers
+
+
- STATS_COMMAND_STRING (boolean)
+ EXPLAIN_PRETTY_PRINT (boolean)
- Enables the collection of statistics on the currently
- executing command of each session, along with the time at
- which that command began execution. This option is off 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
- security risk. This data can be accessed via the
- pg_stat_activity system view; refer
- to for more information.
+ Determines whether EXPLAIN VERBOSE> uses the indented
+ or non-indented format for displaying detailed query-tree dumps.
-
+
- STATS_BLOCK_LEVEL (boolean)
- STATS_ROW_LEVEL (boolean)
+ FROM_COLLAPSE_LIMIT (integer)
- These enable the collection of block-level and row-level statistics
- on database activity, respectively. These options are off by
- default. This data can be accessed via the
- pg_stat and
- pg_statio family of system views;
- refer to for more information.
+ The planner will merge sub-queries into upper queries if the resulting
+ FROM list would have no more than this many items. Smaller values
+ reduce planning time but may yield inferior query plans.
+ The default is 8. It is usually wise to keep this less than
+ GEQO_THRESHOLD>.
- STATS_RESET_ON_SERVER_START (boolean)
+ JOIN_COLLAPSE_LIMIT (integer)
- If on, collected statistics are zeroed out whenever the server
- is restarted. If off, statistics are accumulated across server
- restarts. The default is on. This option can only be set at
- server start.
+ The planner will flatten explicit inner JOIN> constructs
+ into lists of FROM> items whenever a list of no more than
+ this many items would result. Usually this is set the same as
+ FROM_COLLAPSE_LIMIT>. Setting it to 1 prevents any
+ flattening of inner JOIN>s, allowing explicit
+ JOIN> syntax to be used to control the join order.
+ Intermediate values might be useful to trade off planning time
+ against quality of plan.
- STATS_START_COLLECTOR (boolean)
+ MAX_EXPR_DEPTH (integer)
- Controls whether the server should start the
- statistics-collection subprocess. This is on by default, but
- may be turned off if you know you have no interest in
- collecting statistics. This option can only be set at server
- start.
+ Sets the maximum expression nesting depth of the parser. The
+ default value is high enough for any normal query, but you can
+ raise it if needed. (But if you raise it too high, you run
+ the risk of server crashes due to stack overflow.)
+
+
+
+
+
+
+
Logging and Debugging
+
+
+
Syslog
+
SYSLOG (integer)
+
+
+
+
+
When To Log
+
+ Here is a list of the various message types:
+
+
+ DEBUG[1-5]
+
+ Provides information for use by developers.
+
+
+
+
+
+ INFO
+
+ Provides information implicitly requested by the user,
+ e.g., during VACUUM VERBOSE>.
+
+
+
+
+
+ NOTICE
+
+ Provides information that may be helpful to users, e.g.,
+ truncation of long identifiers and the creation of indexes as part
+ of primary keys.
+
+
+
+
+
+ WARNING
+
+ Provides warnings to the user, e.g., COMMIT>
+ outside a transaction block.
+
+
+
+
+
+ ERROR
+
+ Reports an error that caused the current transaction to abort.
+
+
+
+
+
+ LOG
+
+ Reports information of interest to administrators, e.g.,
+ checkpoint activity.
+
+
+
+
+
+ FATAL
+
+ Reports an error that caused the current session to abort.
+
+
+
+
+
+ PANIC
+
+ Reports an error that caused all sessions to abort.
+
+
+
+
+
+
+
+
+
+ LOG_MIN_MESSAGES (string)
+
+ This controls which message levels are written to the server
+ log. Valid values are DEBUG5>, DEBUG4>,
+ DEBUG3>, DEBUG2>, DEBUG1>,
+ INFO>, NOTICE>, WARNING>,
+ ERROR>, LOG>, FATAL>, and
+ PANIC>. Each level includes all the levels that
+ follow it. The later the level, the fewer messages are sent
+ to the log. The default is NOTICE>. Note that
+ LOG> has a different rank here than in
+ CLIENT_MIN_MESSAGES>. Also see that section for an
+ explanation of the various values.
+
+
+
+
+
+
+ CLIENT_MIN_MESSAGES (string)
+
+ This controls which message levels are send to the client.
+ client. Valid values are DEBUG5>,
+ DEBUG4>, DEBUG3>, DEBUG2>,
+ DEBUG1>, LOG>, NOTICE>,
+ WARNING>, and ERROR>. Each level
+ includes all the levels that follow it. The later the level,
+ the fewer messages are sent. The default is
+ NOTICE>. Note that LOG> has a different
+ rank here than in LOG_MIN_MESSAGES>.
+
+
+
+
+
+
+ LOG_MIN_ERROR_STATEMENT (string)
+
+ Controls whether or not the SQL statement that causes an error
+ condition will also be recorded in the server log. All SQL
+ statements that cause an error of the specified level, or a
+ higher level, are logged. The default is
+ PANIC (effectively turning this feature
+ off). Valid values are DEBUG5,
+ DEBUG4, DEBUG3,
+ DEBUG2, DEBUG1,
+ INFO, NOTICE,
+ WARNING, ERROR,
+ FATAL, and PANIC. For
+ example, if you set this to ERROR then all
+ SQL statements causing errors, fatal errors, or panics will be
+ logged. Enabling this option can be helpful in tracking down
+ the source of any errors that appear in the server log.
+
+
+ It is recommended you enable LOG_PID as well
+ so you can more easily match the error statement with the error
+ message.
+
+
+
+
+
+ LOG_MIN_DURATION_STATEMENT (integer)
+
+ Sets a minimum statement execution time (in milliseconds)
+ above which a statement will be logged. All SQL statements
+ that run longer than the time specified will be logged together
+ with the duration, in seconds. The default is 0
+ (turning this feature off). For example, if you set it
+ to 250 then all SQL statements that run longer
+ than 250ms will be logged along with the duration. Enabling this
+ option can be useful in tracking down unoptimized queries in
+ your applications.
+
+
+
- TRACE_NOTIFY (boolean)
+ SILENT_MODE (boolean)
- Generates a great amount of debugging output for the
- LISTEN and NOTIFY
- commands.
- or
- must be DEBUG1 or lower to send output to the client
+ Runs the server silently. If this option is set, the server
+ will automatically run in background and any controlling terminals
+ are disassociated. Thus, no messages are written to standard
+ output or standard error (same effect as postmaster>'s
+ option). Unless some logging system such as
+
syslog> is enabled, using this option is
+ discouraged since it makes it impossible to see error messages.
+
+
+
+
+
+
+
+
What To Log
+
+
+
+
+ DEBUG_PRINT_PARSE (boolean)
+ DEBUG_PRINT_REWRITTEN (boolean)
+ DEBUG_PRINT_PLAN (boolean)
+ DEBUG_PRETTY_PRINT (boolean)
+
+ These options enable various debugging output to be sent to the
+ client or server log. For each executed query, they print the resulting
+ parse tree, the query rewriter output, or the execution plan.
+ indents these displays to
+ produce a more readable but much longer output format.
+ or
+ must be DEBUG1 or lower to send output to the client
or server logs.
-
-
-
-
-
General Operation
-
-
+
+
+ LOG_CONNECTIONS (boolean)
+
+ This outputs a line to the server logs detailing each successful
+ connection. This is off by default, although it is probably very
+ useful. This option can only be set at server start or in the
+ postgresql.conf configuration file.
+
+
+
+
+
+
+ LOG_DURATION (boolean)
+
+ Causes the duration of every completed statement to be logged.
+ To use this option, enable LOG_STATEMENT> and
+ LOG_PID> so you can link the statement to the
+ duration using the process ID.
+
+
+
+
- ADD_MISSING_FROM (boolean)
+ LOG_PID (boolean)
- This parameter controls whether a relation referenced in a query but
- missing from the FROM clause should be automatically added to
- the FROM clause. If enabled (the default), the notice
- Adding missing FROM-clause entry for table "tablename"
- is generated if a relation is automatically added. If not enabled,
- an error is raised when an additional extra relation is required.
- For SQL standards compliance, this value should be set to
- false>.
+ Prefixes each message in the server log file with the process ID of
+ the server process. This is useful to sort out which messages
+ pertain to which connection. The default is off. This parameter
+ does not affect messages logged via
syslog>, which always contain
+ the process ID.
- AUSTRALIAN_TIMEZONES (boolean)
-
Australian time zones>>
+ LOG_STATEMENT (boolean)
- If set to true, ACST,
- CST, EST, and
- SAT are interpreted as Australian time
- zones rather than as North/South American time zones and
- Saturday. The default is false.
+ Causes each SQL statement to be logged.
- AUTHENTICATION_TIMEOUT (integer)
-
timeout>authentication>
+ LOG_TIMESTAMP (boolean)
- 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
- hung clients from occupying a connection indefinitely. This
- option can only be set at server start or in the
- postgresql.conf file.
+ Prefixes each server log message with a time stamp. The default
+ is off.
- CLIENT_ENCODING (string)
-
character set encoding>>
+ LOG_HOSTNAME (boolean)
- Sets the client-side encoding (character set).
- The default is to use the database encoding.
+ By default, connection logs only show the IP address of the
+ connecting host. If you want it to show the host name you can
+ turn this on, but depending on your host name resolution setup
+ it might impose a non-negligible performance penalty. This
+ option can only be set at server start.
- DATESTYLE (string)
+ LOG_SOURCE_PORT (boolean)
- Sets the display format for date and time values, as well as
- the rules for interpreting ambiguous date input values. See
- for more information. The
- default is ISO, US>.
+ Shows the outgoing port number of the connecting host in the
+ connection log messages. You could trace back the port number
+ to find out what user initiated the connection. Other than
+ that, it's pretty useless and therefore off by default. This
+ option can only be set at server start.
+
+
+
+
+
+
+
Client Connection Defaults
+
+
+
Statement Behavior
+
- DB_USER_NAMESPACE (boolean)
+ SEARCH_PATH (string)
- This allows per-database user names. It is off by default.
+ 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
+ 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
+ its containing schema with a qualified (dotted) name.
- If this is on, you should create users as username@dbname>.
- When username> is passed by a connecting client,
- @> and the database name is appended to the user
- name and that database-specific user name is looked up by the
- server. Note that when you create users with names containing
- @> within the SQL environment, you will need to
- quote the user name.
+ The value for search_path has to be a comma-separated
+ list of schema names. If one of the list items is
+ the special value $user, then the schema
+ having the name returned by SESSION_USER> is substituted, if there
+ is such a schema. (If not, $user is ignored.)
- With this option enabled, you can still create ordinary global
- users. Simply append @> when specifying the user
- name in the client. The @> will be stripped off
- before the user name is looked up by the server.
+ The system catalog schema, pg_catalog>, is always
+ searched, whether it is mentioned in the path or not. If it is
+ mentioned in the path then it will be searched in the specified
+ order. If pg_catalog> is not in the path then it will
+ be searched before> searching any of the path items.
+ It should also be noted that the temporary-table schema,
+ pg_temp_nnn>>, is implicitly searched before any of
+ these.
-
- This feature is intended as a temporary measure until a
- complete solution is found. At that time, this option will
- be removed.
-
-
-
-
+ When objects are created without specifying a particular target
+ schema, they will be placed in the first schema listed
+ in the search path. An error is reported if the search path is
+ empty.
+
-
-
- timeout
-
-
- deadlock
-
+ The default value for this parameter is
+ '$user, public' (where the second part will be
+ ignored if there is no schema named public>).
+ This supports shared use of a database (where no users
+ have private schemas, and all share use of public>),
+ private per-user schemas, and combinations of these. Other
+ effects can be obtained by altering the default search path
+ setting, either globally or per-user.
+
- DEADLOCK_TIMEOUT (integer)
-
- 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
- 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
- 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 1000 (i.e., one second),
- which is probably about the smallest value you would want in
- practice. On a heavily loaded server you might want to raise it.
- Ideally the setting should exceed your typical transaction time,
- so as to improve the odds that a lock will be released before
- the waiter decides to check for deadlock.
+ The current effective value of the search path can be examined
+ via the SQL function current_schemas()>. This is not
+ quite the same as examining the value of
+ search_path, since current_schemas()>
+ shows how the requests appearing in search_path
+ were resolved.
+
+
+ For more information on schema handling, see .
+
transaction isolation level
-
+
- DYNAMIC_LIBRARY_PATH (string)
+ STATEMENT_TIMEOUT (integer)
- If a dynamically loadable module needs to be opened and the
- specified name does not have a directory component (i.e. the
- name does not contain a slash), the system will search this
- path for the specified file. (The name that is used is the
- name specified in the CREATE FUNCTION or
- LOAD command.)
-
-
- The value for DYNAMIC_LIBRARY_PATH has to be a colon-separated
- list of absolute directory names. If a directory name starts
- with the special value $libdir, the
- compiled-in
PostgreSQL package
- library directory is substituted. This where the modules
- provided by the
PostgreSQL
- distribution are installed. (Use pg_config
- --pkglibdir to print the name of this directory.) For
- example:
-dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
-
-
-
- The default value for this parameter is
- '$libdir'. If the value is set to an empty
- string, the automatic path search is turned off.
-
-
- This parameter can be changed at run time by superusers, but a
- setting done that way will only persist until the end of the
- client connection, so this method should be reserved for
- development purposes. The recommended way to set this parameter
- is in the postgresql.conf configuration
- file.
+ Aborts any statement that takes over the specified number of
+ milliseconds. A value of zero turns off the timer.
+
+
+
+
+
Locale and Formatting
-
-
-
-
- of float numbers
-
+
- EXTRA_FLOAT_DIGITS (integer)
+
+ DATESTYLE (string)
- This parameter adjusts the number of digits displayed for
- floating-point values, including float4>, float8>,
- and geometric data types. The parameter value is added to the
- standard number of digits (FLT_DIG> or DBL_DIG>
- as appropriate). The value can be set as high as 2, to include
- partially-significant digits; this is especially useful for dumping
- float data that needs to be restored exactly. Or it can be set
- negative to suppress unwanted digits.
+ Sets the display format for date and time values, as well as
+ the rules for interpreting ambiguous date input values. See
+ for more information. The
+ default is ISO, US>.
- KRB_SERVER_KEYFILE (string)
+ TIMEZONE (string)
- Sets the location of the Kerberos server key file. See
- for details.
+ Sets the time zone for displaying and interpreting time
+ stamps. The default is to use whatever the system environment
+ specifies as the time zone. See
+ linkend="datatype-datetime"> for more information.
-
-
-
- FSYNC (boolean)
+ AUSTRALIAN_TIMEZONES (boolean)
+
Australian time zones>>
- If this option is on, the
PostgreSQL> server
- will use the fsync()> system call in several places
- to make sure that updates are physically written to disk. This
- insures that a database cluster will recover to a
- consistent state after an operating system or hardware crash.
- (Crashes of the database server itself are not>
- related to this.)
-
-
- However, this operation does slow down
-
PostgreSQL> because at transaction commit it has
- wait for the operating system to flush the write-ahead log.
- Without fsync>, the operating system is allowed to
- do its best in buffering, sorting, and delaying writes, which
- can considerably increase performance. However, if the system
- crashes, the results of the last few committed transactions may
- be lost in part or whole. In the worst case, unrecoverable data
- corruption may occur.
-
-
- For the above reasons, everyone can decide for himself what to
- do with the fsync> option. Some administrators
- always leave it off, some turn it off only for bulk loads,
- where there is a clear restart point if something goes wrong,
- and some leave it on just to be on the safe side. The default
- is on so that you are on the safe side. If you trust your
- operating system, your hardware, and your utility company (or
- better your battery backup), you can consider disabling
- fsync.
-
-
- It should be noted that the performance penalty of having
- fsync> on is considerably less in
-
PostgreSQL> version 7.1 and later. If you
- previously suppressed fsync> for performance
- reasons, you may wish to reconsider your choice.
+ If set to true, ACST,
+ CST, EST, and
+ SAT are interpreted as Australian time
+ zones rather than as North/South American time zones and
+ Saturday. The default is false.
+
+
+
+
+
+
+ of float numbers
+
+
+ EXTRA_FLOAT_DIGITS (integer)
+
- This option can only be set at server start or in the
- postgresql.conf file.
+ This parameter adjusts the number of digits displayed for
+ floating-point values, including float4>, float8>,
+ and geometric data types. The parameter value is added to the
+ standard number of digits (FLT_DIG> or DBL_DIG>
+ as appropriate). The value can be set as high as 2, to include
+ partially-significant digits; this is especially useful for dumping
+ float data that needs to be restored exactly. Or it can be set
+ negative to suppress unwanted digits.
+
LC_MESSAGES (string)
- MAX_CONNECTIONS (integer)
-
- Determines the maximum number of concurrent connections to the
- database server. The default is 32 (unless altered while
- building the server). This parameter can only be set at server
- start.
-
-
-
-
-
- MAX_EXPR_DEPTH (integer)
-
- Sets the maximum expression nesting depth of the parser. The
- default value is high enough for any normal query, but you can
- raise it if needed. (But if you raise it too high, you run
- the risk of server crashes due to stack overflow.)
-
-
-
-
-
- MAX_FILES_PER_PROCESS (integer)
-
- Sets the maximum number of simultaneously open files allowed to each
- server subprocess. The default is 1000. The limit actually used
- by the code is the smaller of this setting and the result of
- sysconf(_SC_OPEN_MAX). Therefore, on systems
- where sysconf> returns a reasonable limit, you don't
- need to worry about this setting. But on some platforms
- (notably, most BSD systems), sysconf> returns a
- value that is much larger than the system can really support
- when a large number of processes all try to open that many
- files. If you find yourself seeing Too many open files>
- failures, try reducing this setting. This option can only be set
- at server start or in the postgresql.conf
- configuration file; if changed in the configuration file, it
- only affects subsequently-started server subprocesses.
-
-
-
-
-
- MAX_FSM_PAGES (integer)
+ CLIENT_ENCODING (string)
+
character set encoding>>
- Sets the maximum number of disk pages for which free space will
- be tracked in the shared free-space map. Six bytes of shared memory
- are consumed for each page slot. This setting must be more than
- 16 * max_fsm_relations. The default is 20000.
- This option can only be set at server start.
+ Sets the client-side encoding (character set).
+ The default is to use the database encoding.
-
- MAX_FSM_RELATIONS (integer)
-
- Sets the maximum number of relations (tables and indexes) for which
- free space will be tracked in the shared free-space map. Roughly
- fifty bytes of shared memory are consumed for each slot.
- The default is 1000.
- This option can only be set at server start.
-
-
-
+
+
+
+
Other Defaults
-
- MAX_LOCKS_PER_TRANSACTION (integer)
-
- The shared lock table is sized on the assumption that at most
- max_locks_per_transaction> *
- max_connections distinct objects will need to
- be locked at any one time. The default, 64, has historically
- proven sufficient, but you might need to raise this value if you
- have clients that touch many different tables in a single
- transaction. This option can only be set at server start.
-
-
-
+
PASSWORD_ENCRYPTION (boolean)
+
- PORT (integer)
+ DYNAMIC_LIBRARY_PATH (string)
- The TCP port the server listens on; 5432 by default. This
- option can only be set at server start.
+ If a dynamically loadable module needs to be opened and the
+ specified name does not have a directory component (i.e. the
+ name does not contain a slash), the system will search this
+ path for the specified file. (The name that is used is the
+ name specified in the CREATE FUNCTION or
+ LOAD command.)
-
-
-
- PRELOAD_LIBRARIES (string)
-
- This variable specifies one or more shared libraries that are
- to be preloaded at server start. An initialization function
- can also be optionally specified by adding a colon followed by
- the name of the initialization function after the library
- name. For example
- '$libdir/mylib:init_mylib' would cause
- mylib> to be preloaded and init_mylib>
- to be executed. If more than one library is to be loaded, they
- must be delimited with a comma.
+ The value for DYNAMIC_LIBRARY_PATH has to be a colon-separated
+ list of absolute directory names. If a directory name starts
+ with the special value $libdir, the
+ compiled-in
PostgreSQL package
+ library directory is substituted. This where the modules
+ provided by the
PostgreSQL
+ distribution are installed. (Use pg_config
+ --pkglibdir to print the name of this directory.) For
+ example:
+dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
+
- If mylib> is not found, the server will fail to
- start. However, if init_mylib> is not found,
- mylib> will still be preloaded without executing
- the initialization function.
+ The default value for this parameter is
+ '$libdir'. If the value is set to an empty
+ string, the automatic path search is turned off.
- By preloading a shared library (and initializing it if
- applicable), the library startup time is avoided when the
- library is first used.
+ This parameter can be changed at run time by superusers, but a
+ setting done that way will only persist until the end of the
+ client connection, so this method should be reserved for
+ development purposes. The recommended way to set this parameter
+ is in the postgresql.conf configuration
+ file.
+
+
+
+
+
+
+
Statistics
+
+
+
Statistics Monitoring
+
+
- REGEX_FLAVOR (string)
+ LOG_STATEMENT_STATS (boolean)
+ LOG_PARSER_STATS (boolean)
+ LOG_PLANNER_STATS (boolean)
+ LOG_EXECUTOR_STATS (boolean)
- The regular expression flavor> can be set to
- advanced>, extended>, or basic>.
- The usual default is advanced>. The extended>
- setting may be useful for exact backwards compatibility with
- pre-7.4 releases of
PostgreSQL>.
+ For each query, write performance statistics of the respective
+ module to the server log. This is a crude profiling
+ instrument.
- SEARCH_PATH (string)
+ DEFAULT_STATISTICS_TARGET (integer)
- 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
- 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
- its containing schema with a qualified (dotted) name.
-
-
- The value for search_path has to be a comma-separated
- list of schema names. If one of the list items is
- the special value $user, then the schema
- having the name returned by SESSION_USER> is substituted, if there
- is such a schema. (If not, $user is ignored.)
-
-
- The system catalog schema, pg_catalog>, is always
- searched, whether it is mentioned in the path or not. If it is
- mentioned in the path then it will be searched in the specified
- order. If pg_catalog> is not in the path then it will
- be searched before> searching any of the path items.
- It should also be noted that the temporary-table schema,
- pg_temp_nnn>>, is implicitly searched before any of
- these.
-
-
- When objects are created without specifying a particular target
- schema, they will be placed in the first schema listed
- in the search path. An error is reported if the search path is
- empty.
-
-
- The default value for this parameter is
- '$user, public' (where the second part will be
- ignored if there is no schema named public>).
- This supports shared use of a database (where no users
- have private schemas, and all share use of public>),
- private per-user schemas, and combinations of these. Other
- effects can be obtained by altering the default search path
- setting, either globally or per-user.
-
-
- The current effective value of the search path can be examined
- via the SQL function current_schemas()>. This is not
- quite the same as examining the value of
- search_path, since current_schemas()>
- shows how the requests appearing in search_path
- were resolved.
-
-
- For more information on schema handling, see .
+ Sets the default statistics target for table columns that have not
+ had a column-specific target set via ALTER TABLE SET
+ STATISTICS>. Larger values increase the time needed to do
+ ANALYZE>, but may improve the quality of the planner's
+ estimates. The default value is 10.
+
+
+
+
+
+
Query and Index Statistics Collector
+
- SHARED_BUFFERS (integer)
+ STATS_START_COLLECTOR (boolean)
- Sets the number of shared memory buffers used by the database
- server. The default is 64. Each buffer is typically 8192
- bytes. This must be greater than 16, as well as at least twice
- the value of MAX_CONNECTIONS; however, a
- higher value can often improve performance.
- Values of a few thousand are recommended
- for production installations. This option can only be set at
- server start.
-
-
- Increasing this parameter may cause
PostgreSQL>
- to request more System V> shared
- memory than your operating system's default configuration
- allows. See for information on how to
- adjust these parameters, if necessary.
+ Controls whether the server should start the
+ statistics-collection subprocess. This is on by default, but
+ may be turned off if you know you have no interest in
+ collecting statistics. This option can only be set at server
+ start.
- SILENT_MODE (boolean)
+ STATS_COMMAND_STRING (boolean)
- Runs the server silently. If this option is set, the server
- will automatically run in background and any controlling terminals
- are disassociated. Thus, no messages are written to standard
- output or standard error (same effect as postmaster>'s
- option). Unless some logging system such as
-
syslog> is enabled, using this option is
- discouraged since it makes it impossible to see error messages.
+ Enables the collection of statistics on the currently
+ executing command of each session, along with the time at
+ which that command began execution. This option is off 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
+ security risk. This data can be accessed via the
+ pg_stat_activity system view; refer
+ to for more information.
- SORT_MEM (integer)
+ STATS_BLOCK_LEVEL (boolean)
+ STATS_ROW_LEVEL (boolean)
- Specifies the amount of memory to be used by internal sort operations and
- hash tables before switching to temporary disk files. The value is
- specified in kilobytes, and defaults to 1024 kilobytes (1 MB).
- 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
- files. Also, several running sessions could be doing
- sort operations simultaneously. So the total memory used could be many
- times the value of SORT_MEM. Sort operations are used
- by ORDER BY>, merge joins, and CREATE INDEX>.
- Hash tables are used in hash joins, hash-based aggregation, and
- hash-based processing of IN> subqueries.
+ These enable the collection of block-level and row-level statistics
+ on database activity, respectively. These options are off by
+ default. This data can be accessed via the
+ pg_stat and
+ pg_statio family of system views;
+ refer to for more information.
- SQL_INHERITANCE (boolean)
+ STATS_RESET_ON_SERVER_START (boolean)
- This controls the inheritance semantics, in particular whether
- subtables are included by various commands by default. They were
- not included in versions prior to 7.1. If you need the old
- behavior you can set this variable to off, but in the long run
- you are encouraged to change your applications to use the
- ONLY key word to exclude subtables. See
- for more information about inheritance.
+ If on, collected statistics are zeroed out whenever the server
+ is restarted. If off, statistics are accumulated across server
+ restarts. The default is on. This option can only be set at
+ server start.
+
+
+
+
+
+
Lock Management
+
+
+
+ timeout
+
+
+ deadlock
- SSL (boolean)
+ DEADLOCK_TIMEOUT (integer)
- Enables
SSL> connections. Please read
- before using this. The default
- is off.
+ 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
+ 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
+ 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 1000 (i.e., one second),
+ which is probably about the smallest value you would want in
+ practice. On a heavily loaded server you might want to raise it.
+ Ideally the setting should exceed your typical transaction time,
+ so as to improve the odds that a lock will be released before
+ the waiter decides to check for deadlock.
- STATEMENT_TIMEOUT (integer)
+ MAX_LOCKS_PER_TRANSACTION (integer)
- Aborts any statement that takes over the specified number of
- milliseconds. A value of zero turns off the timer.
+ The shared lock table is sized on the assumption that at most
+ max_locks_per_transaction> *
+ max_connections distinct objects will need to
+ be locked at any one time. The default, 64, has historically
+ proven sufficient, but you might need to raise this value if you
+ have clients that touch many different tables in a single
+ transaction. This option can only be set at server start.
+
+
+
+
+
Version and Platform Compatibility
+
+
+
Previous Postgres Versions
+
+
- SUPERUSER_RESERVED_CONNECTIONS>
- (integer)>
+ ADD_MISSING_FROM (boolean)>
- Determines the number of connection slots
that
- are reserved for connections by
PostgreSQL>
- superusers. At most max_connections> connections can
- ever be active simultaneously. Whenever the number of active
- concurrent connections is at least max_connections> minus
- superuser_reserved_connections, new connections
- will be accepted only for superusers.
+
+
+
+ REGEX_FLAVOR (string)
+
- The default value is 2. The value must be less than the value of
- max_connections. This parameter can only be
- set at server start.
+ The regular expression flavor> can be set to
+ advanced>, extended>, or basic>.
+ The usual default is advanced>. The extended>
+ setting may be useful for exact backwards compatibility with
+ pre-7.4 releases of
PostgreSQL>.
- TCPIP_SOCKET (boolean)
+ SQL_INHERITANCE (boolean)
- If this is true, then the server will accept TCP/IP connections.
- Otherwise only local Unix domain socket connections are
- accepted. It is off by default. This option can only be set at
- server start.
+ This controls the inheritance semantics, in particular whether
+ subtables are included by various commands by default. They were
+ not included in versions prior to 7.1. If you need the old
+ behavior you can set this variable to off, but in the long run
+ you are encouraged to change your applications to use the
+ ONLY key word to exclude subtables. See
+ for more information about inheritance.
+
+
+
+
Platform and Client Compatibility
+
+
- TIMEZONE (string)
+ HAS_RENDEZVOUS (boolean)
- Sets the time zone for displaying and interpreting time
- stamps. The default is to use whatever the system environment
- specifies as the time zone. See
- linkend="datatype-datetime"> for more information.
-
- UNIX_SOCKET_DIRECTORY (string)
-
- Specifies the directory of the Unix-domain socket on which the
- server is to listen for
- connections from client applications. The default is normally
- /tmp, but can be changed at build time.
-
-
-
-
-
- UNIX_SOCKET_GROUP (string)
-
- Sets the group owner of the Unix domain socket. (The owning
- user of the socket is always the user that starts the
- server.) In combination with the option
- UNIX_SOCKET_PERMISSIONS this can be used as
- an additional access control mechanism for this socket type.
- By default this is the empty string, which uses the default
- group for the current user. This option can only be set at
- server start.
-
-
-
-
-
- UNIX_SOCKET_PERMISSIONS (integer)
-
- Sets the access permissions of the Unix domain socket. Unix
- domain sockets use the usual Unix file system permission set.
- The option value is expected to be an numeric mode
- specification in the form accepted by the
- chmod and umask
- system calls. (To use the customary octal format the number
- must start with a 0 (zero).)
-
-
- The default permissions are 0777, meaning
- anyone can connect. Reasonable alternatives are
- 0770 (only user and group, see also under
- UNIX_SOCKET_GROUP) and 0700
- (only user). (Note that actually for a Unix domain socket, only write
- permission matters and there is no point in setting or revoking
- read or execute permissions.)
-
-
- This access control mechanism is independent of the one
- described in .
-
-
- This option can only be set at server start.
-
-
-
-
-
- VACUUM_MEM (integer)
-
- Specifies the maximum amount of memory to be used by
- VACUUM to keep track of to-be-reclaimed
- tuples. The value is specified in kilobytes, and defaults to
- 8192 kilobytes. Larger settings may improve the speed of
- vacuuming large tables that have many deleted tuples.
-
-
-
-
-
- VIRTUAL_HOST (string)
-
- Specifies the host name or IP address on which the server is
- to listen for connections from client applications. The
- default is to listening on all configured addresses (including
- localhost>).
-
-
-
-
-
- ZERO_DAMAGED_PAGES (boolean)
-
- Detection of a damaged page header normally causes
-
PostgreSQL> to report an error, aborting the current
- transaction. Setting zero_damaged_pages> to true causes
- the system to instead report a warning, zero out the damaged page,
- and continue processing. This behavior will destroy data>,
- 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 may
- be present in the table. So it is useful for recovering data if
- corruption has occurred due to hardware or software error. You should
- generally not set this true until you have given up hope of recovering
- data from the damaged page(s) of a table. The
- default setting is off, and it can only be changed by a superuser.
-
-
-
-
-
+
+
- wal">
-
WAL
+ developer">
+
Source Developer Options
- See also for details on WAL
- tuning.
+ The following options are for work on the PostgreSQL source and for severly
+ crashed databases only. There should be no reason to use them in a production
+ database setup. As such, they have been excluded from the postgresql.conf file.
+ Additionally, many of these options require special source compilation flags
+ to work.
+
- CHECKPOINT_SEGMENTS (integer)
-
- Maximum distance between automatic WAL checkpoints, in log file
- segments (each segment is normally 16 megabytes).
- This option can only be set at server start or in the
- postgresql.conf file.
-
-
-
-
-
- CHECKPOINT_TIMEOUT (integer)
-
- Maximum time between automatic WAL checkpoints, in seconds.
- This option can only be set at server start or in the
- postgresql.conf file.
-
-
-
-
-
- CHECKPOINT_WARNING (integer)
-
- Send a message to the server logs if checkpoints caused by the
- filling of checkpoint segment files happens more frequently than
- this number of seconds. Zero turns off the warning.
-
-
-
-
-
- COMMIT_DELAY (integer)
+ DEBUG_ASSERTIONS (boolean)
- Time delay between writing a commit record to the WAL buffer and
- flushing the buffer out to disk, in microseconds. A nonzero
- delay allows multiple transactions to be committed with only one
- fsync system call, if system load is high
- enough additional transactions may become ready to commit within
- the given interval. But the delay is just wasted if no other
- transactions become ready to commit. Therefore, the delay is
- only performed if at least COMMIT_SIBLINGS other transactions
- are active at the instant that a server process has written its commit
- record.
+ Turns on various assertion checks. This is a debugging aid. If
+ you are experiencing strange problems or crashes you might want
+ to turn this on, as it might expose programming mistakes. To use
+ this option, the macro USE_ASSERT_CHECKING
+ must be defined when
PostgreSQL is
+ built (accomplished by the configure option
+ ). Note that
+ DEBUG_ASSERTIONS defaults to on if
+
PostgreSQL has been built with
+ assertions enabled.
- COMMIT_SIBLINGS (integer)
+ TRACE_NOTIFY (boolean)
- Minimum number of concurrent open transactions to require before
- performing the COMMIT_DELAY> delay. A larger value
- makes it more probable that at least one other transaction will
- become ready to commit during the delay interval.
+ Generates a great amount of debugging output for the
+ LISTEN and NOTIFY
+ commands.
+ or
+ must be DEBUG1 or lower to send output to the client
+ or server logs.
- WAL_BUFFERS (integer)
+ TRACE_LOCKS (boolean)
+ TRACE_USERLOCKS (boolean)
+ TRACE_LOCK_OIDMIN (boolean)
+ TRACE_LOCK_TABLE (boolean)
+ DEBUG_DEADLOCKS (boolean)
+ SHOW_BTREE_BUILD_STATS (boolean)
- Number of disk-page buffers in shared memory for WAL
- logging. The default is 4. This option can only be set at
- server start.
+ Various other code tracing and debugging options.
-
- WAL_SYNC_METHOD (string)
+
+ ZERO_DAMAGED_PAGES (boolean)
- Method used for forcing WAL updates out to disk. Possible
- values are
- FSYNC> (call fsync()> at each commit),
- FDATASYNC> (call fdatasync()> at each commit),
- OPEN_SYNC> (write WAL files with open()> option O_SYNC>), and
- OPEN_DATASYNC> (write WAL files with open()> option O_DSYNC>).
- Not all of these choices are available on all platforms.
- This option can only be set at server start or in the
- postgresql.conf file.
+ Detection of a damaged page header normally causes
+
PostgreSQL> to report an error, aborting the current
+ transaction. Setting zero_damaged_pages> to true causes
+ the system to instead report a warning, zero out the damaged page,
+ and continue processing. This behavior will destroy data>,
+ 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 may
+ be present in the table. So it is useful for recovering data if
+ corruption has occurred due to hardware or software error. You should
+ generally not set this true until you have given up hope of recovering
+ data from the damaged page(s) of a table. The
+ default setting is off, and it can only be changed by a superuser.
-
-
-
-
-
+
+
Short Options
, ,
log_parser_stats=on>,
log_planner_stats=on>,
- log_executor_stats=on>
+ log_executor_stats=on>