select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

REFERENCE / 460 PARAMETERS

Configuration parameters, documented behavior, and measured default history.

460 of 460 parametersFilled cells = documented or sourced presence. Select a cell to read that version.
ConfigurationVersion coverage
9.09.19.29.39.49.59.61011121314151617181920
bytea_outputClient Connection Defaults

Sets the output format for values of type bytea. Valid values are hex (the default) and escape (the traditional PostgreSQL format). See Section 8.4 for more information. The bytea type always accepts both formats on input, regardless of this setting.

9.0 – 20
check_function_bodiesClient Connection Defaults

This parameter is normally on. When set to off, it disables validation of the routine body string during CREATE FUNCTION and CREATE PROCEDURE. Disabling validation avoids side effects of the validation process, in particular preventing false positiv…

9.0 – 20
client_encodingClient Connection Defaults

Sets the client-side encoding (character set). The default is to use the database encoding. The character sets supported by the PostgreSQL server are described in Section 23.3.1.

9.0 – 20
client_min_messagesClient Connection Defaults

Controls which message levels are sent to the 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 …

9.0 – 20
createrole_self_grantClient Connection Defaults

If a user who has CREATEROLE but not SUPERUSER creates a role, and if this is set to a non-empty value, the newly-created role will be granted to the creating user with the options specified. The value must be set, inherit, or a comma-separated list…

16 – 20
DateStyleClient Connection Defaults

