postgresql.conf文件中,每行配置的作用如下:
# 监听地址和端口
listen_addresses = '*' # '*'表示监听所有IP地址;默认为'localhost',使用'*'表示监听所有IP地址
port = 5432 # PostgreSQL服务器监听的端口号,默认为5432
# 最大连接数
max_connections = 100 # 允许的最大客户端连接数
# SSL配置
#ssl = off # 是否启用SSL,默认为关闭
#ssl_ca_file = '' # SSL证书颁发机构的证书文件路径
#ssl_cert_file = 'server.crt' # 服务器SSL证书文件路径
#ssl_key_file = 'server.key' # 服务器SSL私钥文件路径
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # 允许的SSL密码
#ssl_prefer_server_ciphers = on # 服务器SSL密码优先级
#ssl_min_protocol_version = 'TLSv1.2' # 最小SSL协议版本
#ssl_max_protocol_version = '' # 最大SSL协议版本
# 资源使用
shared_buffers = 128MB # 共享缓冲区大小
temp_buffers = 8MB # 临时缓冲区大小
work_mem = 4MB # 每个查询的工作内存大小
maintenance_work_mem = 64MB # 维护操作的内存大小
autovacuum_work_mem = -1 # 自动清理操作的内存大小,-1表示使用maintenance_work_mem
# WAL(Write-Ahead Logging)配置
wal_level = replica # WAL级别,可选值为minimal, replica, logical
#fsync = on # 是否将数据刷新到磁盘以确保崩溃安全性,默认为开启
#synchronous_commit = on # 同步提交级别,可选值为off, local, remote_write, remote_apply, on
#wal_sync_method = fsync # WAL同步方法,可选值为fsync, fdatasync, open_datasync等
# 自动化清理
#autovacuum = on # 是否启用自动化清理,默认为开启
#autovacuum_naptime = 1min # 自动清理运行之间的时间间隔
# 备份和恢复
#archive_mode = on # 是否启用归档,可选值为off, on, always
#archive_command = '' # 归档日志文件的命令
# 备份恢复目标
#recovery_target = '' # 恢复目标,可选值为immediate, name, time, xid, lsn
#recovery_target_name = '' # 恢复目标的名称
#recovery_target_time = '' # 恢复目标的时间戳
#recovery_target_xid = '' # 恢复目标的事务ID
#recovery_target_lsn = '' # 恢复目标的WAL LSN
#recovery_target_inclusive = on # 是否包含恢复目标本身
#recovery_target_timeline = 'latest' # 恢复目标的时间线,可选值为current, latest, 或指定的时间线ID
#recovery_target_action = 'pause' # 恢复目标达到后的操作,可选值为pause, promote, shutdown
# 复制配置
max_wal_senders = 10 # 最大WAL发送者的数量
#max_replication_slots = 10 # 最大复制插槽的数量
# 查询优化
#enable_bitmapscan = on # 是否启用位图扫描
#enable_hashagg = on # 是否启用哈希聚合
#enable_hashjoin = on # 是否启用哈希连接
#enable_indexscan = on # 是否启用索引扫描
#enable_indexonlyscan = on # 是否启用索引唯一扫描
#enable_material = on # 是否启用材料化
#enable_mergejoin = on # 是否启用合并连接
#enable_nestloop = on # 是否启用嵌套循环连接
#enable_parallel_append = on # 是否启用并行附加
#enable_seqscan = on # 是否启用顺序扫描
#enable_sort = on # 是否启用排序
#enable_incremental_sort = on # 是否启用增量排序
#enable_tidscan = on # 是否启用TID扫描
#enable_partitionwise_join = off # 是否启用分区连接
#enable_partitionwise_aggregate = off # 是否启用分区聚合
#enable_parallel_hash = on # 是否启用并行哈希
#enable_partition_pruning = on # 是否启用分区修剪
#jit = on # 是否启用JIT编译
# 日志记录
#log_destination = 'stderr' # 日志输出目标,可选值为stderr, csvlog, syslog, eventlog
logging_collector = on # 是否启用日志收集器
#log_directory = 'log' # 日志文件存储目录
log_filename = 'postgresql-%a.log' # 日志文件名格式,可包含strftime()格式
#log_file_mode = 0600 # 日志文件的权限
#log_truncate_on_rotation = on # 是否在日志轮换时截断现有日志文件
log_rotation_age = 1d # 日志轮换的时间间隔
log_rotation_size = 10MB # 日志轮换的文件大小
#log_min_duration_statement = -1 # 记录超过指定时间的语句执行时间,-1表示禁用
#log_statement = 'all' # 记录执行的语句类型,可选值为none, ddl, mod, all
#log_checkpoints = on # 是否记录检查点完成的信息
#log_connections = on # 是否记录连接和断开连接的信息
#log_disconnections = on # 是否记录断开连接的信息
#log_duration = off # 是否记录语句执行时间
#log_error_verbosity = default # 记录错误的详细级别,可选值为terse, default, verbose
#log_lock_waits = off # 是否记录锁等待信息
#log_statement_sample_rate = 1.0 # 记录语句的采样率
#log_temp_files = -1 # 记录创建临时文件的阈值,-1表示禁用
#log_timezone = '' # 日志时区
# 监控配置
#track_activities = on # 是否追踪活动状态
#track_counts = on # 是否追踪计数器
#track_io_timing = off # 是否追踪I/O计时
#track_functions = none # 是否追踪函数调用,可选值为none, pl, all
#track_activity_query_size = 1024 # 追踪活动状态的查询文本的最大大小
# 连接池
#max_pool_size = 20 # 连接池的最大连接数
#min_pool_size = 5 # 连接池的最小连接数
#max_worker_processes = 8 # 最大工作进程数
# 其他配置
#timezone = 'UTC' # 数据库时区
#datestyle = 'iso, mdy' # 日期样式
#lc_messages = 'en_US.UTF-8' # 本地化信息
#lc_monetary = 'en_US.UTF-8' # 本地化货币格式
#lc_numeric = 'en_US.UTF-8' # 本地化数值格式
#lc_time = 'en_US.UTF-8' # 本地化时间格式
#default_text_search_config = 'pg_catalog.english' # 默认文本搜索配置
# - Shared Library Preloading -
#shared_preload_libraries = '' # 用于共享库预加载,包含要在PostgreSQL启动时加载的共享库的名称
#local_preload_libraries = '' # 仅限本地连接的共享库预加载
#session_preload_libraries = '' # 仅限当前会话的共享库预加载
#jit_provider = 'llvmjit' # JIT编译器的提供者,可选值为'llvmjit'等
#dynamic_library_path = '$libdir' # 动态库路径
# - Other Defaults -
# 这一部分包含一些其他的默认设置
#------------------------------------------------------------------------------
# LOCK MANAGEMENT
#------------------------------------------------------------------------------
#deadlock_timeout = 1s # 死锁超时时间,单位为秒
#max_locks_per_transaction = 64 # 每个事务允许的最大锁数
#max_pred_locks_per_transaction = 64 # 每个事务允许的最大预测锁数
#max_pred_locks_per_relation = -2 # 每个关系允许的最大预测锁数,负值表示
# (max_pred_locks_per_transaction
# / -max_pred_locks_per_relation) - 1
#max_pred_locks_per_page = 2 # 每页允许的最大预测锁数
#------------------------------------------------------------------------------
# VERSION AND PLATFORM COMPATIBILITY
#------------------------------------------------------------------------------
# - Previous PostgreSQL Versions -
#array_nulls = on # 是否启用数组中的空值
#backslash_quote = safe_encoding # 反斜杠的引号处理方式,可选值为on, off, 或safe_encoding
#escape_string_warning = on # 是否警告在字符串中使用反斜杠进行转义
#lo_compat_privileges = off # 是否启用兼容大对象(large objects)特权
#operator_precedence_warning = off # 是否警告在使用不同优先级的操作符时
#quote_all_identifiers = off # 是否在标识符周围使用引号
#standard_conforming_strings = on # 是否使用标准字符串转义语法
#synchronize_seqscans = on # 是否同步序列扫描
# - Other Platforms and Clients -
#transform_null_equals = off # 是否将"NULL = NULL"转换为false
#------------------------------------------------------------------------------
# ERROR HANDLING
#------------------------------------------------------------------------------
#exit_on_error = off # 在任何错误发生时是否终止会话
#restart_after_crash = on # 后端崩溃后是否重新初始化
#data_sync_retry = off # 在数据fsync失败时是否重试或触发崩溃
#------------------------------------------------------------------------------
# CONFIG FILE INCLUDES
#------------------------------------------------------------------------------
# 这一部分允许从除默认postgresql.conf之外的文件加载设置。
# 注意,这些是指令而不是变量分配,因此可以有多个有效的指令。
#include_dir = '...' # 包含以'.conf'结尾的文件的目录,例如,'conf.d'
#include_if_exists = '...' # 仅在文件存在时包含文件
#include = '...' # 包含文件