From: Bruce Momjian Date: Wed, 25 Jun 2003 01:13:24 +0000 (+0000) Subject: Attached is the fully corrected version of the re-ording patch for X-Git-Tag: REL7_4_BETA1~333 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a5e0bb612ca05b4fda859673d0017a88d2189b1;p=postgresql Attached is the fully corrected version of the re-ording patch for Runtime.sgml and dependant files. Josh Berkus --- diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 21fb68df97..6192eea645 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ @@ -582,656 +582,884 @@ SET ENABLE_SEQSCAN TO OFF; + + + 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) + port - 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).) - - - - - index scan - + + 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) + timeoutauthentication - 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. - + - sequential scan + SSL - 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 - - - GEQO - 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 JOINs, 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) + preload_libraries + + + 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 and Debugging + + Write Ahead Logging - + + See also for details on WAL + tuning. + + + + Settings + + - CLIENT_MIN_MESSAGES (string) + + fsync + + + 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: - - - DEBUG[1-5] - - - Provides information for use by developers. - - - + 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. + - - 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) + + index scan + + + 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) + + sequential scan + + + 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 + + + GEQO + 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 JOINs, 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) @@ -1278,161 +1506,383 @@ SET ENABLE_SEQSCAN TO OFF; + + + + + 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) - timeoutauthentication + 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) - date style + 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) + search_path + pathfor schemas - 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. + - - - deadlock - timeout - - - 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 @@ -1472,143 +1922,89 @@ SET ENABLE_SEQSCAN TO OFF; - + - DYNAMIC_LIBRARY_PATH (string) - dynamic_library_path - dynamic loading + 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 - - - significant digits - - - display - of float numbers - + - EXTRA_FLOAT_DIGITS (integer) + + DATESTYLE (string) + date style - 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) + time zone - 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 for more information. - - fsync - - - 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. + + + + + significant digits + + + display + 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) @@ -1676,91 +2072,22 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' - 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) @@ -1774,272 +2101,271 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' + - PORT (integer) - port + DYNAMIC_LIBRARY_PATH (string) + dynamic_library_path + dynamic loading - 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) - preload_libraries - - 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) - regular expressions + 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) - search_path - pathfor schemas + 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) - inheritance + 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 + + + - SSL + deadlock + timeout + + + 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) + missing from - 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) + regular expressions + - 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) + inheritance - 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) - time zone + HAS_RENDEZVOUS (boolean) + rendezvous - 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 for more information. @@ -2087,195 +2413,64 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' - - 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 + + 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. @@ -2289,27 +2484,27 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' - - 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 @@ -2410,7 +2605,7 @@ $ postmaster -o '-S 1024 -s' , , log_parser_stats=on, log_planner_stats=on, - log_executor_stats=on + log_executor_stats=on