Sets the display format for date and time values, as well as the rules for interpreting ambiguous date input values. For historical reasons, this variable contains two independent components: the output format specification (ISO, Postgres, SQL, or G…

9.0 – 20
default_table_access_methodClient Connection Defaults

This parameter specifies the default table access method to use when creating tables or materialized views if the CREATE command does not explicitly specify an access method, or when SELECT ... INTO is used, which does not allow specifying a table a…

12 – 20
default_tablespaceClient Connection Defaults

This variable specifies the default tablespace in which to create objects (tables and indexes) when a CREATE command does not explicitly specify a tablespace. The value is either the name of a tablespace, or an empty string to specify using the defa…

9.0 – 20
default_text_search_configClient Connection Defaults

Selects the text search configuration that is used by those variants of the text search functions that do not have an explicit argument specifying the configuration. See Chapter 12 for further information. The built-in default is pg_catalog.simple, …

9.0 – 20
default_toast_compressionClient Connection Defaults

This variable sets the default TOAST compression method for values of compressible columns. (This can be overridden for individual columns by setting the COMPRESSION column option in CREATE TABLE or ALTER TABLE.) The supported compression methods ar…

14 – 20
default_transaction_deferrableClient Connection Defaults

When running at the serializable isolation level, a deferrable read-only SQL transaction may be delayed before it is allowed to proceed. However, once it begins executing it does not incur any of the overhead required to ensure serializability; so s…

9.1 – 20
default_transaction_isolationClient Connection Defaults

Each SQL transaction has an isolation level, which can be either “read uncommitted”, “read committed”, “repeatable read”, or “serializable”. This parameter controls the default isolation level of each new transaction. The default is “read committed”…

9.0 – 20
default_transaction_read_onlyClient Connection Defaults

A read-only SQL transaction cannot alter non-temporary tables. This parameter controls the default read-only status of each new transaction. The default is off (read/write). Consult SET TRANSACTION for more information.

9.0 – 20
dynamic_library_pathClient Connection Defaults

If a dynamically loadable module needs to be opened and the file name specified in the CREATE FUNCTION or LOAD command does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the required f…

9.0 – 20
event_triggersClient Connection Defaults

Allow temporarily disabling execution of event triggers in order to troubleshoot and repair faulty event triggers. All event triggers will be disabled by setting it to false. Setting the value to true allows all event triggers to fire, this is the d…

17 – 20
extension_control_pathClient Connection Defaults

A path to search for extensions, specifically extension control files (name.control). The remaining extension script and secondary control files are then loaded from the same directory where the primary control file was found. See Section 36.17.1 fo…

18 – 20
extra_float_digitsClient Connection Defaults

This parameter adjusts the number of digits used for textual output of floating-point values, including float4, float8, and geometric data types. If the value is 1 (the default) or above, float values are output in shortest-precise format; see Secti…

9.0 – 20
gin_fuzzy_search_limitClient Connection Defaults

Soft upper limit of the size of the set returned by GIN index scans. For more information see Section 65.4.5.

9.0 – 20
gin_pending_list_limitClient Connection Defaults

Sets the maximum size of a GIN index's pending list, which is used when fastupdate is enabled. If the list grows larger than this maximum size, it is cleaned up by moving the entries in it to the index's main GIN data structure in bulk. If this valu…

9.5 – 20
icu_validation_levelClient Connection Defaults

When ICU locale validation problems are encountered, controls which message level is used to report the problem. Valid values are DISABLED, DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, and LOG. If set to DISABLED, does not r…

16 – 20
idle_in_transaction_session_timeoutClient Connection Defaults

Terminate any session that has been idle (that is, waiting for a client query) within an open transaction for longer than the specified amount of time. If this value is specified without units, it is taken as milliseconds. A value of zero (the defau…

9.6 – 20
idle_session_timeoutClient Connection Defaults

Terminate any session that has been idle (that is, waiting for a client query), but not within an open transaction, for longer than the specified amount of time. If this value is specified without units, it is taken as milliseconds. A value of zero …

14 – 20
IntervalStyleClient Connection Defaults

Sets the display format for interval values. The value sql_standard will produce output matching SQL standard interval literals. The value postgres (which is the default) will produce output matching PostgreSQL releases prior to 8.4 when the DateSty…

9.0 – 20
jit_providerClient Connection Defaults

This variable is the name of the JIT provider library to be used (see Section 30.4.2). The default is llvmjit. This parameter can only be set at server start. If set to a non-existent library, JIT will not be available, but no error will be raised. …

11 – 20
lc_messagesClient Connection Defaults

Sets the language in which messages are displayed. Acceptable values are system-dependent; see Section 23.1 for more information. If this variable is set to the empty string (which is the default) then the value is inherited from the execution envir…

9.0 – 20
lc_monetaryClient Connection Defaults

Sets the locale to use for formatting monetary amounts, for example with the to_char family of functions. Acceptable values are system-dependent; see Section 23.1 for more information. If this variable is set to the empty string (which is the defaul…

9.0 – 20
lc_numericClient Connection Defaults

Sets the locale to use for formatting numbers, for example with the to_char family of functions. Acceptable values are system-dependent; see Section 23.1 for more information. If this variable is set to the empty string (which is the default) then t…

9.0 – 20
lc_timeClient Connection Defaults

Sets the locale to use for formatting dates and times, for example with the to_char family of functions. Acceptable values are system-dependent; see Section 23.1 for more information. If this variable is set to the empty string (which is the default…

9.0 – 20
local_preload_librariesClient Connection Defaults

This variable specifies one or more shared libraries that are to be preloaded at connection start. It contains a comma-separated list of library names, where each name is interpreted as for the LOAD command. Whitespace between entries is ignored; su…

9.0 – 20
lock_timeoutClient Connection Defaults

Abort any statement that waits longer than the specified amount of time while attempting to acquire a lock on a table, index, row, or other database object. The time limit applies separately to each lock acquisition attempt. The limit applies both t…

9.3 – 20
restrict_nonsystem_relation_kindClient Connection Defaults

Set relation kinds for which access to non-system relations is prohibited. The value takes the form of a comma-separated list of relation kinds. Currently, the supported relation kinds are view and foreign-table.

12 – 20
row_securityClient Connection Defaults

This variable controls whether to raise an error in lieu of applying a row security policy. When set to on, policies apply normally. When set to off, queries fail which would otherwise apply at least one policy. The default is on. Change to off wher…

9.5 – 20
search_pathClient Connection Defaults

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 specified. When there are objects of identical names in different schemas, the one found …

9.0 – 20
session_preload_librariesClient Connection Defaults

This variable specifies one or more shared libraries that are to be preloaded at connection start. It contains a comma-separated list of library names, where each name is interpreted as for the LOAD command. Whitespace between entries is ignored; su…

9.4 – 20
session_replication_roleClient Connection Defaults

Controls firing of replication-related triggers and rules for the current session. Possible values are origin (the default), replica and local. Setting this parameter results in discarding any previously cached query plans. Only superusers and users…

9.0 – 20
shared_preload_librariesClient Connection Defaults

This variable specifies one or more shared libraries to be preloaded at server start. It contains a comma-separated list of library names, where each name is interpreted as for the LOAD command. Whitespace between entries is ignored; surround a libr…

9.0 – 20
statement_timeoutClient Connection Defaults

Abort any statement that takes more than the specified amount of time. If log_min_error_statement is set to ERROR or lower, the statement that timed out will also be logged. If this value is specified without units, it is taken as milliseconds. A va…

9.0 – 20
temp_tablespacesClient Connection Defaults

This variable specifies tablespaces in which to create temporary objects (temp tables and indexes on temp tables) when a CREATE command does not explicitly specify a tablespace. Temporary files for purposes such as sorting large data sets are also c…

9.0 – 20
TimeZoneClient Connection Defaults

Sets the time zone for displaying and interpreting time stamps. The built-in default is GMT, but that is typically overridden in postgresql.conf; initdb will install a setting there corresponding to its system environment. See Section 8.5.3 for more…

9.0 – 20
timezone_abbreviationsClient Connection Defaults

Sets the collection of additional time zone abbreviations that will be accepted by the server for datetime input (beyond any abbreviations defined by the current TimeZone setting). The default is 'Default', which is a collection that works in most o…

9.0 – 20
transaction_deferrableClient Connection Defaults

This parameter reflects the current transaction's deferrability status. At the beginning of each transaction, it is set to the current value of default_transaction_deferrable. Any subsequent attempt to change it is equivalent to a SET TRANSACTION co…

9.1 – 20
transaction_isolationClient Connection Defaults

This parameter reflects the current transaction's isolation level. At the beginning of each transaction, it is set to the current value of default_transaction_isolation. Any subsequent attempt to change it is equivalent to a SET TRANSACTION command.

9.0 – 20
transaction_read_onlyClient Connection Defaults

This parameter reflects the current transaction's read-only status. At the beginning of each transaction, it is set to the current value of default_transaction_read_only. Any subsequent attempt to change it is equivalent to a SET TRANSACTION command.

9.0 – 20
transaction_timeoutClient Connection Defaults

Terminate any session that spans longer than the specified amount of time in a transaction. The limit applies both to explicit transactions (started with BEGIN) and to an implicitly started transaction corresponding to a single statement. If this va…

17 – 20
vacuum_cleanup_index_scale_factorClient Connection Defaults

Specifies the fraction of the total number of heap tuples counted in the previous statistics collection that can be inserted without incurring an index scan at the VACUUM cleanup stage.

11 – 13 · No PG 18 snapshot
xmlbinaryClient Connection Defaults

Sets how binary values are to be encoded in XML. This applies for example when bytea values are converted to XML by the functions xmlelement or xmlforest. Possible values are base64 and hex, which are both defined in the XML Schema standard. The def…

9.0 – 20
xmloptionClient Connection Defaults

Sets whether DOCUMENT or CONTENT is implicit when converting between XML and character string values. See Section 8.13 for a description of this. Valid values are DOCUMENT and CONTENT. The default is CONTENT. According to the SQL standard, the comma…

9.0 – 20
authentication_timeoutConnections and Authentication

Maximum amount of time allowed to complete client authentication. If a would-be client has not completed the authentication protocol in this much time, the server closes the connection. This prevents hung clients from occupying a connection indefini…

9.0 – 20
bonjourConnections and Authentication

Enables advertising the server's existence via Bonjour. The default is off. This parameter can only be set at server start.

9.0 – 20
bonjour_nameConnections and Authentication

Specifies the Bonjour service name. The computer name is used if this parameter is set to the empty string '' (which is the default). This parameter is ignored if the server was not compiled with Bonjour support. This parameter can only be set at se…

9.0 – 20
client_connection_check_intervalConnections and Authentication

Sets the time interval between optional checks that the client is still connected, while running queries. The check is performed by polling the socket, and allows long running queries to be aborted sooner if the kernel reports that the connection is…

14 – 20
db_user_namespaceConnections and Authentication

This parameter enables per-database user names.

9.0 – 16 · No PG 18 snapshot
gss_accept_delegationConnections and Authentication

Sets whether GSSAPI delegation should be accepted from the client. The default is off meaning credentials from the client will not be accepted. Changing this to on will make the server accept credentials delegated to it from the client. This paramet…

16 – 20
krb_caseins_usersConnections and Authentication

Sets whether GSSAPI user names should be treated case-insensitively. The default is off (case sensitive). This parameter can only be set in the postgresql.conf file or on the server command line.

9.0 – 20
krb_server_keyfileConnections and Authentication

Sets the location of the server's Kerberos key file. The default is FILE:/usr/local/pgsql/etc/krb5.keytab (where the directory part is whatever was specified as sysconfdir at build time; use pg_config --sysconfdir to determine that). If this paramet…

9.0 – 20
krb_srvnameConnections and Authentication

Sets the Kerberos service name.

9.0 – 9.3 · No PG 18 snapshot
listen_addressesConnections and Authentication

Specifies the TCP/IP address(es) on which the server is to listen for connections from client applications. The value takes the form of a comma-separated list of host names and/or numeric IP addresses. The special entry * corresponds to all availabl…

9.0 – 20
max_connectionsConnections and Authentication

Determines the maximum number of concurrent connections to the database server. The default is typically 100 connections, but might be less if your kernel settings will not support it (as determined during initdb). This parameter can only be set at …

9.0 – 20
md5_password_warningsConnections and Authentication

Controls whether a WARNING about MD5 password deprecation is produced when a CREATE ROLE or ALTER ROLE statement sets an MD5-encrypted password. The default value is on.

18 – 20
oauth_validator_librariesConnections and Authentication

The library/libraries to use for validating OAuth connection tokens. If only one validator library is provided, it will be used by default for any OAuth connections; otherwise, all oauth HBA entries must explicitly set a validator chosen from this l…

18 – 20
password_encryptionConnections and Authentication

When a password is specified in CREATE ROLE or ALTER ROLE, this parameter determines the algorithm to use to encrypt the password. Possible values are scram-sha-256, which will encrypt the password with SCRAM-SHA-256, and md5, which stores the passw…

9.0 – 20
password_expiration_warning_thresholdConnections and Authentication

When this parameter is greater than zero, the server will emit a WARNING upon successful password authentication if less than this amount of time remains until the authenticated role's password expires.

19 – 20 · No PG 18 snapshot
portConnections and Authentication

The TCP port the server listens on; 5432 by default. Note that the same port number is used for all IP addresses the server listens on. This parameter can only be set at server start.

9.0 – 20
reserved_connectionsConnections and Authentication

Determines the number of connection “slots” that are reserved for connections by roles with privileges of the pg_use_reserved_connections role. Whenever the number of free connection slots is greater than superuser_reserved_connections but less than…

16 – 20
scram_iterationsConnections and Authentication

The number of computational iterations to be performed when encrypting a password using SCRAM-SHA-256. The default is 4096. A higher number of iterations provides additional protection against brute-force attacks on stored passwords, but makes authe…

16 – 20
sslConnections and Authentication

Enables SSL connections. This parameter can only be set in the postgresql.conf file or on the server command line. The default is off.

9.0 – 20
ssl_ca_fileConnections and Authentication

Specifies the name of the file containing the SSL server certificate authority (CA). Relative paths are relative to the data directory. This parameter can only be set in the postgresql.conf file or on the server command line. The default is empty, m…

9.2 – 20
ssl_cert_fileConnections and Authentication

Specifies the name of the file containing the SSL server certificate. Relative paths are relative to the data directory. This parameter can only be set in the postgresql.conf file or on the server command line. The default is server.crt.

9.2 – 20
ssl_ciphersConnections and Authentication

Specifies a list of SSL ciphers that are allowed by connections using TLS version 1.2 and lower, see ssl_tls13_ciphers for TLS version 1.3 connections. See the ciphers manual page in the OpenSSL package for the syntax of this setting and a list of s…

9.0 – 20
ssl_crl_dirConnections and Authentication

Specifies the name of the directory containing the SSL client certificate revocation list (CRL). Relative paths are relative to the data directory. This parameter can only be set in the postgresql.conf file or on the server command line. The default…

14 – 20
ssl_crl_fileConnections and Authentication

Specifies the name of the file containing the SSL client certificate revocation list (CRL). Relative paths are relative to the data directory. This parameter can only be set in the postgresql.conf file or on the server command line. The default is e…

9.2 – 20
ssl_dh_params_fileConnections and Authentication

Specifies the name of the file containing Diffie-Hellman parameters used for so-called ephemeral DH family of SSL ciphers. The default is empty, in which case compiled-in default DH parameters used. Using custom DH parameters reduces the exposure if…

10 – 20
ssl_ecdh_curveConnections and Authentication

Specifies the name of the curve to use in ECDH key exchange.

9.4 – 17 · No PG 18 snapshot
ssl_groupsConnections and Authentication

Specifies the named group to use for TLS key exchange. It needs to be supported by all clients that connect. Multiple groups can be specified by using a colon-separated list. It does not need to match the key type used by the server certificate. Thi…

18 – 20
ssl_key_fileConnections and Authentication

Specifies the name of the file containing the SSL server private key. Relative paths are relative to the data directory. This parameter can only be set in the postgresql.conf file or on the server command line. The default is server.key.

9.2 – 20
ssl_max_protocol_versionConnections and Authentication

Sets the maximum SSL/TLS protocol version to use. Valid values are as for ssl_min_protocol_version, with addition of an empty string, which allows any protocol version. The default is to allow any version. Setting the maximum protocol version is mai…

12 – 20
ssl_min_protocol_versionConnections and Authentication

Sets the minimum SSL/TLS protocol version to use. Valid values are currently: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. Older versions of the OpenSSL library do not support all values; an error will be raised if an unsupported setting is chosen. Protocol ve…

12 – 20
ssl_passphrase_commandConnections and Authentication

Sets an external command to be invoked when a passphrase for decrypting an SSL file such as a private key needs to be obtained. By default, this parameter is empty, which means the built-in prompting mechanism is used. The command must print the pas…

11 – 20
ssl_passphrase_command_supports_reloadConnections and Authentication

This parameter determines whether the passphrase command set by ssl_passphrase_command will also be called during a configuration reload if a key file needs a passphrase. If this parameter is off (the default), then ssl_passphrase_command will be ig…

11 – 20
ssl_prefer_server_ciphersConnections and Authentication

Specifies whether to use the server's SSL cipher preferences, rather than the client's. This parameter can only be set in the postgresql.conf file or on the server command line. The default is on. PostgreSQL versions before 9.4 do not have this sett…

9.4 – 20
ssl_renegotiation_limitConnections and Authentication

Specifies how much data can flow over an SSL-encrypted connection before renegotiation of the session keys will take place.

9.0 – 9.4 · No PG 18 snapshot
ssl_sniConnections and Authentication

Enables SNI configuration for SSL connections.

19 – 20 · No PG 18 snapshot
ssl_tls13_ciphersConnections and Authentication

Specifies a list of cipher suites that are allowed by connections using TLS version 1.3. Multiple cipher suites can be specified by using a colon separated list. If left blank, the default set of cipher suites in OpenSSL will be used. This parameter…

18 – 20
superuser_reserved_connectionsConnections and Authentication

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_conne…

9.0 – 20
tcp_keepalives_countConnections and Authentication

Specifies the number of TCP keepalive messages that can be lost before the server's connection to the client is considered dead. A value of 0 (the default) selects the operating system's default. This parameter is supported only on systems that supp…

9.0 – 20
tcp_keepalives_idleConnections and Authentication

Specifies the amount of time with no network activity after which the operating system should send a TCP keepalive message to the client. If this value is specified without units, it is taken as seconds. A value of 0 (the default) selects the operat…

9.0 – 20
tcp_keepalives_intervalConnections and Authentication

Specifies the amount of time after which a TCP keepalive message that has not been acknowledged by the client should be retransmitted. If this value is specified without units, it is taken as seconds. A value of 0 (the default) selects the operating…

9.0 – 20
tcp_user_timeoutConnections and Authentication

Specifies the amount of time that transmitted data may remain unacknowledged before the TCP connection is forcibly closed. If this value is specified without units, it is taken as milliseconds. A value of 0 (the default) selects the operating system…

12 – 20
unix_socket_directoriesConnections and Authentication

Specifies the directory of the Unix-domain socket(s) on which the server is to listen for connections from client applications. Multiple sockets can be created by listing multiple directories separated by commas. Whitespace between entries is ignore…

9.3 – 20
unix_socket_directoryConnections and Authentication

Specifies the directory of the Unix-domain socket on which the server is to listen for connections from client applications.

9.0 – 9.2 · No PG 18 snapshot
unix_socket_groupConnections and Authentication

Sets the owning group of the Unix-domain socket(s). (The owning user of the sockets is always the user that starts the server.) In combination with the parameter unix_socket_permissions this can be used as an additional access control mechanism for …

9.0 – 20
unix_socket_permissionsConnections and Authentication

Sets the access permissions of the Unix-domain socket(s). Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specified in the format accepted by the chmod and umask system calls. (…

9.0 – 20
custom_variable_classesCustomized Options

This variable specifies one or several class names to be used for custom variables, in the form of a comma-separated list.

9.0 – 9.1 · No PG 18 snapshot
allow_in_place_tablespacesDeveloper Options

Allows tablespaces to be created as directories inside pg_tblspc, when an empty location string is provided to the CREATE TABLESPACE command. This is intended to allow testing replication scenarios where primary and standby servers are running on th…

10 – 20
allow_system_table_modsDeveloper Options

Allows modification of the structure of system tables as well as certain other risky actions on system tables. This is otherwise not allowed even for superusers. Ill-advised use of this setting can cause irretrievable data loss or seriously corrupt …

9.0 – 20
backtrace_functionsDeveloper Options

This parameter contains a comma-separated list of C function names. If an error is raised and the name of the internal C function where the error happens matches a value in the list, then a backtrace is written to the server log together with the er…

13 – 20
debug_copy_parse_plan_treesDeveloper Options

Enabling this forces all parse and plan trees to be passed through copyObject(), to facilitate catching errors and omissions in copyObject(). The default is off. This parameter is only available when DEBUG_NODE_TESTS_ENABLED was defined at compile t…

18 – 20
debug_deadlocksDeveloper Options

If set, dumps information about all current locks when a deadlock timeout occurs. This parameter is only available if the LOCK_DEBUG macro was defined when PostgreSQL was compiled.

9.0 – 20
debug_discard_cachesDeveloper Options

When set to 1, each system catalog cache entry is invalidated at the first possible opportunity, whether or not anything that would render it invalid really occurred. Caching of system catalogs is effectively disabled as a result, so the server will…

14 – 20
debug_io_directDeveloper Options

Ask the kernel to minimize caching effects for relation data and WAL files using O_DIRECT (most Unix-like systems), F_NOCACHE (macOS) or FILE_FLAG_NO_BUFFERING (Windows). May be set to an empty string (the default) to disable use of direct I/O, or a…

16 – 20
debug_logical_replication_streamingDeveloper Options

The allowed values are buffered and immediate. The default is buffered. This parameter is intended to be used to test logical decoding and replication of large transactions. The effect of debug_logical_replication_streaming is different for the publ…

16 – 20
debug_parallel_queryDeveloper Options

Allows the use of parallel queries for testing purposes even in cases where no performance benefit is expected. The allowed values of debug_parallel_query are off (use parallel mode only when it is expected to improve performance), on (force paralle…

16 – 20
debug_raw_expression_coverage_testDeveloper Options

Enabling this forces all raw parse trees for DML statements to be scanned by raw_expression_tree_walker(), to facilitate catching errors and omissions in that function. The default is off. This parameter is only available when DEBUG_NODE_TESTS_ENABL…

18 – 20
debug_write_read_parse_plan_treesDeveloper Options

Enabling this forces all parse and plan trees to be passed through outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in those modules. The default is off. This parameter is only available when DEBUG_NODE_TESTS_ENABLED was defined a…

18 – 20
force_parallel_modeDeveloper Options

Allows the use of parallel queries for testing purposes even in cases where no performance benefit is expected.

9.6 – 15 · No PG 18 snapshot
ignore_checksum_failureDeveloper Options

Only has effect if data checksums are enabled. Detection of a checksum failure during a read normally causes PostgreSQL to report an error, aborting the current transaction. Setting ignore_checksum_failure to on causes the system to ignore the failu…

9.3 – 20
ignore_invalid_pagesDeveloper Options

If set to off (the default), detection of WAL records having references to invalid pages during recovery causes PostgreSQL to raise a PANIC-level error, aborting the recovery. Setting ignore_invalid_pages to on causes the system to ignore invalid pa…

13 – 20
ignore_system_indexesDeveloper Options

Ignore system indexes when reading system tables (but still update the indexes when modifying the tables). This is useful when recovering from damaged system indexes. This parameter cannot be changed after session start.

9.0 – 20
jit_debugging_supportDeveloper Options

If LLVM has the required functionality, register generated functions with GDB. This makes debugging easier. The default setting is off. Only superusers and users with the appropriate SET privilege can change this parameter at session start, and it c…

11 – 20
jit_dump_bitcodeDeveloper Options

Writes the generated LLVM IR out to the file system, inside data_directory. This is only useful for working on the internals of the JIT implementation. The default setting is off. Only superusers and users with the appropriate SET privilege can chan…

11 – 20
jit_expressionsDeveloper Options

Determines whether expressions are JIT compiled, when JIT compilation is activated (see Section 30.2). The default is on.

11 – 20
jit_profiling_supportDeveloper Options

If LLVM has the required functionality, emit the data needed to allow perf to profile functions generated by JIT. This writes out files to ~/.debug/jit/; the user is responsible for performing cleanup when desired. The default setting is off. Only s…

11 – 20
jit_tuple_deformingDeveloper Options

Determines whether tuple deforming is JIT compiled, when JIT compilation is activated (see Section 30.2). The default is on.

11 – 20
log_btree_build_statsDeveloper Options

If set, logs system resource usage statistics (memory and CPU) on various B-tree operations. This parameter is only available if the BTREE_BUILD_STATS macro was defined when PostgreSQL was compiled.

9.0 – 20
post_auth_delayDeveloper Options

The amount of time to delay when a new server process is started, after it conducts the authentication procedure. This is intended to give developers an opportunity to attach to the server process with a debugger. If this value is specified without …

9.0 – 20
pre_auth_delayDeveloper Options

The amount of time to delay just after a new server process is forked, before it conducts the authentication procedure. This is intended to give developers an opportunity to attach to the server process with a debugger to trace down misbehavior in a…

9.0 – 20
remove_temp_files_after_crashDeveloper Options

When set to on, which is the default, PostgreSQL will automatically remove temporary files after a backend crash. If disabled, the files will be retained and may be used for debugging, for example. Repeated crashes may however result in accumulation…

14 – 20
send_abort_for_crashDeveloper Options

By default, after a backend crash the postmaster will stop remaining child processes by sending them SIGQUIT signals, which permits them to exit more-or-less gracefully. When this option is set to on, SIGABRT is sent instead. That normally results i…

16 – 20
send_abort_for_killDeveloper Options

By default, after attempting to stop a child process with SIGQUIT, the postmaster will wait five seconds and then send SIGKILL to force immediate termination. When this option is set to on, SIGABRT is sent instead of SIGKILL. That normally results i…

16 – 20
trace_connection_negotiationDeveloper Options

Logs details of pre-authentication connection handshake.

17 – 19
trace_lock_oidminDeveloper Options

If set, do not trace locks for tables below this OID (used to avoid output on system tables). This parameter is only available if the LOCK_DEBUG macro was defined when PostgreSQL was compiled.

9.0 – 20
trace_lock_tableDeveloper Options

Unconditionally trace locks on this table (OID). This parameter is only available if the LOCK_DEBUG macro was defined when PostgreSQL was compiled.

9.0 – 20
trace_locksDeveloper Options

If on, emit information about lock usage. Information dumped includes the type of lock operation, the type of lock and the unique identifier of the object being locked or unlocked. Also included are bit masks for the lock types already granted on th…

9.0 – 20
trace_lwlocksDeveloper Options

If on, emit information about lightweight lock usage. Lightweight locks are intended primarily to provide mutual exclusion of access to shared-memory data structures. This parameter is only available if the LOCK_DEBUG macro was defined when PostgreS…

9.0 – 20
trace_notifyDeveloper Options

Generates a great amount of debugging output for the LISTEN and NOTIFY commands. client_min_messages or log_min_messages must be DEBUG1 or lower to send this output to the client or server logs, respectively.

9.0 – 20
trace_recovery_messagesDeveloper Options

Enables logging of recovery-related debugging output that otherwise would not be logged.

9.0 – 16 · No PG 18 snapshot
trace_sortDeveloper Options

If on, emit information about resource usage during sort operations.

9.0 – 20
trace_userlocksDeveloper Options

If on, emit information about user lock usage. Output is the same as for trace_locks, only for advisory locks. This parameter is only available if the LOCK_DEBUG macro was defined when PostgreSQL was compiled.

9.0 – 20
wal_consistency_checkingDeveloper Options

This parameter is intended to be used to check for bugs in the WAL redo routines. When enabled, full-page images of any buffers modified in conjunction with the WAL record are added to the record. If the record is subsequently replayed, the system w…

10 – 20
wal_debugDeveloper Options

If on, emit WAL-related debugging output. This parameter is only available if the WAL_DEBUG macro was defined when PostgreSQL was compiled.

9.0 – 20
zero_damaged_pagesDeveloper Options

Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to on causes the system to instead report a warning, zero out the damaged page in memory, and continue pro…

9.0 – 20
data_sync_retryError Handling

When set to off, which is the default, PostgreSQL will raise a PANIC-level error on failure to flush modified data files to the file system. This causes the database server to crash. This parameter can only be set at server start. On some operating …

9.4 – 20
exit_on_errorError Handling

If on, any error will terminate the current session. By default, this is set to off, so that only FATAL errors will terminate the session.

9.1 – 20
recovery_init_sync_methodError Handling

When set to fsync, which is the default, PostgreSQL will recursively open and synchronize all files in the data directory before crash recovery begins. The search for files will follow symbolic links for the WAL directory and each configured tablesp…

14 – 20
restart_after_crashError Handling

When set to on, which is the default, PostgreSQL will automatically reinitialize after a backend crash. Leaving this value set to on is normally the best way to maximize the availability of the database. However, in some circumstances, such as when …

9.1 – 20
config_fileFile Locations

Specifies the main server configuration file (customarily called postgresql.conf). This parameter can only be set on the postgres command line.

9.0 – 20
data_directoryFile Locations

Specifies the directory to use for data storage. This parameter can only be set at server start.

9.0 – 20
extension_destdirFile Locations

Path to prepend for extension loading.

9.5 – 17 · No PG 18 snapshot
external_pid_fileFile Locations

Specifies the name of an additional process-ID (PID) file that the server should create for use by server administration programs. This parameter can only be set at server start.

9.0 – 20
hba_fileFile Locations

Specifies the configuration file for host-based authentication (customarily called pg_hba.conf). This parameter can only be set at server start.

9.0 – 20
hosts_fileFile Locations

Specifies the configuration file for host-based SSL configuration (customarily called pg_hosts.conf).

19 – 20 · No PG 18 snapshot
ident_fileFile Locations

Specifies the configuration file for user name mapping (customarily called pg_ident.conf). This parameter can only be set at server start. See also Section 20.2.

9.0 – 20
deadlock_timeoutLock Management

This is the amount of time to wait on a lock before checking to see if there is a deadlock condition. The check for deadlock is relatively expensive, so the server doesn't run it every time it waits for a lock. We optimistically assume that deadlock…

9.0 – 20
max_locks_per_transactionLock Management

The shared lock table has space for max_locks_per_transaction objects (e.g., tables) per server process or prepared transaction; hence, no more than this many distinct objects can be locked at any one time. This parameter limits the average number o…

9.0 – 20
max_pred_locks_per_pageLock Management

This controls how many rows on a single page can be predicate-locked before the lock is promoted to covering the whole page. The default is 2. This parameter can only be set in the postgresql.conf file or on the server command line.

10 – 20
max_pred_locks_per_relationLock Management

This controls how many pages or tuples of a single relation can be predicate-locked before the lock is promoted to covering the whole relation. Values greater than or equal to zero mean an absolute limit, while negative values mean max_pred_locks_pe…

10 – 20
max_pred_locks_per_transactionLock Management

The shared predicate lock table has space for max_pred_locks_per_transaction objects (e.g., tables) per server process or prepared transaction; hence, no more than this many distinct objects can be locked at any one time. This parameter limits the a…

9.1 – 20
block_sizePreset Options

Reports the size of a disk block. It is determined by the value of BLCKSZ when building the server. The default value is 8192 bytes. The meaning of some configuration variables (such as shared_buffers) is influenced by block_size. See Section 19.4 f…

9.0 – 20
data_checksumsPreset Options

Reports whether data checksums are enabled for this cluster. See -k for more information.

9.3 – 20
data_directory_modePreset Options

On Unix systems this parameter reports the permissions the data directory (defined by data_directory) had at server startup. (On Microsoft Windows this parameter will always display 0700.) See the initdb -g option for more information.

11 – 20
debug_assertionsPreset Options

Reports whether PostgreSQL has been built with assertions enabled. That is the case if the macro USE_ASSERT_CHECKING is defined when PostgreSQL is built (accomplished e.g., by the configure option --enable-cassert). By default PostgreSQL is built wi…

9.0 – 20
debug_exec_backendPreset Options

Reports whether PostgreSQL has been built with EXEC_BACKEND enabled.

19 – 20 · No PG 18 snapshot
effective_wal_levelPreset Options

Reports the actual WAL logging level currently in effect in the system.

19 – 20 · No PG 18 snapshot
huge_pages_statusPreset Options

Reports the state of huge pages in the current instance: on, off, or unknown (if displayed with postgres -C). This parameter is useful to determine whether allocation of huge pages was successful under huge_pages=try. See huge_pages for more informa…

17 – 20
in_hot_standbyPreset Options

Reports whether the server is currently in hot standby mode. When this is on, all transactions are forced to be read-only. Within a session, this can change only if the server is promoted to be primary. See Section 26.4 for more information.

14 – 20
integer_datetimesPreset Options

Reports whether PostgreSQL was built with support for 64-bit-integer dates and times. As of PostgreSQL 10, this is always on.

9.0 – 20
lc_collatePreset Options

Reports the locale in which sorting of textual data is done.

9.0 – 15 · No PG 18 snapshot
lc_ctypePreset Options

Reports the locale that determines character classifications.

9.0 – 15 · No PG 18 snapshot
max_function_argsPreset Options

Reports the maximum number of function arguments. It is determined by the value of FUNC_MAX_ARGS when building the server. The default value is 100 arguments.

9.0 – 20
max_identifier_lengthPreset Options

Reports the maximum identifier length. It is determined as one less than the value of NAMEDATALEN when building the server. The default value of NAMEDATALEN is 64; therefore the default max_identifier_length is 63 bytes, which can be less than 63 ch…

9.0 – 20
max_index_keysPreset Options

Reports the maximum number of index keys. It is determined by the value of INDEX_MAX_KEYS when building the server. The default value is 32 keys.

9.0 – 20
num_os_semaphoresPreset Options

Reports the number of semaphores that are needed for the server based on the configured number of allowed connections (max_connections), allowed autovacuum worker processes (autovacuum_max_workers), allowed WAL sender processes (max_wal_senders), al…

18 – 20
segment_sizePreset Options

Reports the number of blocks (pages) that can be stored within a file segment. It is determined by the value of RELSEG_SIZE when building the server. The maximum size of a segment file in bytes is equal to segment_size multiplied by block_size; by d…

9.0 – 20
server_encodingPreset Options

Reports the database encoding (character set). It is determined when the database is created. Ordinarily, clients need only be concerned with the value of client_encoding.

9.0 – 20
server_versionPreset Options

Reports the version number of the server. It is determined by the value of PG_VERSION when building the server.

9.0 – 20
server_version_numPreset Options

Reports the version number of the server as an integer. It is determined by the value of PG_VERSION_NUM when building the server.

9.0 – 20
shared_memory_sizePreset Options

Reports the size of the main shared memory area, rounded up to the nearest megabyte.

15 – 20
shared_memory_size_in_huge_pagesPreset Options

Reports the number of huge pages that are needed for the main shared memory area based on the specified huge_page_size. If huge pages are not supported, this will be -1. This setting is supported only on Linux. It is always set to -1 on other platfo…

15 – 20
ssl_libraryPreset Options

Reports the name of the SSL library that this PostgreSQL server was built with (even if SSL is not currently configured or in use on this instance), for example OpenSSL, or an empty string if none.

12 – 20
wal_block_sizePreset Options

Reports the size of a WAL disk block. It is determined by the value of XLOG_BLCKSZ when building the server. The default value is 8192 bytes.

9.0 – 20
wal_segment_sizePreset Options

Reports the size of write ahead log segments. The default value is 16MB. See Section 28.5 for more information.

9.0 – 20
constraint_exclusionQuery Tuning

Controls the query planner's use of table constraints to optimize queries. The allowed values of constraint_exclusion are on (examine constraints for all tables), off (never examine constraints), and partition (examine constraints only for inheritan…

9.0 – 20
cpu_index_tuple_costQuery Tuning

Sets the planner's estimate of the cost of processing each index entry during an index scan. The default is 0.005.

9.0 – 20
cpu_operator_costQuery Tuning

Sets the planner's estimate of the cost of processing each operator or function executed during a query. The default is 0.0025.

9.0 – 20
cpu_tuple_costQuery Tuning

Sets the planner's estimate of the cost of processing each row during a query. The default is 0.01.

9.0 – 20
cursor_tuple_fractionQuery Tuning

Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved. The default is 0.1. Smaller values of this setting bias the planner towards using “fast start” plans for cursors, which will retrieve the first few rows quickly w…

9.0 – 20
default_statistics_targetQuery Tuning

Sets the default statistics target for table columns without a column-specific target set via ALTER TABLE SET STATISTICS. Larger values increase the time needed to do ANALYZE, but might improve the quality of the planner's estimates. The default is …

9.0 – 20
effective_cache_sizeQuery Tuning

Sets the planner's assumption about the effective size of the disk cache that is available to a single query. This is factored into estimates of the cost of using an index; a higher value makes it more likely index scans will be used, a lower value …

9.0 – 20
enable_async_appendQuery Tuning

Enables or disables the query planner's use of async-aware append plan types. The default is on.

14 – 20
enable_bitmapscanQuery Tuning

Enables or disables the query planner's use of bitmap-scan plan types. The default is on.

9.0 – 20
enable_distinct_reorderingQuery Tuning

Enables or disables the query planner's ability to reorder DISTINCT keys to match the input path's pathkeys. The default is on.

18 – 20
enable_eager_aggregateQuery Tuning

Enables or disables the query planner's ability to partially push aggregation past a join, and finalize it once all the relations are joined.

19 – 20 · No PG 18 snapshot
enable_gathermergeQuery Tuning

Enables or disables the query planner's use of gather merge plan types. The default is on.

10 – 20
enable_group_by_reorderingQuery Tuning

Controls if the query planner will produce a plan which will provide GROUP BY keys sorted in the order of keys of a child node of the plan, such as an index scan. When disabled, the query planner will produce a plan with GROUP BY keys only sorted to…

17 – 20
enable_groupaggQuery Tuning

Enables or disables the query planner's use of sort-based grouping and aggregation plan types.

20 – 20 · No PG 18 snapshot
enable_hashaggQuery Tuning

Enables or disables the query planner's use of hashed aggregation plan types. The default is on.

9.0 – 20
enable_hashjoinQuery Tuning

Enables or disables the query planner's use of hash-join plan types. The default is on.

9.0 – 20
enable_incremental_sortQuery Tuning

Enables or disables the query planner's use of incremental sort steps. The default is on.

13 – 20
enable_indexonlyscanQuery Tuning

Enables or disables the query planner's use of index-only-scan plan types (see Section 11.9). The default is on. The enable_indexscan setting must also be enabled to have the query planner consider index-only-scans.

9.2 – 20
enable_indexscanQuery Tuning

Enables or disables the query planner's use of index-scan and index-only-scan plan types. The default is on. Also see enable_indexonlyscan.

9.0 – 20
enable_materialQuery Tuning

Enables or disables the query planner's use of materialization. It is impossible to suppress materialization entirely, but turning this variable off prevents the planner from inserting materialize nodes except in cases where it is required for corre…

9.0 – 20
enable_memoizeQuery Tuning

Enables or disables the query planner's use of memoize plans for caching results from parameterized scans inside nested-loop joins. This plan type allows scans to the underlying plans to be skipped when the results for the current parameters are alr…

14 – 20
enable_mergejoinQuery Tuning

Enables or disables the query planner's use of merge-join plan types. The default is on.

9.0 – 20
enable_nestloopQuery Tuning

Enables or disables the query planner's use of nested-loop join plans. It is impossible to suppress nested-loop joins entirely, but turning this variable off discourages the planner from using one if there are other methods available. The default is…

9.0 – 20
enable_parallel_appendQuery Tuning

Enables or disables the query planner's use of parallel-aware append plan types. The default is on.

11 – 20
enable_parallel_hashQuery Tuning

Enables or disables the query planner's use of hash-join plan types with parallel hash. Has no effect if hash-join plans are not also enabled. The default is on.

11 – 20
enable_partition_pruningQuery Tuning

Enables or disables the query planner's ability to eliminate a partitioned table's partitions from query plans. This also controls the planner's ability to generate query plans which allow the query executor to remove (ignore) partitions during quer…

11 – 20
enable_partitionwise_aggregateQuery Tuning

Enables or disables the query planner's use of partitionwise grouping or aggregation, which allows grouping or aggregation on partitioned tables to be performed separately for each partition. If the GROUP BY clause does not include the partition key…

11 – 20
enable_partitionwise_joinQuery Tuning

Enables or disables the query planner's use of partitionwise join, which allows a join between partitioned tables to be performed by joining the matching partitions. Partitionwise join currently applies only when the join conditions include all the …

11 – 20
enable_presorted_aggregateQuery Tuning

Controls if the query planner will produce a plan which will provide rows which are presorted in the order required for the query's ORDER BY / DISTINCT aggregate functions. When disabled, the query planner will produce a plan which will always requi…

16 – 20
enable_self_join_eliminationQuery Tuning

Enables or disables the query planner's optimization which analyses the query tree and replaces self joins with semantically equivalent single scans. Takes into consideration only plain tables. The default is on.

18 – 20
enable_seqscanQuery Tuning

Enables or disables the query planner's use of sequential scan plan types. It is impossible to suppress sequential scans entirely, but turning this variable off discourages the planner from using one if there are other methods available. The default…

9.0 – 20
enable_sortQuery Tuning

Enables or disables the query planner's use of explicit sort steps. It is impossible to suppress explicit sorts entirely, but turning this variable off discourages the planner from using one if there are other methods available. The default is on.

9.0 – 20
enable_tidscanQuery Tuning

Enables or disables the query planner's use of TID scan plan types. The default is on.

9.0 – 20
from_collapse_limitQuery Tuning

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 might yield inferior query plans. The default is eight. For more information see Sectio…

9.0 – 20
geqoQuery Tuning

Enables or disables genetic query optimization. This is on by default. It is usually best not to turn it off in production; the geqo_threshold variable provides more granular control of GEQO.

9.0 – 20
geqo_effortQuery Tuning

Controls the trade-off between planning time and query plan quality in GEQO. This variable must be an integer in the range from 1 to 10. The default value is five. Larger values increase the time spent doing query planning, but also increase the lik…

9.0 – 20
geqo_generationsQuery Tuning

Controls the number of generations used by GEQO, that is the number of iterations of the algorithm. It must be at least one, and useful values are in the same range as the pool size. If it is set to zero (the default setting) then a suitable value i…

9.0 – 20
geqo_pool_sizeQuery Tuning

Controls the pool size used by GEQO, that is the number of individuals in the genetic population. It must be at least two, and useful values are typically 100 to 1000. If it is set to zero (the default setting) then a suitable value is chosen based …

9.0 – 20
geqo_seedQuery Tuning

Controls the initial value of the random number generator used by GEQO to select random paths through the join order search space. The value can range from zero (the default) to one. Varying the value changes the set of join paths explored, and may …

9.0 – 20
geqo_selection_biasQuery Tuning

Controls the selection bias used by GEQO. The selection bias is the selective pressure within the population. Values can be from 1.50 to 2.00; the latter is the default.

9.0 – 20
geqo_thresholdQuery Tuning

Use genetic query optimization to plan queries with at least this many FROM items involved. (Note that a FULL OUTER JOIN construct counts as only one FROM item.) The default is 12. For simpler queries it is usually best to use the regular, exhaustiv…

9.0 – 20
jitQuery Tuning

Determines whether JIT compilation may be used by PostgreSQL, if available (see Chapter 30). The default is on.

11 – 20
jit_above_costQuery Tuning

Sets the query cost above which JIT compilation is activated, if enabled (see Chapter 30). Performing JIT costs planning time but can accelerate query execution. Setting this to -1 disables JIT compilation. The default is 100000.

11 – 20
jit_inline_above_costQuery Tuning

Sets the query cost above which JIT compilation attempts to inline functions and operators. Inlining adds planning time, but can improve execution speed. It is not meaningful to set this to less than jit_above_cost. Setting this to -1 disables inlin…

11 – 20
jit_optimize_above_costQuery Tuning

Sets the query cost above which JIT compilation applies expensive optimizations. Such optimization adds planning time, but can improve execution speed. It is not meaningful to set this to less than jit_above_cost, and it is unlikely to be beneficial…

11 – 20
join_collapse_limitQuery Tuning

The planner will rewrite explicit JOIN constructs (except FULL JOINs) into lists of FROM items whenever a list of no more than this many items would result. Smaller values reduce planning time but might yield inferior query plans. By default, this v…

9.0 – 20
min_eager_agg_group_sizeQuery Tuning

Sets the minimum average group size required to consider applying eager aggregation.

19 – 20 · No PG 18 snapshot
min_parallel_index_scan_sizeQuery Tuning

Sets the minimum amount of index data that must be scanned in order for a parallel scan to be considered. Note that a parallel index scan typically won't touch the entire index; it is the number of pages which the planner believes will actually be t…

10 – 20
min_parallel_relation_sizeQuery Tuning

Sets the minimum size of relations to be considered for parallel scan.

9.6 – 9.6 · No PG 18 snapshot
min_parallel_table_scan_sizeQuery Tuning

Sets the minimum amount of table data that must be scanned in order for a parallel scan to be considered. For a parallel sequential scan, the amount of table data scanned is always equal to the size of the table, but when indexes are used the amount…

10 – 20
parallel_setup_costQuery Tuning

Sets the planner's estimate of the cost of launching parallel worker processes. The default is 1000.

9.6 – 20
parallel_tuple_costQuery Tuning

Sets the planner's estimate of the cost of transferring one tuple from a parallel worker process to another process. The default is 0.1.

9.6 – 20
plan_cache_modeQuery Tuning

Prepared statements (either explicitly prepared or implicitly generated, for example by PL/pgSQL) can be executed using custom or generic plans. Custom plans are made afresh for each execution using its specific set of parameter values, while generi…

12 – 20
random_page_costQuery Tuning

Sets the planner's estimate of the cost of a non-sequentially-fetched disk page. The default is 4.0. This value can be overridden for tables and indexes in a particular tablespace by setting the tablespace parameter of the same name (see ALTER TABLE…

9.0 – 20
recursive_worktable_factorQuery Tuning

Sets the planner's estimate of the average size of the working table of a recursive query, as a multiple of the estimated size of the initial non-recursive term of the query. This helps the planner choose the most appropriate method for joining the …

15 – 20
seq_page_costQuery Tuning

Sets the planner's estimate of the cost of a disk page fetch that is part of a series of sequential fetches. The default is 1.0. This value can be overridden for tables and indexes in a particular tablespace by setting the tablespace parameter of th…

9.0 – 20
hot_standbyReplication

Specifies whether or not you can connect and run queries during recovery, as described in Section 26.4. The default value is on. This parameter can only be set at server start. It only has effect during archive recovery or in standby mode.

9.0 – 20
hot_standby_feedbackReplication

Specifies whether or not a hot standby will send feedback to the primary or upstream standby about queries currently executing on the standby. This parameter can be used to eliminate query cancels caused by cleanup records, but can cause database bl…

9.1 – 20
idle_replication_slot_timeoutReplication

Invalidate replication slots that have remained inactive (not used by a replication connection) for longer than this duration. If this value is specified without units, it is taken as seconds. A value of zero (the default) disables the idle timeout …

18 – 20
max_active_replication_originsReplication

Specifies how many replication origins (see Chapter 48) can be tracked simultaneously, effectively limiting how many logical replication subscriptions can be created on the server. Setting it to a lower value than the current number of tracked repli…

18 – 20
max_logical_replication_workersReplication

Specifies maximum number of logical replication workers. This includes leader apply workers, parallel apply workers, and table synchronization workers. Logical replication workers are taken from the pool defined by max_worker_processes. The default …

10 – 20
max_parallel_apply_workers_per_subscriptionReplication

Maximum number of parallel apply workers per subscription. This parameter controls the amount of parallelism for streaming of in-progress transactions with subscription parameter streaming = parallel. The parallel apply workers are taken from the po…

16 – 20
max_repack_replication_slotsReplication

Specifies the maximum number of replication slots for use of the REPACK command.

19 – 20 · No PG 18 snapshot
max_replication_slotsReplication

Specifies the maximum number of replication slots (see Section 26.2.6) that the server can support. The default is 10. This parameter can only be set at server start. Setting it to a lower value than the number of currently existing replication slot…

9.4 – 20
max_slot_wal_keep_sizeReplication

Specify the maximum size of WAL files that replication slots are allowed to retain in the pg_wal directory at checkpoint time. If max_slot_wal_keep_size is -1 (the default), replication slots may retain an unlimited amount of WAL files. Otherwise, i…

13 – 20
max_standby_archive_delayReplication

When hot standby is active, this parameter determines how long the standby server should wait before canceling standby queries that conflict with about-to-be-applied WAL entries, as described in Section 26.4.2. max_standby_archive_delay applies when…

9.0 – 20
max_standby_streaming_delayReplication

When hot standby is active, this parameter determines how long the standby server should wait before canceling standby queries that conflict with about-to-be-applied WAL entries, as described in Section 26.4.2. max_standby_streaming_delay applies wh…

9.0 – 20
max_sync_workers_per_subscriptionReplication

Maximum number of synchronization workers per subscription. This parameter controls the amount of parallelism of the initial data copy during the subscription initialization or when new tables are added. Currently, there can be only one synchronizat…

10 – 20
max_wal_sendersReplication

Specifies the maximum number of concurrent connections from standby servers or streaming base backup clients (i.e., the maximum number of simultaneously running WAL sender processes). The default is 10. The value 0 means replication is disabled. Abr…

9.0 – 20
output_plugin_librariesReplication

Lists the libraries installed in dynamic_library_path that are also trusted for use as logical output plugins by replication clients. Any logical decoding or replication requests for other libraries will be refused. All users are subject to this res…

14 – 20
primary_conninfoReplication

Specifies a connection string to be used for the standby server to connect with a sending server. This string is in the format described in Section 32.1.1. If any option is unspecified in this string, then the corresponding environment variable (see…

12 – 20
primary_slot_nameReplication

Optionally specifies an existing replication slot to be used when connecting to the sending server via streaming replication to control resource removal on the upstream node (see Section 26.2.6). This parameter can only be set in the postgresql.conf…

12 – 20
promote_trigger_fileReplication

Specifies a trigger file whose presence ends recovery in the standby.

12 – 15 · No PG 18 snapshot
recovery_min_apply_delayReplication

By default, a standby server restores WAL records from the sending server as soon as possible. It may be useful to have a time-delayed copy of the data, offering opportunities to correct data loss errors. This parameter allows you to delay recovery …

12 – 20
replication_timeoutReplication

Terminate replication connections that are inactive longer than the specified number of milliseconds.

9.1 – 9.2 · No PG 18 snapshot
sync_replication_slotsReplication

It enables a physical standby to synchronize logical failover slots from the primary server so that logical subscribers can resume replication from the new primary server after failover. It is disabled by default. This parameter can only be set in t…

17 – 20
synchronized_standby_slotsReplication

A comma-separated list of streaming replication standby server slot names that logical WAL sender processes will wait for. Logical WAL sender processes will send decoded changes to plugins only after the specified replication slots confirm receiving…

17 – 20
synchronous_standby_namesReplication

Specifies a list of standby servers that can support synchronous replication, as described in Section 26.2.8. There will be one or more active synchronous standbys; transactions waiting for commit will be allowed to proceed after these standby serve…

9.1 – 20
track_commit_timestampReplication

Record commit time of transactions. This parameter can only be set at server start. The default value is off.

9.5 – 20
vacuum_defer_cleanup_ageReplication

Specifies the number of transactions by which VACUUM and HOT updates will defer cleanup of dead row versions.

9.0 – 15 · No PG 18 snapshot
wal_keep_segmentsReplication

Specifies the minimum number of past log file segments kept in the pg_wal directory, in case a standby server needs to fetch them for streaming replication.

9.0 – 12 · No PG 18 snapshot
wal_keep_sizeReplication

Specifies the minimum size of past WAL files kept in the pg_wal directory, in case a standby server needs to fetch them for streaming replication. If a standby server connected to the sending server falls behind by more than wal_keep_size megabytes,…

13 – 20
wal_receiver_create_temp_slotReplication

Specifies whether the WAL receiver process should create a temporary replication slot on the remote instance when no permanent replication slot to use has been configured (using primary_slot_name). The default is off. This parameter can only be set …

13 – 20
wal_receiver_status_intervalReplication

Specifies the minimum frequency for the WAL receiver process on the standby to send information about replication progress to the primary or upstream standby, where it can be seen using the pg_stat_replication view. The standby will report the last …

9.1 – 20
wal_receiver_timeoutReplication

Terminate replication connections that are inactive for longer than this amount of time. This is useful for the receiving standby server to detect a primary node crash or network outage. If this value is specified without units, it is taken as milli…

9.3 – 20
wal_retrieve_retry_intervalReplication

Specifies how long the standby server should wait when WAL data is not available from any sources (streaming replication, local pg_wal or WAL archive) before trying again to retrieve WAL data. If this value is specified without units, it is taken as…

9.5 – 20
wal_sender_delayReplication

Specifies the delay between activity rounds for WAL sender processes.

9.0 – 9.1 · No PG 18 snapshot
wal_sender_shutdown_timeoutReplication

Specifies the maximum time the server waits during shutdown for all WAL data to be replicated to the receiver.

19 – 20 · No PG 18 snapshot
wal_sender_timeoutReplication

Terminate replication connections that are inactive for longer than this amount of time. This is useful for the sending server to detect a standby crash or network outage. If this value is specified without units, it is taken as milliseconds. The de…

9.3 – 20
application_nameReporting and Logging

The application_name can be any string of less than NAMEDATALEN characters (64 characters in a standard build). It is typically set by an application upon connection to the server. The name will be displayed in the pg_stat_activity view and included…

9.0 – 20
cluster_nameReporting and Logging

Sets a name that identifies this database cluster (instance) for various purposes. The cluster name appears in the process title for all server processes in this cluster. Moreover, it is the default application name for a standby connection (see syn…

9.5 – 20
debug_pretty_printReporting and Logging

When set, debug_pretty_print indents the messages produced by debug_print_parse, debug_print_rewritten, or debug_print_plan. This results in more readable but much longer output than the “compact” format used when it is off. It is on by default.

9.0 – 20
debug_print_parseReporting and Logging

These parameters enable various debugging output to be emitted. When set, they print the resulting parse tree, the query rewriter output, or the execution plan for each executed query. These messages are emitted at LOG message level, so by default t…

9.0 – 20
debug_print_planReporting and Logging

These parameters enable various debugging output to be emitted. When set, they print the resulting parse tree, the query rewriter output, or the execution plan for each executed query. These messages are emitted at LOG message level, so by default t…

9.0 – 20
debug_print_raw_parseReporting and Logging

These parameters enable various debugging output to be emitted.

19 – 20 · No PG 18 snapshot
debug_print_rewrittenReporting and Logging

These parameters enable various debugging output to be emitted. When set, they print the resulting parse tree, the query rewriter output, or the execution plan for each executed query. These messages are emitted at LOG message level, so by default t…

9.0 – 20
event_sourceReporting and Logging

When logging to event log is enabled, this parameter determines the program name used to identify PostgreSQL messages in the log. The default is PostgreSQL. This parameter can only be set at server start.

9.2 – 20
log_autoanalyze_min_durationReporting and Logging

Causes analyze action executed by autovacuum to be logged if it ran for at least the specified amount of time.

19 – 20 · No PG 18 snapshot
log_autovacuum_min_durationReporting and Logging

Causes each action executed by autovacuum to be logged if it ran for at least the specified amount of time. Setting this to zero logs all autovacuum actions. -1 disables logging autovacuum actions. If this value is specified without units, it is tak…

9.0 – 20
log_checkpointsReporting and Logging

Causes checkpoints and restartpoints to be logged in the server log. Some statistics are included in the log messages, including the number of buffers written and the time spent writing them. This parameter can only be set in the postgresql.conf fil…

9.0 – 20
log_connectionsReporting and Logging

Causes aspects of each connection to the server to be logged. The default is the empty string, '', which disables all connection logging. The following options may be specified alone or in a comma-separated list: Table 19.3. Log Connection Options N…

9.0 – 20
log_destinationReporting and Logging

PostgreSQL supports several methods for logging server messages, including stderr, csvlog, jsonlog, and syslog. On Windows, eventlog is also supported. Set this parameter to a list of desired log destinations separated by commas. The default is to l…

9.0 – 20
log_directoryReporting and Logging

When logging_collector is enabled, this parameter determines the directory in which log files will be created. It can be specified as an absolute path, or relative to the cluster data directory. This parameter can only be set in the postgresql.conf …

9.0 – 20
log_disconnectionsReporting and Logging

Causes session terminations to be logged. The log output provides information similar to log_connections, plus the duration of the session. Only superusers and users with the appropriate SET privilege can change this parameter at session start, and …

9.0 – 20
log_durationReporting and Logging

Causes the duration of every completed statement to be logged. The default is off. Only superusers and users with the appropriate SET privilege can change this setting. For clients using extended query protocol, durations of the Parse, Bind, and Exe…

9.0 – 20
log_error_verbosityReporting and Logging

Controls the amount of detail written in the server log for each message that is logged. Valid values are TERSE, DEFAULT, and VERBOSE, each adding more fields to displayed messages. TERSE excludes the logging of DETAIL, HINT, QUERY, and CONTEXT erro…

9.0 – 20
log_file_modeReporting and Logging

On Unix systems this parameter sets the permissions for log files when logging_collector is enabled. (On Microsoft Windows this parameter is ignored.) The parameter value is expected to be a numeric mode specified in the format accepted by the chmod…

9.1 – 20
log_filenameReporting and Logging

When logging_collector is enabled, this parameter sets the file names of the created log files. The value is treated as a strftime pattern, so %-escapes can be used to specify time-varying file names. (Note that if there are any time-zone-dependent …

9.0 – 20
log_hostnameReporting and Logging

By default, connection log messages only show the IP address of the connecting host. Turning this parameter on causes logging of the host name as well. Note that depending on your host name resolution setup this might impose a non-negligible perform…

9.0 – 20
log_line_prefixReporting and Logging

This is a printf-style string that is output at the beginning of each log line. % characters begin “escape sequences” that are replaced with status information as outlined below. Unrecognized escapes are ignored. Other characters are copied straight…

9.0 – 20
log_lock_failuresReporting and Logging

Controls whether a detailed log message is produced when a lock acquisition fails. This is useful for analyzing the causes of lock failures. Currently, only lock failures due to SELECT NOWAIT is supported. The default is off. Only superusers and use…

18 – 20
log_lock_waitsReporting and Logging

Controls whether a log message is produced when a session waits longer than deadlock_timeout to acquire a lock. This is useful in determining if lock waits are causing poor performance. The default is off. Only superusers and users with the appropri…

9.0 – 20
log_min_duration_sampleReporting and Logging

Allows sampling the duration of completed statements that ran for at least the specified amount of time. This produces the same kind of log entries as log_min_duration_statement, but only for a subset of the executed statements, with sample rate con…

13 – 20
log_min_duration_statementReporting and Logging

Causes the duration of each completed statement to be logged if the statement ran for at least the specified amount of time. For example, if you set it to 250ms then all SQL statements that run 250ms or longer will be logged. Enabling this parameter…

9.0 – 20
log_min_error_statementReporting and Logging

Controls which SQL statements that cause an error condition are recorded in the server log. The current SQL statement is included in the log entry for any message of the specified severity or higher. Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, …

9.0 – 20
log_min_messagesReporting and Logging

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 fe…

9.0 – 20
log_parameter_max_lengthReporting and Logging

If greater than zero, each bind parameter value logged with a non-error statement-logging message is trimmed to this many bytes. Zero disables logging of bind parameters for non-error statement logs. -1 (the default) allows bind parameters to be log…

13 – 20
log_parameter_max_length_on_errorReporting and Logging

If greater than zero, each bind parameter value reported in error messages is trimmed to this many bytes. Zero (the default) disables including bind parameters in error messages. -1 allows bind parameters to be printed in full. If this value is spec…

13 – 20
log_recovery_conflict_waitsReporting and Logging

Controls whether a log message is produced when the startup process waits longer than deadlock_timeout for recovery conflicts. This is useful in determining if recovery conflicts prevent the recovery from applying WAL. The default is off. This param…

14 – 20
log_replication_commandsReporting and Logging

Causes each replication command and walsender process's replication slot acquisition/release to be logged in the server log. See Section 54.4 for more information about replication command. The default value is off. Only superusers and users with th…

9.5 – 20
log_rotation_ageReporting and Logging

When logging_collector is enabled, this parameter determines the maximum amount of time to use an individual log file, after which a new log file will be created. If this value is specified without units, it is taken as minutes. The default is 24 ho…

9.0 – 20
log_rotation_sizeReporting and Logging

When logging_collector is enabled, this parameter determines the maximum size of an individual log file. After this amount of data has been emitted into a log file, a new log file will be created. If this value is specified without units, it is take…

9.0 – 20
log_startup_progress_intervalReporting and Logging

Sets the amount of time after which the startup process will log a message about a long-running operation that is still in progress, as well as the interval between further progress messages for that operation. The default is 10 seconds. A setting o…

15 – 20
log_statementReporting and Logging

Controls which SQL statements are logged. Valid values are none (off), ddl, mod, and all (all statements). ddl logs all data definition statements, such as CREATE, ALTER, and DROP statements. mod logs all ddl statements, plus data-modifying statemen…

9.0 – 20
log_statement_max_lengthReporting and Logging

If greater than zero, each statement logged by log_statement, log_min_duration_statement, log_min_duration_sample, or log_transaction_sample_rate has its statement text truncated to at most this many bytes.

20 – 20 · No PG 18 snapshot
log_statement_sample_rateReporting and Logging

Determines the fraction of statements with duration exceeding log_min_duration_sample that will be logged. Sampling is stochastic, for example 0.5 means there is statistically one chance in two that any given statement will be logged. The default is…

13 – 20
log_temp_filesReporting and Logging

Controls logging of temporary file names and sizes. Temporary files can be created for sorts, hashes, and temporary query results. If enabled by this setting, a log entry is emitted for each temporary file, with the file size specified in bytes, whe…

9.0 – 20
log_timezoneReporting and Logging

Sets the time zone used for timestamps written in the server log. Unlike TimeZone, this value is cluster-wide, so that all sessions will report timestamps consistently. The built-in default is GMT, but that is typically overridden in postgresql.conf…

9.0 – 20
log_transaction_sample_rateReporting and Logging

Sets the fraction of transactions whose statements are all logged, in addition to statements logged for other reasons. It applies to each new transaction regardless of its statements' durations. Sampling is stochastic, for example 0.1 means there is…

12 – 20
log_truncate_on_rotationReporting and Logging

When logging_collector is enabled, this parameter will cause PostgreSQL to truncate (overwrite), rather than append to, any existing log file of the same name. However, truncation will occur only when a new file is being opened due to time-based rot…

9.0 – 20
logging_collectorReporting and Logging

This parameter enables the logging collector, which is a background process that captures log messages sent to stderr and redirects them into log files. This approach is often more useful than logging to syslog, since some types of messages might no…

9.0 – 20
silent_modeReporting and Logging

Runs the server silently.

9.0 – 9.1 · No PG 18 snapshot
syslog_facilityReporting and Logging

When logging to syslog is enabled, this parameter determines the syslog “facility” to be used. You can choose from LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7; the default is LOCAL0. See also the documentation of your system's sys…

9.0 – 20
syslog_identReporting and Logging

When logging to syslog is enabled, this parameter determines the program name used to identify PostgreSQL messages in syslog logs. The default is postgres. This parameter can only be set in the postgresql.conf file or on the server command line.

9.0 – 20
syslog_sequence_numbersReporting and Logging

When logging to syslog and this is on (the default), then each message will be prefixed by an increasing sequence number (such as [2]). This circumvents the “--- last message repeated N times ---” suppression that many syslog implementations perform…

9.6 – 20
syslog_split_messagesReporting and Logging

When logging to syslog is enabled, this parameter determines how messages are delivered to syslog. When on (the default), messages are split by lines, and long lines are split so that they will fit into 1024 bytes, which is a typical size limit for …

9.6 – 20
update_process_titleReporting and Logging

Enables updating of the process title every time a new SQL command is received by the server. This setting defaults to on on most platforms, but it defaults to off on Windows due to that platform's larger overhead for updating the process title. Onl…

9.0 – 20
autovacuum_work_memResource Usage

Specifies the maximum amount of memory to be used by each autovacuum worker process. If this value is specified without units, it is taken as kilobytes. It defaults to -1, indicating that the value of maintenance_work_mem should be used instead. The…

9.4 – 20
backend_flush_afterResource Usage

Whenever more than this amount of data has been written by a single backend, attempt to force the OS to issue these writes to the underlying storage. Doing so will limit the amount of dirty data in the kernel's page cache, reducing the likelihood of…

9.6 – 20
bgwriter_delayResource Usage

Specifies the delay between activity rounds for the background writer. In each round the writer issues writes for some number of dirty buffers (controllable by the following parameters). It then sleeps for the length of bgwriter_delay, and repeats. …

9.0 – 20
bgwriter_flush_afterResource Usage

Whenever more than this amount of data has been written by the background writer, attempt to force the OS to issue these writes to the underlying storage. Doing so will limit the amount of dirty data in the kernel's page cache, reducing the likeliho…

9.6 – 20
bgwriter_lru_maxpagesResource Usage

In each round, no more than this many buffers will be written by the background writer. Setting this to zero disables background writing. (Note that checkpoints, which are managed by a separate, dedicated auxiliary process, are unaffected.) The defa…

9.0 – 20
bgwriter_lru_multiplierResource Usage

The number of dirty buffers written in each round is based on the number of new buffers that have been needed by server processes during recent rounds. The average recent need is multiplied by bgwriter_lru_multiplier to arrive at an estimate of the …

9.0 – 20
commit_timestamp_buffersResource Usage

Specifies the amount of memory to use to cache the contents of pg_commit_ts (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 0, which requests shared_buffers…

17 – 20
dynamic_shared_memory_typeResource Usage

Specifies the dynamic shared memory implementation that the server should use. Possible values are posix (for POSIX shared memory allocated using shm_open), sysv (for System V shared memory allocated via shmget), windows (for Windows shared memory),…

9.4 – 20
effective_io_concurrencyResource Usage

Sets the number of concurrent storage I/O operations that PostgreSQL expects can be executed simultaneously. Raising this value will increase the number of I/O operations that any individual PostgreSQL session attempts to initiate in parallel. The a…

9.0 – 20
file_copy_methodResource Usage

Specifies the method used to copy files. Possible values are COPY (default) and CLONE (if operating support is available). This parameter affects: CREATE DATABASE ... STRATEGY=FILE_COPY ALTER DATABASE ... SET TABLESPACE ... CLONE uses the copy_file_…

18 – 20
file_extend_methodResource Usage

Specifies the method used to extend data files during bulk operations such as COPY. The first available option is used as the default, depending on the operating system: posix_fallocate (Unix) uses the standard POSIX interface for allocating disk sp…

16 – 20
hash_mem_multiplierResource Usage

Used to compute the maximum amount of memory that hash-based operations can use. The final limit is determined by multiplying work_mem by hash_mem_multiplier. The default value is 2.0, which makes hash-based operations use twice the usual work_mem b…

13 – 20
huge_page_sizeResource Usage

Controls the size of huge pages, when they are enabled with huge_pages. The default is zero (0). When set to 0, the default huge page size on the system will be used. This parameter can only be set at server start. Some commonly available page sizes…

14 – 20
huge_pagesResource Usage

Controls whether huge pages are requested for the main shared memory area. Valid values are try (the default), on, and off. This parameter can only be set at server start. With huge_pages set to try, the server will try to request huge pages, but fa…

9.4 – 20
io_combine_limitResource Usage

Controls the largest I/O size in operations that combine I/O. If set higher than the io_max_combine_limit parameter, the lower value will silently be used instead, so both may need to be raised to increase the I/O size. If this value is specified wi…

17 – 20
io_max_combine_limitResource Usage

Controls the largest I/O size in operations that combine I/O, and silently limits the user-settable parameter io_combine_limit. This parameter can only be set at server start. If this value is specified without units, it is taken as blocks, that is …

18 – 20
io_max_concurrencyResource Usage

Controls the maximum number of I/O operations that one process can execute simultaneously. The default setting of -1 selects a number based on shared_buffers and the maximum number of processes (max_connections, autovacuum_worker_slots, max_worker_p…

18 – 20
io_max_workersResource Usage

Sets the maximum number of I/O worker processes.

19 – 20 · No PG 18 snapshot
io_methodResource Usage

Selects the method for executing asynchronous I/O. Possible values are: worker (execute asynchronous I/O using worker processes) io_uring (execute asynchronous I/O using io_uring, requires a build with --with-liburing / -Dliburing) sync (execute asy…

18 – 20
io_min_workersResource Usage

Sets the minimum number of I/O worker processes.

19 – 20 · No PG 18 snapshot
io_worker_idle_timeoutResource Usage

Sets the time after which entirely idle I/O worker processes exit, reducing the size of pool to match demand.

19 – 20 · No PG 18 snapshot
io_worker_launch_intervalResource Usage

Sets the minimum time before another I/O worker can be launched.

19 – 20 · No PG 18 snapshot
io_workersResource Usage

Selects the number of I/O worker processes to use. The default is 3. This parameter can only be set in the postgresql.conf file or on the server command line. Only has an effect if io_method is set to worker.

18 – 18
logical_decoding_work_memResource Usage

Specifies the maximum amount of memory to be used by logical decoding, before some of the decoded changes are written to local disk. This limits the amount of memory used by logical streaming replication connections. It defaults to 64 megabytes (64M…

13 – 20
maintenance_io_concurrencyResource Usage

Similar to effective_io_concurrency, but used for maintenance work that is done on behalf of many client sessions. The default is 16. This value can be overridden for tables in a particular tablespace by setting the tablespace parameter of the same …

13 – 20
maintenance_work_memResource Usage

Specifies the maximum amount of memory to be used by maintenance operations, such as VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY. If this value is specified without units, it is taken as kilobytes. It defaults to 64 megabytes (64MB). Since…

9.0 – 20
max_files_per_processResource Usage

Sets the maximum number of open files each server subprocess is allowed to open simultaneously; files already opened in the postmaster are not counted toward this limit. The default is one thousand files. If the kernel is enforcing a safe per-proces…

9.0 – 20
max_notify_queue_pagesResource Usage

Specifies the maximum amount of allocated pages for NOTIFY / LISTEN queue. The default value is 1048576. For 8 KB pages it allows to consume up to 8 GB of disk space. This parameter can only be set at server start.

17 – 20
max_parallel_maintenance_workersResource Usage

Sets the maximum number of parallel workers that can be started by a single utility command. Currently, the parallel utility commands that support the use of parallel workers are CREATE INDEX when building a B-tree, GIN, or BRIN index, and VACUUM wi…

11 – 20
max_parallel_workersResource Usage

Sets the maximum number of workers that the cluster can support for parallel operations. The default value is 8. When increasing or decreasing this value, consider also adjusting max_parallel_maintenance_workers and max_parallel_workers_per_gather. …

10 – 20
max_parallel_workers_per_gatherResource Usage

Sets the maximum number of workers that can be started by a single Gather or Gather Merge node. Parallel workers are taken from the pool of processes established by max_worker_processes, limited by max_parallel_workers. Note that the requested numbe…

9.6 – 20
max_prepared_transactionsResource Usage

Sets the maximum number of transactions that can be in the “prepared” state simultaneously (see PREPARE TRANSACTION). Setting this parameter to zero (which is the default) disables the prepared-transaction feature. This parameter can only be set at …

9.0 – 20
max_stack_depthResource Usage

Specifies the maximum safe depth of the server's execution stack. The ideal setting for this parameter is the actual stack size limit enforced by the kernel (as set by ulimit -s or local equivalent), less a safety margin of a megabyte or so. The saf…

9.0 – 20
max_worker_processesResource Usage

Sets the maximum number of background processes that the cluster can support. This parameter can only be set at server start. The default is 8. When running a standby server, you must set this parameter to the same or higher value than on the primar…

9.4 – 20
min_dynamic_shared_memoryResource Usage

Specifies the amount of memory that should be allocated at server startup for use by parallel queries. When this memory region is insufficient or exhausted by concurrent queries, new parallel queries try to allocate extra shared memory temporarily f…

14 – 20
multixact_member_buffersResource Usage

Specifies the amount of shared memory to use to cache the contents of pg_multixact/members (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 32. This paramete…

17 – 20
multixact_offset_buffersResource Usage

Specifies the amount of shared memory to use to cache the contents of pg_multixact/offsets (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 16. This paramete…

17 – 20
notify_buffersResource Usage

Specifies the amount of shared memory to use to cache the contents of pg_notify (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 16. This parameter can only …

17 – 20
old_snapshot_thresholdResource Usage

Sets the minimum amount of time that a query snapshot can be used without risk of a “snapshot too old” error occurring when using the snapshot.

9.6 – 16 · No PG 18 snapshot
parallel_leader_participationResource Usage

Allows the leader process to execute the query plan under Gather and Gather Merge nodes instead of waiting for worker processes. The default is on. Setting this value to off reduces the likelihood that workers will become blocked because the leader …

11 – 20
replacement_sort_tuplesResource Usage

When the number of tuples to be sorted is smaller than this number, a sort will produce its first output run using replacement selection rather than quicksort.

9.6 – 10 · No PG 18 snapshot
serializable_buffersResource Usage

Specifies the amount of shared memory to use to cache the contents of pg_serial (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 32. This parameter can only …

17 – 20
shared_buffersResource Usage

Sets the amount of memory the database server uses for shared memory buffers. The default is typically 128 megabytes (128MB), but might be less if your kernel settings will not support it (as determined during initdb). This setting must be at least …

9.0 – 20
shared_memory_typeResource Usage

Specifies the shared memory implementation that the server should use for the main shared memory region that holds PostgreSQL's shared buffers and other shared data. Possible values are mmap (for anonymous shared memory allocated using mmap), sysv (…

12 – 20
subtransaction_buffersResource Usage

Specifies the amount of shared memory to use to cache the contents of pg_subtrans (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 0, which requests shared_b…

17 – 20
temp_buffersResource Usage

Sets the maximum amount of memory used for temporary buffers within each database session. These are session-local buffers used only for access to temporary tables. If this value is specified without units, it is taken as blocks, that is BLCKSZ byte…

9.0 – 20
temp_file_limitResource Usage

Specifies the maximum amount of disk space that a process can use for temporary files, such as sort and hash temporary files, or the storage file for a held cursor. A transaction attempting to exceed this limit will be canceled. If this value is spe…

9.2 – 20
timing_clock_sourceResource Usage

Selects the method for making timing measurements using the OS or specialized CPU instructions.

19 – 20 · No PG 18 snapshot
transaction_buffersResource Usage

Specifies the amount of shared memory to use to cache the contents of pg_xact (see Table 66.1). If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default value is 0, which requests shared_buffe…

17 – 20
vacuum_buffer_usage_limitResource Usage

Specifies the size of the Buffer Access Strategy used by the VACUUM and ANALYZE commands. A setting of 0 will allow the operation to use any number of shared_buffers. Otherwise valid sizes range from 128 kB to 16 GB. If the specified size would exce…

16 – 20
work_memResource Usage

Sets the base maximum amount of memory to be used by a query operation (such as a sort or hash table) before writing to temporary disk files. If this value is specified without units, it is taken as kilobytes. The default value is four megabytes (4M…

9.0 – 20
compute_query_idStatistics

Enables in-core computation of a query identifier. Query identifiers can be displayed in the pg_stat_activity view, using EXPLAIN, or emitted in the log if configured via the log_line_prefix parameter. The pg_stat_statements extension also requires …

14 – 20
log_executor_statsStatistics

For each query, output performance statistics of the respective module to the server log. This is a crude profiling instrument, similar to the Unix getrusage() operating system facility. log_statement_stats reports total statement statistics, while …

9.0 – 20
log_parser_statsStatistics

For each query, output performance statistics of the respective module to the server log. This is a crude profiling instrument, similar to the Unix getrusage() operating system facility. log_statement_stats reports total statement statistics, while …

9.0 – 20
log_planner_statsStatistics

For each query, output performance statistics of the respective module to the server log. This is a crude profiling instrument, similar to the Unix getrusage() operating system facility. log_statement_stats reports total statement statistics, while …

9.0 – 20
log_statement_statsStatistics

For each query, output performance statistics of the respective module to the server log. This is a crude profiling instrument, similar to the Unix getrusage() operating system facility. log_statement_stats reports total statement statistics, while …

9.0 – 20
stats_fetch_consistencyStatistics

Determines the behavior when cumulative statistics are accessed multiple times within a transaction. When set to none, each access re-fetches counters from shared memory. When set to cache, the first access to statistics for an object caches those s…

15 – 20
stats_temp_directoryStatistics

Sets the directory to store temporary statistics data in.

9.0 – 14 · No PG 18 snapshot
track_activitiesStatistics

Enables the collection of information on the currently executing command of each session, along with its identifier and the time when that command began execution. This parameter is on by default. Note that even when enabled, this information is onl…

9.0 – 20
track_activity_query_sizeStatistics

Specifies the amount of memory reserved to store the text of the currently executing command for each active session, for the pg_stat_activity.query field. If this value is specified without units, it is taken as bytes. The default value is 1024 byt…

9.0 – 20
track_cost_delay_timingStatistics

Enables timing of cost-based vacuum delay (see Section 19.10.2). This parameter is off by default, as it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. You can use the pg_test…

18 – 20
track_countsStatistics

Enables collection of statistics on database activity. This parameter is on by default, because the autovacuum daemon needs the collected information. Only superusers and users with the appropriate SET privilege can change this setting.

9.0 – 20
track_functionsStatistics

Enables tracking of function call counts and time used. Specify pl to track only procedural-language functions, all to also track SQL and C language functions. The default is none, which disables function statistics tracking. Only superusers and use…

9.0 – 20
track_io_timingStatistics

Enables timing of database I/O waits. This parameter is off by default, as it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. You can use the pg_test_timing tool to measure the…

9.2 – 20
track_wal_io_timingStatistics

Enables timing of WAL I/O waits. This parameter is off by default, as it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. You can use the pg_test_timing tool to measure the over…

14 – 20
autovacuumVacuuming

Controls whether the server should run the autovacuum launcher daemon. This is on by default; however, track_counts must also be enabled for autovacuum to work. This parameter can only be set in the postgresql.conf file or on the server command line…

9.0 – 20
autovacuum_analyze_scale_factorVacuuming

Specifies a fraction of the table size to add to autovacuum_analyze_threshold when deciding whether to trigger an ANALYZE. The default is 0.1 (10% of table size). This parameter can only be set in the postgresql.conf file or on the server command li…

9.0 – 20
autovacuum_analyze_score_weightVacuuming

Specifies the scaling factor of the analyze threshold component of the score used by autovacuum for prioritization purposes.

19 – 20 · No PG 18 snapshot
autovacuum_analyze_thresholdVacuuming

Specifies the minimum number of inserted, updated or deleted tuples needed to trigger an ANALYZE in any one table. The default is 50 tuples. This parameter can only be set in the postgresql.conf file or on the server command line; but the setting ca…

9.0 – 20
autovacuum_freeze_max_ageVacuuming

Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before a VACUUM operation is forced to prevent transaction ID wraparound within the table. Note that the system will launch autovacuum processes to pre…

9.0 – 20
autovacuum_freeze_score_weightVacuuming

Specifies the scaling factor of the transaction ID age component of the score used by autovacuum for prioritization purposes.

19 – 20 · No PG 18 snapshot
autovacuum_max_parallel_workersVacuuming

Sets the maximum number of parallel workers that can be used by a single autovacuum worker to process indexes.

19 – 20 · No PG 18 snapshot
autovacuum_max_workersVacuuming

Specifies the maximum number of autovacuum processes (other than the autovacuum launcher) that may be running at any one time. The default is 3. This parameter can only be set in the postgresql.conf file or on the server command line. Note that a se…

9.0 – 20
autovacuum_multixact_freeze_max_ageVacuuming

Specifies the maximum age (in multixacts) that a table's pg_class.relminmxid field can attain before a VACUUM operation is forced to prevent multixact ID wraparound within the table. Note that the system will launch autovacuum processes to prevent w…

9.3 – 20
autovacuum_multixact_freeze_score_weightVacuuming

Specifies the scaling factor of the multixact ID age component of the score used by autovacuum for prioritization purposes.

19 – 20 · No PG 18 snapshot
autovacuum_naptimeVacuuming

Specifies the minimum delay between autovacuum runs on any given database. In each round the daemon examines the database and issues VACUUM and ANALYZE commands as needed for tables in that database. If this value is specified without units, it is t…

9.0 – 20
autovacuum_vacuum_cost_delayVacuuming

Specifies the cost delay value that will be used in automatic VACUUM operations. If -1 is specified, the regular vacuum_cost_delay value will be used. If this value is specified without units, it is taken as milliseconds. The default value is 2 mill…

9.0 – 20
autovacuum_vacuum_cost_limitVacuuming

Specifies the cost limit value that will be used in automatic VACUUM operations. If -1 is specified (which is the default), the regular vacuum_cost_limit value will be used. Note that the value is distributed proportionally among the running autovac…

9.0 – 20
autovacuum_vacuum_insert_scale_factorVacuuming

Specifies a fraction of the unfrozen pages in the table to add to autovacuum_vacuum_insert_threshold when deciding whether to trigger a VACUUM. The default is 0.2 (20% of unfrozen pages in table). This parameter can only be set in the postgresql.con…

13 – 20
autovacuum_vacuum_insert_score_weightVacuuming

Specifies the scaling factor of the vacuum insert threshold component of the score used by autovacuum for prioritization purposes.

19 – 20 · No PG 18 snapshot
autovacuum_vacuum_insert_thresholdVacuuming

Specifies the number of inserted tuples needed to trigger a VACUUM in any one table. The default is 1000 tuples. If -1 is specified, autovacuum will not trigger a VACUUM operation on any tables based on the number of inserts. This parameter can only…

13 – 20
autovacuum_vacuum_max_thresholdVacuuming

Specifies the maximum number of updated or deleted tuples needed to trigger a VACUUM in any one table, i.e., a limit on the value calculated with autovacuum_vacuum_threshold and autovacuum_vacuum_scale_factor. The default is 100,000,000 tuples. If -…

18 – 20
autovacuum_vacuum_scale_factorVacuuming

Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size). This parameter can only be set in the postgresql.conf file or on the server command line;…

9.0 – 20
autovacuum_vacuum_score_weightVacuuming

Specifies the scaling factor of the vacuum threshold component of the score used by autovacuum for prioritization purposes.

19 – 20 · No PG 18 snapshot
autovacuum_vacuum_thresholdVacuuming

Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is 50 tuples. This parameter can only be set in the postgresql.conf file or on the server command line; but the setting can be overrid…

9.0 – 20
autovacuum_worker_slotsVacuuming

Specifies the number of backend slots to reserve for autovacuum worker processes. The default is typically 16 slots, but might be less if your kernel settings will not support it (as determined during initdb). This parameter can only be set at serve…

18 – 20
vacuum_cost_delayVacuuming

The amount of time that the process will sleep when the cost limit has been exceeded. If this value is specified without units, it is taken as milliseconds. The default value is 0, which disables the cost-based vacuum delay feature. Positive values …

9.0 – 20
vacuum_cost_limitVacuuming

This is the accumulated cost that will cause the vacuuming process to sleep for vacuum_cost_delay. The default is 200.

9.0 – 20
vacuum_cost_page_dirtyVacuuming

The estimated cost charged when vacuum modifies a block that was previously clean. It represents the extra I/O required to flush the dirty block out to disk again. The default value is 20.

9.0 – 20
vacuum_cost_page_hitVacuuming

The estimated cost for vacuuming a buffer found in the shared buffer cache. It represents the cost to lock the buffer pool, lookup the shared hash table and scan the content of the page. The default value is 1.

9.0 – 20
vacuum_cost_page_missVacuuming

The estimated cost for vacuuming a buffer that has to be read from disk. This represents the effort to lock the buffer pool, lookup the shared hash table, read the desired block in from the disk and scan its content. The default value is 2.

9.0 – 20
vacuum_failsafe_ageVacuuming

Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before VACUUM takes extraordinary measures to avoid system-wide transaction ID wraparound failure. This is VACUUM's strategy of last resort. The failsa…

14 – 20
vacuum_freeze_min_ageVacuuming

Specifies the cutoff age (in transactions) that VACUUM should use to decide whether to trigger freezing of pages that have an older XID. The default is 50 million transactions. Although users can set this value anywhere from zero to one billion, VAC…

9.0 – 20
vacuum_freeze_table_ageVacuuming

VACUUM performs an aggressive scan if the table's pg_class.relfrozenxid field has reached the age specified by this setting. An aggressive scan differs from a regular VACUUM in that it visits every page that might contain unfrozen XIDs or MXIDs, not…

9.0 – 20
vacuum_max_eager_freeze_failure_rateVacuuming

Specifies the maximum number of pages (as a fraction of total pages in the relation) that VACUUM may scan and fail to set all-frozen in the visibility map before disabling eager scanning. A value of 0 disables eager scanning altogether. The default …

18 – 20
vacuum_multixact_failsafe_ageVacuuming

Specifies the maximum age (in multixacts) that a table's pg_class.relminmxid field can attain before VACUUM takes extraordinary measures to avoid system-wide multixact ID wraparound failure. This is VACUUM's strategy of last resort. The failsafe typ…

14 – 20
vacuum_multixact_freeze_min_ageVacuuming

Specifies the cutoff age (in multixacts) that VACUUM should use to decide whether to trigger freezing of pages with an older multixact ID. The default is 5 million multixacts. Although users can set this value anywhere from zero to one billion, VACU…

9.3 – 20
vacuum_multixact_freeze_table_ageVacuuming

VACUUM performs an aggressive scan if the table's pg_class.relminmxid field has reached the age specified by this setting. An aggressive scan differs from a regular VACUUM in that it visits every page that might contain unfrozen XIDs or MXIDs, not j…

9.3 – 20
vacuum_truncateVacuuming

Enables or disables vacuum to try to truncate off any empty pages at the end of the table. The default value is true. If true, VACUUM and autovacuum do the truncation and the disk space for the truncated pages is returned to the operating system. No…

18 – 20
allow_alter_systemVersion and Platform Compatibility

When allow_alter_system is set to off, an error is returned if the ALTER SYSTEM command is executed. This parameter can only be set in the postgresql.conf file or on the server command line. The default value is on. Note that this setting must not b…

17 – 20
array_nullsVersion and Platform Compatibility

This controls whether the array input parser recognizes unquoted NULL as specifying a null array element. By default, this is on, allowing array values containing null values to be entered. However, PostgreSQL versions before 8.2 did not support nul…

9.0 – 20
backslash_quoteVersion and Platform Compatibility

This controls whether a quote mark can be represented by \' in a string literal. The preferred, SQL-standard way to represent a quote mark is by doubling it ('') but PostgreSQL has historically also accepted \'. However, use of \' creates security r…

9.0 – 20
default_with_oidsVersion and Platform Compatibility

This controls whether CREATE TABLE and CREATE TABLE AS include an OID column in newly-created tables, if neither WITH OIDS nor WITHOUT OIDS is specified.

9.0 – 11 · No PG 18 snapshot
escape_string_warningVersion and Platform Compatibility

When on, a warning is issued if a backslash (\) appears in an ordinary string literal ('...' syntax) and standard_conforming_strings is off. The default is on. Applications that wish to use backslash as escape should be modified to use escape string…

9.0 – 18
lo_compat_privilegesVersion and Platform Compatibility

In PostgreSQL releases prior to 9.0, large objects did not have access privileges and were, therefore, always readable and writable by all users. Setting this variable to on disables the new privilege checks, for compatibility with prior releases. T…

9.0 – 20
operator_precedence_warningVersion and Platform Compatibility

When on, the parser will emit a warning for any construct that might have changed meanings since PostgreSQL 9.4 as a result of changes in operator precedence.

9.5 – 13 · No PG 18 snapshot
quote_all_identifiersVersion and Platform Compatibility

When the database generates SQL, force all identifiers to be quoted, even if they are not (currently) keywords. This will affect the output of EXPLAIN as well as the results of functions like pg_get_viewdef. See also the --quote-all-identifiers opti…

9.1 – 20
sql_inheritanceVersion and Platform Compatibility

This setting controls whether undecorated table references are considered to include inheritance child tables.

9.0 – 9.6 · No PG 18 snapshot
standard_conforming_stringsVersion and Platform Compatibility

This controls whether ordinary string literals ('...') treat backslashes literally, as specified in the SQL standard. Beginning in PostgreSQL 9.1, the default is on (prior releases defaulted to off). Applications can check this parameter to determin…

9.0 – 20
synchronize_seqscansVersion and Platform Compatibility

This allows sequential scans of large tables to synchronize with each other, so that concurrent scans read the same block at about the same time and hence share the I/O workload. When this is enabled, a scan might start in the middle of the table an…

9.0 – 20
transform_null_equalsVersion and Platform Compatibility

When on, expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL, that is, they return true if expr evaluates to the null value, and false otherwise. The correct SQL-spec-compliant behavior of expr = NULL is to always return…

9.0 – 20
archive_cleanup_commandWrite-Ahead Log

This optional parameter specifies a shell command that will be executed at every restartpoint. The purpose of archive_cleanup_command is to provide a mechanism for cleaning up old archived WAL files that are no longer needed by the standby server. A…

12 – 20
archive_commandWrite-Ahead Log

The local shell command to execute to archive a completed WAL file segment. Any %p in the string is replaced by the path name of the file to archive, and any %f is replaced by only the file name. (The path name is relative to the working directory o…

9.0 – 20
archive_libraryWrite-Ahead Log

The library to use for archiving completed WAL file segments. If set to an empty string (the default), archiving via shell is enabled, and archive_command is used. If both archive_command and archive_library are set, an error will be raised. Otherwi…

15 – 20
archive_modeWrite-Ahead Log

When archive_mode is enabled, completed WAL segments are sent to archive storage by setting archive_command or archive_library. In addition to off, to disable, there are two modes: on, and always. During normal operation, there is no difference betw…

9.0 – 20
archive_timeoutWrite-Ahead Log

The archive_command or archive_library is only invoked for completed WAL segments. Hence, if your server generates little WAL traffic (or has slack periods where it does so), there could be a long delay between the completion of a transaction and it…

9.0 – 20
checkpoint_completion_targetWrite-Ahead Log

Specifies the target of checkpoint completion, as a fraction of total time between checkpoints. The default is 0.9, which spreads the checkpoint across almost all of the available interval, providing fairly consistent I/O load while also leaving som…

9.0 – 20
checkpoint_flush_afterWrite-Ahead Log

Whenever more than this amount of data has been written while performing a checkpoint, attempt to force the OS to issue these writes to the underlying storage. Doing so will limit the amount of dirty data in the kernel's page cache, reducing the lik…

9.6 – 20
checkpoint_segmentsWrite-Ahead Log

Maximum number of log file segments between automatic WAL checkpoints (each segment is normally 16 megabytes).

9.0 – 9.4 · No PG 18 snapshot
checkpoint_timeoutWrite-Ahead Log

Maximum time between automatic WAL checkpoints. If this value is specified without units, it is taken as seconds. The valid range is between 30 seconds and one day. The default is five minutes (5min). Increasing this parameter can increase the amoun…

9.0 – 20
checkpoint_warningWrite-Ahead Log

Write a message to the server log if checkpoints caused by the filling of WAL segment files happen closer together than this amount of time (which suggests that max_wal_size ought to be raised). If this value is specified without units, it is taken …

9.0 – 20
commit_delayWrite-Ahead Log

Setting commit_delay adds a time delay before a WAL flush is initiated. This can improve group commit throughput by allowing a larger number of transactions to commit via a single WAL flush, if system load is high enough that additional transactions…

9.0 – 20
commit_siblingsWrite-Ahead Log

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. The default is five …

9.0 – 20
fsyncWrite-Ahead Log

If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various equivalent methods (see wal_sync_method). This ensures that the database cluster can recover…

9.0 – 20
full_page_writesWrite-Ahead Log

When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint. This is needed because a page write that is in process during an operating system cras…

9.0 – 20
max_wal_sizeWrite-Ahead Log

Maximum size to let the WAL grow during automatic checkpoints. This is a soft limit; WAL size can exceed max_wal_size under special circumstances, such as heavy load, a failing archive_command or archive_library, or a high wal_keep_size setting. If …

9.5 – 20
min_wal_sizeWrite-Ahead Log

As long as WAL disk usage stays below this setting, old WAL files are always recycled for future use at a checkpoint, rather than removed. This can be used to ensure that enough WAL space is reserved to handle spikes in WAL usage, for example when r…

9.5 – 20
recovery_end_commandWrite-Ahead Log

This parameter specifies a shell command that will be executed once only at the end of recovery. This parameter is optional. The purpose of the recovery_end_command is to provide a mechanism for cleanup following replication or recovery. Any %r is r…

12 – 20
recovery_prefetchWrite-Ahead Log

Whether to try to prefetch blocks that are referenced in the WAL that are not yet in the buffer pool, during recovery. Valid values are off, on and try (the default). The setting try enables prefetching only if the operating system provides support …

15 – 20
recovery_targetWrite-Ahead Log

This parameter specifies that recovery should end as soon as a consistent state is reached, i.e., as early as possible. When restoring from an online backup, this means the point where taking the backup ended. Technically, this is a string parameter…

12 – 20
recovery_target_actionWrite-Ahead Log

Specifies what action the server should take once the recovery target is reached. The default is pause, which means recovery will be paused. promote means the recovery process will finish and the server will start to accept connections. Finally shut…

12 – 20
recovery_target_inclusiveWrite-Ahead Log

Specifies whether to stop just after the specified recovery target (on), or just before the recovery target (off). Applies when recovery_target_lsn, recovery_target_time, or recovery_target_xid is specified. This setting controls whether transaction…

12 – 20
recovery_target_lsnWrite-Ahead Log

This parameter specifies the LSN of the write-ahead log location up to which recovery will proceed. The precise stopping point is also influenced by recovery_target_inclusive. This parameter is parsed using the system data type pg_lsn.

12 – 20
recovery_target_nameWrite-Ahead Log

This parameter specifies the named restore point (created with pg_create_restore_point()) to which recovery will proceed.

12 – 20
recovery_target_timeWrite-Ahead Log

This parameter specifies the time stamp up to which recovery will proceed. The precise stopping point is also influenced by recovery_target_inclusive. The value of this parameter is a time stamp in the same format accepted by the timestamp with time…

12 – 20
recovery_target_timelineWrite-Ahead Log

Specifies recovering into a particular timeline. The value can be a numeric timeline ID or a special value. The value current recovers along the same timeline that was current when the base backup was taken. The value latest recovers to the latest t…

12 – 20
recovery_target_xidWrite-Ahead Log

This parameter specifies the transaction ID up to which recovery will proceed. Keep in mind that while transaction IDs are assigned sequentially at transaction start, transactions can complete in a different numeric order. The transactions that will…

12 – 20
restore_commandWrite-Ahead Log

The local shell command to execute to retrieve an archived segment of the WAL file series. This parameter is required for archive recovery, but optional for streaming replication. Any %f in the string is replaced by the name of the file to retrieve …

12 – 20
summarize_walWrite-Ahead Log

Enables the WAL summarizer process. Note that WAL summarization can be enabled either on a primary or on a standby. This parameter can only be set in the postgresql.conf file or on the server command line. The default is off. The server cannot be st…

17 – 20
synchronous_commitWrite-Ahead Log

Specifies how much WAL processing must complete before the database server returns a “success” indication to the client. Valid values are remote_apply, on (the default), remote_write, local, and off. If synchronous_standby_names is empty, the only m…

9.0 – 20
wal_buffersWrite-Ahead Log

The amount of shared memory used for WAL data that has not yet been written to disk. The default setting of -1 selects a size equal to 1/32nd (about 3%) of shared_buffers, but not less than 64kB nor more than the size of one WAL segment, typically 1…

9.0 – 20
wal_compressionWrite-Ahead Log

This parameter enables compression of WAL using the specified compression method. When enabled, the PostgreSQL server compresses full page images written to WAL (e.g. when full_page_writes is on, during a base backup, etc.). A compressed page image …

9.5 – 20
wal_decode_buffer_sizeWrite-Ahead Log

A limit on how far ahead the server can look in the WAL, to find blocks to prefetch. If this value is specified without units, it is taken as bytes. The default is 512kB. This parameter can only be set at server start.

15 – 20
wal_init_zeroWrite-Ahead Log

If set to on (the default), this option causes new WAL files to be filled with zeroes. On some file systems, this ensures that space is allocated before we need to write WAL records. However, Copy-On-Write (COW) file systems may not benefit from thi…

12 – 20
wal_levelWrite-Ahead Log

wal_level determines how much information is written to the WAL. The default value is replica, which writes enough data to support WAL archiving and replication, including running read-only queries on a standby server. minimal removes all logging ex…

9.0 – 20
wal_log_hintsWrite-Ahead Log

When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits. If data checksums are enab…

9.4 – 20
wal_recycleWrite-Ahead Log

If set to on (the default), this option causes WAL files to be recycled by renaming them, avoiding the need to create new ones. On COW file systems, it may be faster to create new ones, so the option is given to disable this behavior.

12 – 20
wal_skip_thresholdWrite-Ahead Log

When wal_level is minimal and a transaction commits after creating or rewriting a permanent relation, this setting determines how to persist the new data. If the data is smaller than this setting, write it to the WAL log; otherwise, use an fsync of …

13 – 20
wal_summary_keep_timeWrite-Ahead Log

Configures the amount of time after which the WAL summarizer automatically removes old WAL summaries. The file timestamp is used to determine which files are old enough to remove. Typically, you should set this comfortably higher than the time that …

17 – 20
wal_sync_methodWrite-Ahead Log

Method used for forcing WAL updates out to disk. If fsync is off then this setting is irrelevant, since WAL file updates will not be forced out at all. Possible values are: open_datasync (write WAL files with open() option O_DSYNC) fdatasync (call f…

9.0 – 20
wal_writer_delayWrite-Ahead Log

Specifies how often the WAL writer flushes WAL, in time terms. After flushing WAL the writer sleeps for the length of time given by wal_writer_delay, unless woken up sooner by an asynchronously committing transaction. If the last flush happened less…

9.0 – 20
wal_writer_flush_afterWrite-Ahead Log

Specifies how often the WAL writer flushes WAL, in volume terms. If the last flush happened less than wal_writer_delay ago and less than wal_writer_flush_after worth of WAL has been produced since, then WAL is only written to the operating system, n…

9.6 – 20