Index: runtime.sgml =================================================================== RCS file: /home/rbt/work/postgresql/cvs/pgsql-server/doc/src/sgml/runtime.sgml,v retrieving revision 1.186 diff -c -r1.186 runtime.sgml *** runtime.sgml 12 Jun 2003 15:58:19 -0000 1.186 --- runtime.sgml 17 Jun 2003 21:48:03 -0000 *************** *** 1,5 **** --- 1,5 ---- *************** *** 582,1237 **** ! ! Planner and Optimizer Tuning ! ! CPU_INDEX_TUPLE_COST (floating point) ! 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. ! ! CPU_TUPLE_COST (floating point) ! 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. ! ! DEFAULT_STATISTICS_TARGET (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. ! ! EFFECTIVE_CACHE_SIZE (floating point) ! 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. ! ENABLE_HASHAGG (boolean) ! 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. ! ENABLE_HASHJOIN (boolean) ! 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. - - ! ! ! index scan ! - 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. - - - - 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. ! ! ENABLE_NESTLOOP (boolean) ! 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. ! ! sequential scan ! ENABLE_SEQSCAN (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. ! ENABLE_SORT (boolean) ! 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) ! 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. ! FROM_COLLAPSE_LIMIT (integer) ! 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. - - ! ! ! genetic query optimization ! ! ! GEQO ! genetic query optimization ! - 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. ! GEQO_EFFORT (integer) ! GEQO_GENERATIONS (integer) ! GEQO_POOL_SIZE (integer) ! GEQO_RANDOM_SEED (integer) ! GEQO_SELECTION_BIAS (floating point) ! 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. ! GEQO_THRESHOLD (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. ! ! JOIN_COLLAPSE_LIMIT (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. ! 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. - ! ! ! 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. ! ! ! ! Logging and Debugging ! ! 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. ! 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. ! ! ! ! ! DEBUG_ASSERTIONS (boolean) ! 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. ! 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. ! EXPLAIN_PRETTY_PRINT (boolean) ! Determines whether EXPLAIN VERBOSE uses the indented ! or non-indented format for displaying detailed query-tree dumps. ! LOG_HOSTNAME (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. ! 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. ! 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. ! 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_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. ! LOG_PID (boolean) ! 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. ! LOG_STATEMENT (boolean) ! Causes each SQL statement to be logged. ! LOG_TIMESTAMP (boolean) ! Prefixes each server log message with a time stamp. The default ! is off. ! LOG_STATEMENT_STATS (boolean) ! LOG_PARSER_STATS (boolean) ! LOG_PLANNER_STATS (boolean) ! LOG_EXECUTOR_STATS (boolean) ! For each query, write performance statistics of the respective ! module to the server log. This is a crude profiling ! instrument. ! LOG_SOURCE_PORT (boolean) ! 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. ! STATS_COMMAND_STRING (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. ! ! STATS_BLOCK_LEVEL (boolean) ! STATS_ROW_LEVEL (boolean) ! 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. ! STATS_RESET_ON_SERVER_START (boolean) ! 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. ! STATS_START_COLLECTOR (boolean) ! 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. SYSLOG (integer) --- 582,1465 ---- + + + Connections and Authentication ! ! Connection Settings ! ! ! TCPIP_SOCKET (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. ! ! 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. ! ! SUPERUSER_RESERVED_CONNECTIONS ! (integer) ! 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. ! ! PORT (integer) ! port ! The TCP port the server listens on; 5432 by default. This ! option can only be set at server start. ! ! ! 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. ! ! ! ! ! Security and Authentication ! ! ! AUTHENTICATION_TIMEOUT (integer) ! timeoutauthentication ! 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. ! ! SSL ! SSL (boolean) ! Enables SSL connections. Please read ! before using this. The default ! is off. ! KRB_SERVER_KEYFILE (string) ! Sets the location of the Kerberos server key file. See ! for details. ! 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). ! DB_USER_NAMESPACE (boolean) ! This allows per-database user names. It is off by default. ! ! 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. ! ! 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 + + ! SHARED_BUFFERS (integer) ! 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. ! SORT_MEM (integer) ! 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. ! ! 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. + + + + Free Space Map + + ! MAX_FSM_PAGES (integer) ! 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. ! ! 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. + + + + + + ! ! Write Ahead Logging ! ! See also for details on WAL ! tuning. ! ! ! ! Settings ! ! ! ! fsync ! ! ! FSYNC (boolean) ! 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. ! ! ! 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. ! ! ! ! ! ! ! Checkpoints ! ! ! 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) ! ! ! 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. ! COMMIT_SIBLINGS (integer) ! 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 + + ! ENABLE_HASHAGG (boolean) ! 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. ! ENABLE_HASHJOIN (boolean) ! 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. ! ! index scan ! ! ! 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. ! 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. ! ENABLE_NESTLOOP (boolean) ! 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. ! ! sequential scan ! ! ! ENABLE_SEQSCAN (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. ! ENABLE_SORT (boolean) ! 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) + ! 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. + + + + + ! EFFECTIVE_CACHE_SIZE (floating point) ! 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. + + + ! CPU_INDEX_TUPLE_COST (floating point) ! 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. ! CPU_TUPLE_COST (floating point) ! 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 + + + ! ! genetic query optimization ! ! ! GEQO ! genetic query optimization ! ! 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. ! GEQO_THRESHOLD (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. ! GEQO_EFFORT (integer) ! GEQO_GENERATIONS (integer) ! GEQO_POOL_SIZE (integer) ! GEQO_RANDOM_SEED (integer) ! GEQO_SELECTION_BIAS (floating point) ! 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 + + ! EXPLAIN_PRETTY_PRINT (boolean) ! Determines whether EXPLAIN VERBOSE uses the indented ! or non-indented format for displaying detailed query-tree dumps. ! ! FROM_COLLAPSE_LIMIT (integer) ! 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. ! JOIN_COLLAPSE_LIMIT (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. ! 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.) + + + + + + + Logging and Debugging + + + Syslog + SYSLOG (integer) *************** *** 1278,1438 **** ! TRACE_NOTIFY (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 or server logs. ! ! ! ! ! General Operation ! ! ! ADD_MISSING_FROM (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. ! AUSTRALIAN_TIMEZONES (boolean) ! Australian time zones ! 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. ! AUTHENTICATION_TIMEOUT (integer) ! timeoutauthentication ! 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. ! CLIENT_ENCODING (string) ! character set encoding ! Sets the client-side encoding (character set). ! The default is to use the database encoding. ! DATESTYLE (string) ! date style ! 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. ! DB_USER_NAMESPACE (boolean) ! This allows per-database user names. It is off by default. ! 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. ! 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. ! ! ! ! ! ! ! deadlock ! timeout ! ! ! timeout ! deadlock ! - 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. transaction isolation level --- 1506,1888 ---- + + + + + 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. + + + ! SILENT_MODE (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. ! ! ! ! ! ! ! ! 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. ! ! ! 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. ! ! ! ! ! LOG_PID (boolean) ! 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. ! LOG_STATEMENT (boolean) ! Causes each SQL statement to be logged. ! LOG_TIMESTAMP (boolean) ! Prefixes each server log message with a time stamp. The default ! is off. ! LOG_HOSTNAME (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. ! LOG_SOURCE_PORT (boolean) ! 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 + ! SEARCH_PATH (string) ! search_path ! pathfor schemas ! 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 . + transaction isolation level *************** *** 1472,1614 **** ! ! DYNAMIC_LIBRARY_PATH (string) ! dynamic_library_path ! dynamic loading ! 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. ! ! ! significant digits ! ! ! display ! of float numbers ! ! EXTRA_FLOAT_DIGITS (integer) ! 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. ! KRB_SERVER_KEYFILE (string) ! Sets the location of the Kerberos server key file. See ! for details. ! ! fsync ! ! ! FSYNC (boolean) ! 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. ! ! This option can only be set at server start or in the ! postgresql.conf file. LC_MESSAGES (string) --- 1922,2010 ---- ! ! STATEMENT_TIMEOUT (integer) ! Aborts any statement that takes over the specified number of ! milliseconds. A value of zero turns off the timer. + + + + + Locale and Formatting ! ! ! DATESTYLE (string) ! date style ! 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. ! TIMEZONE (string) ! time zone ! 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. ! AUSTRALIAN_TIMEZONES (boolean) ! Australian time zones ! 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 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,1766 **** ! 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) ! 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. ! ! 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. ! ! ! ! ! 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) --- 2072,2093 ---- ! CLIENT_ENCODING (string) ! character set encoding ! Sets the client-side encoding (character set). ! The default is to use the database encoding. ! ! ! ! Other Defaults ! PASSWORD_ENCRYPTION (boolean) *************** *** 1774,2045 **** ! PORT (integer) ! port ! The TCP port the server listens on; 5432 by default. This ! option can only be set at server start. - - - - 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. ! REGEX_FLAVOR (string) ! regular expressions ! 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. ! SEARCH_PATH (string) ! search_path ! pathfor schemas ! 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 . ! SHARED_BUFFERS (integer) ! 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. ! SILENT_MODE (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. ! SORT_MEM (integer) ! 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. ! SQL_INHERITANCE (boolean) ! inheritance ! ! ! 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. ! SSL ! SSL (boolean) ! Enables SSL connections. Please read ! before using this. The default ! is off. ! STATEMENT_TIMEOUT (integer) ! Aborts any statement that takes over the specified number of ! milliseconds. A value of zero turns off the timer. ! SUPERUSER_RESERVED_CONNECTIONS ! (integer) - 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. ! TCPIP_SOCKET (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. ! TIMEZONE (string) ! time zone - 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. --- 2101,2371 ---- + ! DYNAMIC_LIBRARY_PATH (string) ! dynamic_library_path ! dynamic loading ! 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. + + + + + + + Statistics + + + Statistics Monitoring + + ! LOG_STATEMENT_STATS (boolean) ! LOG_PARSER_STATS (boolean) ! LOG_PLANNER_STATS (boolean) ! LOG_EXECUTOR_STATS (boolean) ! For each query, write performance statistics of the respective ! module to the server log. This is a crude profiling ! instrument. ! DEFAULT_STATISTICS_TARGET (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. + + + + + + Query and Index Statistics Collector + ! STATS_START_COLLECTOR (boolean) ! 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. ! STATS_COMMAND_STRING (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. ! STATS_BLOCK_LEVEL (boolean) ! STATS_ROW_LEVEL (boolean) ! 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. ! STATS_RESET_ON_SERVER_START (boolean) ! ! ! 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 + + + ! deadlock ! timeout ! ! ! timeout ! deadlock ! 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. ! 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. + + + + + Version and Platform Compatibility + + + Previous Postgres Versions + + ! ADD_MISSING_FROM (boolean) ! missing from + + + + REGEX_FLAVOR (string) + regular expressions + ! 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. ! SQL_INHERITANCE (boolean) ! inheritance ! 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 + + ! HAS_RENDEZVOUS (boolean) ! rendezvous *************** *** 2087,2281 **** ! ! 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 ! ! See also for details on WAL ! tuning. ! 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) ! 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. ! COMMIT_SIBLINGS (integer) ! 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. ! 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. --- 2413,2476 ---- ! ! ! ! Source Developer Options ! ! 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. ! ! DEBUG_ASSERTIONS (boolean) ! 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. ! TRACE_NOTIFY (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 ! or server logs. ! TRACE_LOCKS (boolean) ! TRACE_USERLOCKS (boolean) ! TRACE_LOCK_OIDMIN (boolean) ! TRACE_LOCK_TABLE (boolean) ! DEBUG_DEADLOCKS (boolean) ! SHOW_BTREE_BUILD_STATS (boolean) ! Various other code tracing and debugging options. *************** *** 2289,2315 **** ! ! 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. ! ! ! ! ! Short Options --- 2484,2510 ---- ! ! 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. ! ! Short Options *************** *** 2410,2416 **** , , log_parser_stats=on, log_planner_stats=on, ! log_executor_stats=on --- 2605,2611 ---- , , log_parser_stats=on, log_planner_stats=on, ! log_executor_stats=on