Snowflake Postgres 服务器设置

下表详细列出了可为 Snowflake Postgres 实例的 Postgres服务器组件设置的参数。每个设置的名称均链接至其对应的 Postgres 文档。

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

有关在创建 Snowflake Postgres 实例时设置这些 Postgres 服务器参数值的详细信息,请参阅 创建 Snowflake Postgres 实例

小技巧

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 (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM)

若需查看其 Postgres 17 的文档,可修改为:

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

组件

名称

需要重新启动

描述

默认值

pgbouncer

autodb_idle_timeout (https://www.pgbouncer.org/config.html)

FALSE

如果自动创建(通过“*”)的数据库连接池闲置超过此秒数,将被释放。

3600

pgbouncer

default_pool_size (https://www.pgbouncer.org/config.html)

FALSE

每个用户/数据库对允许的最大服务器连接数。

497

pgbouncer

ignore_startup_parameters (https://www.pgbouncer.org/config.html)

FALSE

忽略启动包中的参数(例如 options、extra_float_digits)。

client_encoding,datestyle,timezone,standard_conforming_strings,extra_float_digits

pgbouncer

max_prepared_statements (https://www.pgbouncer.org/config.html)

FALSE

单个服务器连接上保持活跃状态的预处理语句数量

250

pgbouncer

pool_mode (https://www.pgbouncer.org/config.html)

FALSE

指定服务器连接何时可被其他客户端重复使用。

transaction

pgbouncer

server_idle_timeout (https://www.pgbouncer.org/config.html)

FALSE

If a server connection has been idle for more than this many seconds, it will be closed.

60

postgres

auto_explain.log_analyze (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-ANALYZE)

FALSE

当执行计划被记录时,输出 EXPLAIN ANALYZE 内容而非仅 EXPLAIN 输出。

Postgres 默认值

postgres

auto_explain.log_buffers (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-BUFFERS)

FALSE

控制在记录执行计划时是否打印缓冲区使用统计信息。

Postgres 默认值

postgres

auto_explain.log_format (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-FORMAT)

FALSE

选择要使用的 EXPLAIN 输出格式。

Postgres 默认值

postgres

auto_explain.log_min_duration (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-MIN-DURATION)

FALSE

触发语句计划记录的最小语句执行时间(单位为毫秒)。

Postgres 默认值

postgres

auto_explain.log_nested_statements (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-NESTED-STATEMENTS)

FALSE

使嵌套语句(在函数内部执行的语句)可被纳入记录范围。

Postgres 默认值

postgres

auto_explain.log_timing (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-TIMING)

FALSE

控制在记录执行计划时是否打印各节点的时间信息。

Postgres 默认值

postgres

auto_explain.log_triggers (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-TRIGGERS)

FALSE

在记录执行计划时包含触发器执行统计信息。

Postgres 默认值

postgres

auto_explain.log_verbose (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-LOG-VERBOSE)

FALSE

控制在记录执行计划时是否打印详细细节。

Postgres 默认值

postgres

auto_explain.sample_rate (https://www.postgresql.org/docs/current/auto-explain.html#AUTO-EXPLAIN-CONFIGURATION-PARAMETERS-SAMPLE-RATE)

FALSE

使 auto_explain 仅解析每个会话中部分语句的执行计划。

Postgres 默认值

postgres

autovacuum_analyze_scale_factor (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-ANALYZE-SCALE-FACTOR)

FALSE

指定决定是否触发 ANALYZE 时,在 autovacuum_analyze_threshold 基础上附加的表大小比例系数。

Postgres 默认值

postgres

autovacuum_freeze_max_age (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE)

TRUE

指定表的交易 ID 在达到此最大年龄(以交易次数计)前,必须强制执行 VACUUM 操作以防止表内交易 ID 回卷。

Postgres 默认值

postgres

autovacuum_vacuum_cost_delay (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY)

FALSE

指定在自动 VACUUM 操作中使用的成本延迟值。如果指定为 -1,则将使用常规的 vacuum_cost_delay 值。

Postgres 默认值

postgres

autovacuum_vacuum_cost_limit (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-LIMIT)

FALSE

指定在自动 VACUUM 操作中使用的成本限制值。

Postgres 默认值

postgres

autovacuum_vacuum_insert_scale_factor (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-INSERT-SCALE-FACTOR)

FALSE

指定决定是否触发 VACUUM 时,在 autovacuum_vacuum_insert_threshold 基础上附加的表大小比例系数。

Postgres 默认值

postgres

autovacuum_vacuum_insert_threshold (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-INSERT-THRESHOLD)

FALSE

指定单个表中触发 VACUUM 所需的插入元组数量。

Postgres 默认值

postgres

autovacuum_vacuum_scale_factor (https://www.postgresql.org/docs/17/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-SCALE-FACTOR)

FALSE

指定决定是否触发 VACUUM 时,在 autovacuum_vacuum_threshold 基础上附加的表大小比例系数。

Postgres 默认值

postgres

checkpoint_completion_target

FALSE

指定检查点完成目标,以检查点间隔总时长的比例表示。

Postgres 默认值

postgres

checkpoint_timeout (https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-TIMEOUT)

FALSE

自动 WAL 检查点之间的最长时间间隔。

Postgres 默认值

postgres

checkpoint_warning (https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-WARNING)

FALSE

如果因 WAL 分段文件填满而触发的检查点间隔短于此设定时间,则向服务器日志写入警告信息。

Postgres 默认值

postgres

default_statistics_target (https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-DEFAULT-STATISTICS-TARGET)

FALSE

为未通过 ALTER TABLE SET STATISTICS 设置列特定目标的表列设定默认统计信息目标值。

Postgres 默认值

postgres

default_text_search_config (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DEFAULT-TEXT-SEARCH-CONFIG)

FALSE

选择文本搜索函数中未显式指定配置实参的变体所使用的文本搜索配置。

Postgres 默认值

postgres

default_transaction_read_only (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DEFAULT-TRANSACTION-READ-ONLY)

FALSE

只读 SQL 事务无法修改非临时表。

off

postgres

hot_standby_feedback (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-HOT-STANDBY-FEEDBACK)

FALSE

指定热备节点是否向主节点或上游备节点反馈当前在备节点上执行的查询信息。

日期

postgres

idle_in_transaction_session_timeout (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT)

FALSE

终止任何在开启事务后闲置时间超过指定时长的会话。

Postgres 默认值

postgres

intervalstyle (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-INTERVALSTYLE)

FALSE

设置时间间隔值的显示格式。

Postgres 默认值

postgres

jit (https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-JIT)

FALSE

启用 JIT 支持。

Postgres 默认值

postgres

lock_timeout (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-LOCK-TIMEOUT)

FALSE

中止任何在尝试获取锁时等待时间超过指定时长的语句。

Postgres 默认值

postgres

log_autovacuum_min_duration (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-AUTOVACUUM-MIN-DURATION)

FALSE

如果自动清理操作的执行时间达到或超过指定时长,则记录该操作的日志。

Postgres 默认值

postgres

log_connections (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-CONNECTIONS)

FALSE

在服务器日志中输出详细记录每个成功连接的行。

Postgres 默认值

postgres

log_destination (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-DESTINATION)

FALSE

设置期望的日志输出目标。

syslog,stderr

postgres

log_disconnections (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-DISCONNECTIONS)

FALSE

记录会话终止事件。日志输出提供类似于 log_connections 的信息,并附加会话持续时间。

Postgres 默认值

postgres

log_duration (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-DURATION)

FALSE

记录每个已完成语句的执行时长。

Postgres 默认值

postgres

log_line_prefix (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-LINE-PREFIX)

FALSE

指定一个 printf 风格的字符串,该字符串将输出在每个日志行的开头。

[%p][%b][%v][%x] %q[user=%u,db=%d,app=%a]

postgres

log_lock_waits (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-LOCK-WAITS)

FALSE

控制当会话等待获取锁的时间超过 deadlock_timeout 时是否生成日志消息。

日期

postgres

log_min_duration_sample (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-DURATION-SAMPLE)

FALSE

允许对执行时间至少达到指定时长的已完成语句进行时长抽样记录。

Postgres 默认值

postgres

log_min_duration_statement (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-DURATION-STATEMENT)

FALSE

如果语句执行时间达到或超过指定时长,则记录该语句的持续时间。

2s

postgres

log_min_messages (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-MIN-MESSAGES)

FALSE

控制哪些消息级别会被写入服务器日志。

notice

postgres

log_rotation_size (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE)

FALSE

此参数决定单个日志文件的最大大小。

Postgres 默认值

postgres

log_statement (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-STATEMENT)

FALSE

控制哪些 SQL 语句会被记录。

ddl

postgres

log_statement_sample_rate (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-STATEMENT-SAMPLE-RATE)

FALSE

确定执行时长超过 log_min_duration_sample 的语句中将被记录的比例。

Postgres 默认值

postgres

log_temp_files (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-TEMP-FILES)

FALSE

控制临时文件名和大小的日志记录。

10MB

postgres

log_transaction_sample_rate (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-TRANSACTION-SAMPLE-RATE)

FALSE

设置除了因其他原因被记录的语句外,其所有语句均被记录日志的事务的比例。

Postgres 默认值

postgres

logical_decoding_work_mem (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-LOGICAL-DECODING-WORK-MEM)

FALSE

指定逻辑解码可使用的最大内存量。

Postgres 默认值

postgres

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

FALSE

指定维护操作(如 VACUUM、CREATE INDEX 和 ALTER TABLE ADD FOREIGN KEY)可使用的最大内存量。

TOTAL_MEMORY * 0.4

postgres

max_connections (https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS)

TRUE

确定可并发连接到数据库服务器的最大数量。

500

postgres

max_locks_per_transaction (https://www.postgresql.org/docs/current/runtime-config-locks.html#GUC-MAX-LOCKS-PER-TRANSACTION)

TRUE

控制为每个事务分配的对象锁的平均数量。

Postgres 默认值

postgres

max_logical_replication_workers (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-LOGICAL-REPLICATION-WORKERS)

TRUE

指定逻辑复制工作器的最大数量。

Postgres 默认值

postgres

max_parallel_maintenance_workers (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PARALLEL-MAINTENANCE-WORKERS)

FALSE

设置单个实用程序命令可启动的最大并行工作线程数量。

Postgres 默认值

postgres

max_parallel_workers (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PARALLEL-WORKERS)

FALSE

设置集群可为并行操作支持的最大工作线程数量。

NUM_CPUS

postgres

max_parallel_workers_per_gather (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-PARALLEL-WORKERS-PER-GATHER)

FALSE

设置单个 Gather 或 Gather Merge 节点可启动的最大工作线程数量。

NUM_CPUS

postgres

max_replication_slots (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-REPLICATION-SLOTS)

TRUE

指定服务器可支持的最大复制槽数量。

10

postgres

max_slot_wal_keep_size (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-SLOT-WAL-KEEP-SIZE)

FALSE

指定在检查点时复制槽允许在 pg_wal 目录中保留的 WAL 文件最大大小。

STORAGE_GB * 0.1

postgres

max_standby_archive_delay (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-STANDBY-ARCHIVE-DELAY)

FALSE

决定备用服务器在取消与即将应用的 WAL 条目冲突的备用查询前应等待多长时间。

Postgres 默认值

postgres

max_standby_streaming_delay (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-STANDBY-STREAMING-DELAY)

FALSE

决定备用服务器在取消与即将应用的 WAL 条目冲突的备用查询前应等待多长时间。

Postgres 默认值

postgres

max_wal_senders (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-WAL-SENDERS)

TRUE

指定来自备用服务器或流式基础备份客户端的最大并发连接数。

10

postgres

max_wal_size (https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MAX-WAL-SIZE)

FALSE

在自动检查点期间允许 WAL 增长的最大大小。

MIN(10GB, STORAGE_GB * 0.1)

postgres

max_worker_processes (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAX-WORKER-PROCESSES)

TRUE

设置集群可支持的后台进程最大数量。

100

postgres

pg_stat_statements.max (https://www.postgresql.org/docs/current/pgstatstatements.html#PGSTATSTATEMENTS-CONFIG-PARAMS)

TRUE

跟踪的语句最大数量。

Postgres 默认值

postgres

pg_stat_statements.track (https://www.postgresql.org/docs/current/pgstatstatements.html#PGSTATSTATEMENTS-CONFIG-PARAMS)

FALSE

控制应跟踪哪些语句。

Postgres 默认值

postgres

pg_stat_statements.track_utility (https://www.postgresql.org/docs/current/pgstatstatements.html#PGSTATSTATEMENTS-CONFIG-PARAMS)

FALSE

是否应跟踪实用程序命令。实用程序命令指除 SELECT、INSERT、UPDATE、DELETE 和 MERGE 之外的所有命令。

Postgres 默认值

postgres

random_page_cost (https://www.postgresql.org/docs/current/runtime-config-query.html)

FALSE

设置规划器对非顺序读取磁盘页成本的估计值。

1.1

postgres

session_preload_libraries (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SESSION-PRELOAD-LIBRARIES)

FALSE

指定一个或多个在连接启动时要预加载的共享库。

Postgres 默认值

postgres

statement_timeout (https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT)

FALSE

中止任何执行时间超过指定时长的语句。

Postgres 默认值

postgres

synchronous_commit (https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT)

FALSE

指定数据库服务器在向客户端返回“成功”指示前,必须完成多少 WAL 处理。

local

postgres

syslog_split_messages (https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-SYSLOG-SPLIT-MESSAGES)

FALSE

将发送至 syslog 的消息按行拆分并适配到 1024 字节以内

Postgres 默认值

postgres

tcp_keepalives_count (https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-TCP-KEEPALIVES-COUNT)

FALSE

指定在认为服务器到客户端的连接失效前,可丢失的 TCP 保持活动消息数量。

4

postgres

tcp_keepalives_idle (https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-TCP-KEEPALIVES-IDLE)

FALSE

指定无网络活动多长时间后,操作系统应向客户端发送 TCP 保持活动消息。

2

postgres

temp_file_limit (https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-TEMP-FILE-LIMIT)

FALSE

指定单个进程可用于临时文件(如排序和哈希临时文件,或游标持有存储文件)的最大磁盘空间量。

MIN(2000GB, STORAGE_GB * 0.25)

postgres

track_activity_query_size (https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-ACTIVITY-QUERY-SIZE)

TRUE

为每个活跃会话保留用于存储当前执行命令文本的内存大小(用于 pg_stat_activity.query 字段)。

Postgres 默认值

postgres

track_commit_timestamp (https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-TRACK-COMMIT-TIMESTAMP)

TRUE

记录事务的提交时间。

Postgres 默认值

postgres

wal_keep_size (https://postgresqlco.nf/doc/en/param/wal_keep_size/)

FALSE

指定为流式复制而保留在 pg_wal 目录中的历史 WAL 文件最小大小(以备备用服务器需要获取)。

Postgres 默认值

postgres

wal_sender_timeout (https://www.postgresql.org/docs/current/runtime-config-replication.html)

FALSE

设置等待 WAL 复制的最大时间。

Postgres 默认值

postgres

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

FALSE

设置查询操作(如排序或哈希表)在写入临时磁盘文件前可使用的基础最大内存量。

(TOTAL_MEMORY * 0.75)/ (NUM_CORES * 8)