Snowflake Postgres Server Settings

The table below details the parameters that can be set for the Postgres server component of Snowflake Postgres instances. Each setting’s name is hyperlinked to its Postgres documentation.

Where “Postgres default” appears in the Default column, Snowflake Postgres instances use the default value from Postgres. This can vary by major version.

See Creating a Snowflake Postgres Instance for details on setting values for these Postgres server settings when creating Snowflake Postgres instances.

Tip

To see a parameter’s documentation for a specific major version change the word “current” in the hyperlink address to the target major version. For example, this hyperlink address for the postgres:work_mem setting:

https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM

becomes this to visit its Postgres 17 documentation:

https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-WORK-MEM

ComponentNameRequires restartDescriptionDefault
pgbouncerautodb_idle_timeoutFALSEIf the automatically created (via “*”) database pools have been unused this many seconds, they are freed.3600
pgbouncerdefault_pool_sizeFALSEHow many server connections to allow per user/database pair.497
pgbouncerignore_startup_parametersFALSEIgnore parameters startup packets (e.g. options,extra_float_digits).client_encoding,datestyle,timezone,standard_conforming_strings,extra_float_digits
pgbouncermax_prepared_statementsFALSENumber of prepared statements kept active on a single server connection250
pgbouncerpool_modeFALSESpecifies when a server connection can be reused by other clients.transaction
pgbouncerserver_idle_timeoutFALSEIf a server connection has been idle for more than this many seconds, it will be closed.60
postgresauto_explain.log_analyzeFALSECauses EXPLAIN ANALYZE output, rather than just EXPLAIN output, to be printed when an execution plan is logged.Postgres default
postgresauto_explain.log_buffersFALSEControls whether buffer usage statistics are printed when an execution plan is logged.Postgres default
postgresauto_explain.log_formatFALSESelects the EXPLAIN output format to be used.Postgres default
postgresauto_explain.log_min_durationFALSEThe minimum statement execution time, in milliseconds, that will cause the statement’s plan to be logged.Postgres default
postgresauto_explain.log_nested_statementsFALSECauses nested statements (statements executed inside a function) to be considered for logging.Postgres default
postgresauto_explain.log_timingFALSEControls whether per-node timing information is printed when an execution plan is logged.Postgres default
postgresauto_explain.log_triggersFALSECauses trigger execution statistics to be included when an execution plan is logged.Postgres default
postgresauto_explain.log_verboseFALSEControls whether verbose details are printed when an execution plan is logged.Postgres default
postgresauto_explain.sample_rateFALSECauses auto_explain to only explain a fraction of the statements in each session.Postgres default
postgresautovacuum_analyze_scale_factorFALSESpecifies a fraction of the table size to add to autovacuum_analyze_threshold when deciding whether to trigger an ANALYZE.Postgres default
postgresautovacuum_freeze_max_ageTRUESpecifies the maximum age (in transactions) that a table’s transaction ID can attain before a VACUUM operation is forced to prevent transaction ID wraparound within the table.Postgres default
postgresautovacuum_vacuum_cost_delayFALSESpecifies 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.Postgres default
postgresautovacuum_vacuum_cost_limitFALSESpecifies the cost limit value that will be used in automatic VACUUM operations.Postgres default
postgresautovacuum_vacuum_insert_scale_factorFALSESpecifies a fraction of the table size to add to autovacuum_vacuum_insert_threshold when deciding whether to trigger a VACUUM.Postgres default
postgresautovacuum_vacuum_insert_thresholdFALSESpecifies the number of inserted tuples needed to trigger a VACUUM in any one table.Postgres default
postgresautovacuum_vacuum_scale_factorFALSESpecifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM.Postgres default
postgrescheckpoint_completion_targetFALSESpecifies the target of checkpoint completion, as a fraction of total time between checkpoints.Postgres default
postgrescheckpoint_timeoutFALSEMaximum time between automatic WAL checkpoints.Postgres default
postgrescheckpoint_warningFALSEWrite a message to the server log if checkpoints caused by the filling of WAL segment files happen closer together than this amount of time.Postgres default
postgresdefault_statistics_targetFALSESets the default statistics target for table columns without a column-specific target set via ALTER TABLE SET STATISTICS.Postgres default
postgresdefault_text_search_configFALSESelects 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.Postgres default
postgresdefault_transaction_read_onlyFALSEA read-only SQL transaction cannot alter non-temporary tables.off
postgreshot_standby_feedbackFALSESpecifies whether or not a hot standby will send feedback to the primary or upstream standby about queries currently executing on the standby.on
postgresidle_in_transaction_session_timeoutFALSETerminate any session that has been idle within an open transaction for longer than the specified amount of time.Postgres default
postgresintervalstyleFALSESets the display format for interval value.Postgres default
postgresjitFALSEEnable JIT support.Postgres default
postgreslock_timeoutFALSEAbort any statement that waits longer than the specified amount of time while attempting to acquire a lock.Postgres default
postgreslog_autovacuum_min_durationFALSECauses each action executed by autovacuum to be logged if it ran for at least the specified amount of time.Postgres default
postgreslog_connectionsFALSEOutputs a line to the server logs detailing each successful connection.Postgres default
postgreslog_destinationFALSESets the desired log destinations.syslog,stderr
postgreslog_disconnectionsFALSECauses session terminations to be logged. The log output provides information similar to log_connections, plus the duration of the session.Postgres default
postgreslog_durationFALSECauses the duration of every completed statement to be logged.Postgres default
postgreslog_line_prefixFALSESpecifies a printf-style string that is output at the beginning of each log line.[%p][%b][%v][%x] %q[user=%u,db=%d,app=%a]
postgreslog_lock_waitsFALSEControls whether a log message is produced when a session waits longer than deadlock_timeout to acquire a lock.on
postgreslog_min_duration_sampleFALSEAllows sampling the duration of completed statements that ran for at least the specified amount of time.Postgres default
postgreslog_min_duration_statementFALSECauses the duration of each completed statement to be logged if the statement ran for at least the specified amount of time.2s
postgreslog_min_messagesFALSEControls which message levels are written to the server log.notice
postgreslog_rotation_sizeFALSEThis determines the maximum size of an individual log file.Postgres default
postgreslog_statementFALSEControls which SQL statements are logged.ddl
postgreslog_statement_sample_rateFALSEDetermines the fraction of statements with duration exceeding log_min_duration_sample that will be logged.Postgres default
postgreslog_temp_filesFALSEControls logging of temporary file names and sizes.10MB
postgreslog_transaction_sample_rateFALSESets the fraction of transactions whose statements are all logged, in addition to statements logged for other reasons.Postgres default
postgreslogical_decoding_work_memFALSESpecifies the maximum amount of memory to be used by logical decoding.Postgres default
postgresmaintenance_work_memFALSESpecifies the maximum amount of memory to be used by maintenance operations, such as VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY.TOTAL_MEMORY * 0.4
postgresmax_connectionsTRUEDetermines the maximum number of concurrent connections to the database server.500
postgresmax_locks_per_transactionTRUEControls the average number of object locks allocated for each transaction.Postgres default
postgresmax_logical_replication_workersTRUESpecifies maximum number of logical replication workers.Postgres default
postgresmax_parallel_maintenance_workersFALSESets the maximum number of parallel workers that can be started by a single utility command.Postgres default
postgresmax_parallel_workersFALSESets the maximum number of workers that the cluster can support for parallel operations.NUM_CPUS
postgresmax_parallel_workers_per_gatherFALSESets the maximum number of workers that can be started by a single Gather or Gather Merge node.NUM_CPUS
postgresmax_replication_slotsTRUESpecifies the maximum number of replication slots that the server can support.10
postgresmax_slot_wal_keep_sizeFALSESpecifies the maximum size of WAL files that replication slots are allowed to retain in the pg_wal directory at checkpoint time.STORAGE_GB * 0.1
postgresmax_standby_archive_delayFALSEDetermines how long the standby server should wait before canceling standby queries that conflict with about-to-be-applied WAL entries.Postgres default
postgresmax_standby_streaming_delayFALSEDetermines how long the standby server should wait before canceling standby queries that conflict with about-to-be-applied WAL entries.Postgres default
postgresmax_wal_sendersTRUESpecifies the maximum number of concurrent connections from standby servers or streaming base backup clients.10
postgresmax_wal_sizeFALSEMaximum size to let the WAL grow during automatic checkpoints.MIN(10GB, STORAGE_GB * 0.1)
postgresmax_worker_processesTRUESets the maximum number of background processes that the cluster can support.100
postgrespg_stat_statements.maxTRUEMaximum number of statements tracked.Postgres default
postgrespg_stat_statements.trackFALSEControl which statements should be tracked.Postgres default
postgrespg_stat_statements.track_utilityFALSEShould the utility commands be tracked. Utility commands are all those other than SELECT, INSERT, UPDATE, DELETE, and MERGE.Postgres default
postgresrandom_page_costFALSESets the planner’s estimate of the cost of a non-sequentially-fetched disk page.1.1
postgressession_preload_librariesFALSESpecifies one or more shared libraries that are to be preloaded at connection start.Postgres default
postgresstatement_timeoutFALSEAbort any statement that takes more than the specified amount of time.Postgres default
postgressynchronous_commitFALSESpecifies how much WAL processing must complete before the database server returns a “success” indication to the client.local
postgressyslog_split_messagesFALSESplit messages sent to syslog by lines and to fit into 1024 bytesPostgres default
postgrestcp_keepalives_countFALSESpecifies the number of TCP keepalive messages that can be lost before the server’s connection to the client is considered dead.4
postgrestcp_keepalives_idleFALSESpecifies the amount of time with no network activity after which the operating system should send a TCP keepalive message to the client.2
postgrestemp_file_limitFALSESpecifies 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.MIN(2000GB, STORAGE_GB * 0.25)
postgrestrack_activity_query_sizeTRUEMemory reserved to store the text of the currently executing command for each active session, for the pg_stat_activity.query field.Postgres default
postgrestrack_commit_timestampTRUERecord commit time of transactions.Postgres default
postgreswal_keep_sizeFALSESpecifies 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.Postgres default
postgreswal_sender_timeoutFALSESets the maximum time to wait for WAL replication.Postgres default
postgreswork_memFALSESets 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.(TOTAL_MEMORY * 0.75)/ (NUM_CORES * 8)