配置文件
登录授权ud_hba.conf
cat /data/udb/ud_hba.conf
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
配置文件unvdbsvr.conf参数详解
注 unvdbsvr.conf 配置文件只列出部分参数,并不是所有参数都允许修改
name | restart | setting | description |
---|---|---|---|
allow_system_table_mods | 否 | on/off,默认值为off | 控制系统表直接修改权限的参数,其作用是允许或禁止通过 SQL 语句直接修改系统目录表。 |
application_name | 否 | 可设置任意字符串,默认值根据连接的应用程序而定,示例值如 Navicat | 用于标识客户端应用程序名称的参数,其作用是在数据库会话、日志和监控工具中标记当前连接的来源,便于区分不同应用程序的活动。 |
archive_cleanup_command | 否 | 可设置任意有效的 shell 命令,无默认值 | 用于 WAL(预写日志)归档管理的参数,其作用是在执行时间点恢复(PITR)或流式复制时,自动清理不再需要的历史 WAL 归档文件。 |
archive_command | 否 | 可设置任意有效的用于归档 WAL 文件的 shell 命令,示例值如 "DATE=date +%Y%m%d; DIR=""/data/backup/ud_rman_backup/walbackup/""; (test -d $DIR | 控制 WAL(预写日志)归档的参数,其作用是定义当 WAL 段文件被切换(完成写入)时,将其复制到归档存储位置的 shell 命令。 |
archive_mode | 是 | on:启用归档模式 off:禁用归档模式(默认值) always:强制归档所有 WAL 段,包括检查点期间生成的文件 |
控制 WAL(预写日志)归档功能的参数,其作用是在事务提交后将写入完成的 WAL 段文件复制到指定归档位置,实现日志的持久化存储,为数据库提供时间点恢复(PITR)能力。 |
archive_timeout | 否 | 0(默认值):表示禁用超时机制,仅在 WAL 文件写满(通常 16MB)或手动触发时切换 非零值(如 300)表示强制每 300 秒切换一次 WAL 文件并触发归档 |
控制 WAL(预写日志)归档行为的参数,其作用是强制在指定时间间隔(秒)内生成一个新的 WAL 段文件(.xlog 或 .wal),即使当前 WAL 活动不足。 |
array_nulls | 否 | on/off,默认值为on | 控制数组输入解析行为的参数,作用是决定未用引号包裹的 NULL 是否被识别为数组中的空元素。 |
authentication_timeout | 否 | 1min(默认) | 控制客户端认证超时的参数,作用是限制客户端与服务器建立连接时认证过程的最长耗时。 |
autovacuum | 否 | on/off,默认值为on | 控制自动清理和分析进程的核心参数,作用是启用或禁用数据库的自动维护功能。 |
autovacuum_analyze_scale_factor | 否 | 0.1(默认即 10%) | 控制自动 ANALYZE 触发条件的参数,用于确定何时自动收集表的统计信息以更新查询规划器。其作用是在表数据发生变化时,通过计算 修改行数 × 该参数值 + autovacuum_analyze_threshold 来判断是否需要执行 ANALYZE。 |
autovacuum_analyze_threshold | 否 | 50(默认) | 控制自动 ANALYZE 操作触发条件的参数,其作用是定义当表中发生变更的行数达到阈值时,自动触发统计信息收集。 |
autovacuum_freeze_max_age | 否 | 200000000(默认2亿) | 控制自动 VACUUM FREEZE 操作触发阈值的参数,其作用是防止表的事务 ID(XID)回绕导致的数据可见性问题。 |
autovacuum_max_workers | 是 | 取值范围为 0 到 max_worker_processes,默认值为 3 0 表示禁用自动清理功能 |
控制自动清理(AutoVacuum)进程并行数量的参数,其作用是限制同时运行的 autovacuum 工作线程的最大数量。 |
autovacuum_multixact_freeze_max_age | 否 | 400000000(默认4亿) | 控制自动清理(Autovacuum)多事务(MultiXact)冻结操作的参数,其作用是限制表中多事务 ID(MultiXact ID)的最大年龄(即事务数)。 |
autovacuum_naptime | 否 | 1min(默认)支持 ms(毫秒)、s(秒)、min(分钟)等 | 控制自动清理(AutoVacuum)进程执行间隔的参数,其作用是定义自动清理守护进程(autovacuum launcher)在两次扫描数据库之间的休眠时间。 |
autovacuum_vacuum_cost_delay | 否 | 2ms(默认)0 表示禁用延迟 | 控制自动 VACUUM 操作资源消耗速率的参数,其作用是在执行自动清理(回收死元组、更新统计信息)时,为每个代价单位添加指定的延迟时间,从而限制 VACUUM 对系统资源的占用率。 |
autovacuum_vacuum_cost_limit | 否 | -1 | 控制自动 VACUUM 操作资源消耗上限的参数,其作用是限制自动清理过程中单次批量操作的成本值,防止 VACUUM 过度占用 I/O 和 CPU 资源。 |
autovacuum_vacuum_insert_scale_factor | 否 | 0.2(默认即 20%) | 控制自动 VACUUM 触发条件的参数,用于决定在插入操作后,表中新增数据达到多少比例时触发自动清理。 |
autovacuum_vacuum_insert_threshold | 否 | 1000(默认) | 控制自动 VACUUM 机制的参数,其作用是设定在触发自动清理之前,表中允许的最小新插入元组数量。如果设置为 -1,则禁用插入清理。 |
autovacuum_vacuum_scale_factor | 否 | 0.2(默认即 20%) | 参数用于设置在执行自动清理之前,需要更新或删除的元组数量占 reltuples 的比例。当这个值达到指定的阈值时,unvdb将开始执行清理操作。 |
autovacuum_vacuum_threshold | 否 | 50(默认) | 控制自动 VACUUM 触发条件的参数,其作用是设置表中需要清理的最小元组数(死亡元组或过期元组),当超过该阈值时,自动 VACUUM 进程会启动以回收空间并更新统计信息。 |
autovacuum_work_mem | 否 | -1(默认) | 控制自动清理进程内存使用上限的参数,其作用是限制单个 autovacuum 工作进程在执行 VACUUM 或 ANALYZE 操作时可用的最大内存量。当设置为-1时,表示使用系统默认值。 |
backend_flush_after | 否 | 0(默认,禁用强制刷新,依赖操作系统自动调度) 非零值(如 32kB):每写入指定大小的数据后触发一次刷新 |
控制后端进程向文件系统写入数据时刷新策略的参数,其作用是当连续写入达到指定大小时,强制将数据从内核缓冲区刷新到磁盘,以减少后续同步操作的延迟。 |
backslash_quote | 否 | on:始终允许 \' 转义单引号(历史兼容模式)off:始终拒绝 \' 转义,强制使用 SQL 标准的双引号 '' 。safe_encoding(默认值):仅在客户端编码不允许 ASCII 反斜杠( \ )出现在多字节字符中时允许 \' ,例如 UTF-8 等单字节编码113 |
控制字符串文本中单引号转义行为的参数。其核心作用是决定是否允许使用 \' 表示单引号,以平衡 SQL 标准兼容性与安全性。 |
backtrace_functions | 否 | on:启用函数调用堆栈记录 off(默认值):禁用堆栈记录,仅输出基本错误信息 |
用于调试的参数,其作用是控制在数据库发生错误时,是否记录详细的函数调用堆栈信息。 |
bgwriter_delay | 否 | 200ms(默认) | 控制后台写入器活动频率的参数,其作用是指定 bgwriter 在两次连续的写入操作之间休眠的时间间隔。 |
bgwriter_flush_after | 否 | 字节数(如 1MB、8MB),默认值为 512KB。设置为 0 时禁用此功能 | 控制后台写进程在写入一定数据量后是否强制将脏页刷新到磁盘。通过设置该参数,可减少内存压力并平衡 I/O 负载。 |
bgwriter_lru_maxpages | 否 | 默认值为 100(单位:缓冲区数)。取值范围为 0~1000 | 限制 BgWriter 每次扫描 LRU 列表时最多写入磁盘的脏页数量。该值越小,BgWriter 写入频率越高,服务器进程需自行处理的脏页越少。 |
bgwriter_lru_multiplier | 否 | 默认值为 2。取值范围为 0~10 | 调整 BgWriter 根据脏页比例动态调整写入速度的系数。较高的值(如 2.0)可应对突发负载,较低的值(如 1.0)使写入更平稳。 |
block_size | 是 | 8192(默认) | 定义数据库存储块的大小(如 8192 字节)。该参数在初始化数据库集群时固定,后续无法修改。 |
bonjour | 是 | on(启用)或 off(禁用),默认值为 off | 启用 / 禁用 Bonjour(零配置网络服务),允许客户端通过本地网络自动发现数据库实例。 |
bonjour_name | 是 | 字符串(如 my-unvdb),默认值为空字符串 | 指定 Bonjour 服务的自定义名称(如 udb-1),默认使用数据库集群名称。 |
bytea_output | 否 | hex(默认)或 escape | 控制二进制数据(如 BYTEA 类型)的输出格式。hex 以十六进制显示,escape 使用转义字符表示。 |
check_function_bodies | 是 | on/off,默认值为on。 | 在创建函数(CREATE FUNCTION)和存储过程(CREATE PROCEDURE)时,是否启用pg_check_function_bodies检查函数体。设为on时,创建函数会立即检查语法;设为off时,仅在函数首次调用时检查。 |
checkpoint_completion_target | 否 | 范围0.0到1.0,默认值为0.9 | 参数用于设置在检查点过程中刷新脏缓冲区所花费的时间占检查点间隔的比例。这个参数的默认值为 0.9,表示在检查点过程中,有 90% 的时间用于刷新脏缓冲区。 |
checkpoint_flush_after | 否 | 256kB | 执行写操作后,将之前的操作刷新到磁盘的页面数为 256 KB。系统会将之前的操作缓存在内存中,直到达到 256 KB大小后一次性将它们写入磁盘。设为0时禁用定期刷新。 |
checkpoint_timeout | 否 | 默认值为5min,可设为seconds(秒)、minutes(分钟)等时间单位 | 设置自动触发检查点的最大时间间隔。超过该时间后,系统会强制执行检查点,确保数据持久化并控制 WAL 日志大小。 |
checkpoint_warning | 否 | 默认值为30s | 当检查点执行时间超过该阈值时,向日志中写入警告信息,用于监控检查点性能是否正常。设为0时禁用警告。 |
client_connection_check_interval | 否 | 默认值为0s(禁用) | 设置服务器检查客户端连接状态的时间间隔。用于检测已断开但未清理的客户端连接(如网络中断),并释放相关资源。设为0时不主动检查,仅在客户端下次通信时发现断开。 |
client_encoding | 是 | UNICODE(根据系统 Locale 设置) | 指定客户端连接使用的字符编码,用于处理客户端发送的 SQL 语句和数据的字符集转换。 |
client_min_messages | 否 | 可选debug5、debug4、debug3、debug2、debug1、log、notice、warning、error默认值为notice | 控制服务器向客户端返回的最小消息级别。 |
cluster_name | 是 | 默认值为空(' ') | 用于标识数据库集群的名称,主要用于逻辑复制或监控工具中区分不同集群。 |
commit_delay | 否 | 0 | 设置提交事务时的延迟时间,用于将多个小事务的提交操作合并为批量 IO,提升性能,单位为微秒。 |
commit_siblings | 否 | 5 | 与commit_delay配合使用,指定当有至少 N 个并发事务存在时,当前事务的提交会延迟commit_delay时间,以合并 IO。 |
compute_query_id | 否 | auto | 控制是否为每个 SQL 查询生成唯一的查询 ID(query_id),用于日志记录和监控。 |
config_file | 否 | /data/udb/unvdbsvr.conf | 服务器的主要配置文件存储位置。 |
constraint_exclusion | 否 | 可选off、on、partition,默认值为partition | 控制查询优化器是否使用表约束来排除不可能包含结果的表或分区。 |
cpu_index_tuple_cost | 否 | 0.005 | 参数是设置查询计划器在索引扫描过程中处理每个索引条目的成本估计值。默认值为0.005,表示每处理一个索引条目需要花费0.005个CPU周期。 |
cpu_operator_cost | 否 | 0.0025 | 用于查询优化器估算索引扫描中处理每个元组的 CPU 成本。值越大,优化器越倾向于选择全表扫描而非索引扫描。默认值为0.0025,表示每处理一个操作符或函数调用需要花费0.0025个CPU周期。 |
cpu_tuple_cost | 否 | 0.01 | 用于查询优化器估算处理表中每个元组的 CPU 成本(如全表扫描时的元组读取)。值越大,优化器越倾向于选择索引扫描。默认值为0.01,表示每处理一个元组需要花费0.01个CPU周期。 |
cron.database_name | 是 | unvdb | ud_cron元数据存储在unvdb数据库中。 |
cron.enable_superuser_jobs | 是 | on/off,默认值为off | 允许以超级用户的身份调度作业 |
cron.host | 是 | localhost | 连接到unvdb的主机名。 |
cron.log_min_messages | 否 | warning | log_min_messages 用于设置 launcher bgworker 的日志最小消息级别。 |
cron.log_run | 否 | on/off,默认值为off | 表示将所有作业运行记录到 job_run_details 表中 |
cron.log_statement | 否 | on | 表示在执行之前记录所有 cron 语句。 |
cron.max_running_jobs | 否 | 32 | 表示可以同时运行的最大作业数 |
cron.timezone | 否 | GMT | 指定用于 cron 计划的时间区域 |
cron.use_background_workers | 否 | off | 表示使用后台工作进程而不是客户端会话 |
cursor_tuple_fraction | 否 | 0.1 | 用于查询优化器估算游标(cursor)操作时返回的元组比例。当使用游标分批获取数据时,优化器会根据该值估算内存使用和 IO 成本。即该行数据的占比为0.1。 |
data_checksums | 是 | on/off,默认值为off | 是否启用数据页的校验和功能,用于检测磁盘错误或数据 corruption。启用后,每个数据页写入时会计算校验和,读取时验证,增加少量 IO 开销。 |
data_directory | 是 | /data/udb | 表示设置服务器数据目录 |
data_directory_mode | 否 | 0700 | 设置数据目录的默认权限模式,用于新建子目录或文件时的权限控制。仅在初始化数据库(initdb)时生效,运行时不可修改。 |
data_sync_retry | 是 | on/off,默认值为off | 控制在文件同步操作失败时是否重试的参数,其作用是在执行 fsync() 或类似系统调用失败时,决定数据库是否尝试重试同步操作而非立即崩溃。 |
DateStyle | 否 | ISO, YMD | 设置日期和时间值的显示格式。 |
db_user_namespace | 否 | on/off,默认值为off | 启用时,允许用户创建与数据库同名的模式(schema),用于隔离用户数据。关闭时,用户无法创建与数据库同名的模式。 |
deadlock_timeout | 否 | 1s | 设置死锁检测的超时时间。当事务等待锁的时间超过该值时,系统会主动检查是否存在死锁,若存在则选择一个事务作为 “受害者” 回滚。可减少长事务等待死锁的时间。 |
debug_assertions | 是 | on/off,默认值为off | 显示正在运行的服务器是否启用了断言检查。 |
debug_discard_caches | 否 | 0(off)/1(on),默认值为0 | 用于调试目的的参数,其作用是强制清空各类内部缓存,以便测试时观察数据库在无缓存状态下的行为。 |
debug_pretty_print | 否 | on/off,默认值为on | 启用时,服务器在日志中打印内部数据结构时使用更易读的格式,方便调试。对性能影响较小,可在需要时动态启用。 |
debug_print_parse | 否 | on/off,默认值为off | 启用时,服务器在日志中打印 SQL 语句的解析过程(语法分析树),用于调试查询解析错误。仅在开发或排查解析问题时使用,会产生大量日志。 |
debug_print_plan | 否 | on/off,默认值为off | 用于调试查询优化器,开启后会在服务器日志中打印每个查询的执行计划。 |
debug_print_rewritten | 否 | on/off,默认值为off | 调试参数,开启后会在日志中打印查询重写后的 SQL 语句(如视图展开、条件转换等)。 |
default_statistics_target | 否 | 取值为整数(默认 100),值越大,统计信息越详细(但会增加存储和计算开销) | 控制表统计信息的收集精度,影响查询优化器的成本估算。 |
default_table_access_method | 否 | heap | 设置新表的默认表访问方法。 |
default_tablespace | 是 | 空字符串(默认值):即使用集群的默认表空间 | 设置创建表和索引的默认表空间。 |
default_text_search_config | 否 | pg_catalog.simple | 设置默认的文本搜索配置。如设置为'pg_catalog.english',表示使用英文文本搜索配置。 |
default_toast_compression | 否 | pglz、lz4 | 指定 TOAST 表(存储大字段)的默认压缩算法。 |
default_transaction_deferrable | 否 | on/off,默认值为off | 设置新事务的默认可延迟状态。 |
default_transaction_isolation | 否 | read committed | 设置每个新事务的事务隔离级别。 |
default_transaction_read_only | 否 | on/off,默认值为off | 设置新事务的默认只读状态。 |
dynamic_library_path | 是 | $libdir | 设置动态加载模块的路径。 |
dynamic_shared_memory_type | 是 | posix(默认)、sysv、windows、mmap | 选择使用的动态共享内存实现。 |
effective_cache_size | 否 | 4GB | 告知查询优化器 “可用缓存” 的大小(实际物理内存 + 操作系统缓存),用于估算索引扫描与顺序扫描的成本。 |
effective_io_concurrency | 否 | 取值为整数(默认 1) | 告知优化器存储设备支持的并发 I/O 操作数,用于成本估算(尤其针对 SSD 或 RAID 设备)。 |
enable_async_append | 否 | on/off,默认值为on | 控制查询优化器是否允许使用特定查询计划节点(如位图扫描、哈希连接等)。 |
enable_bitmapscan | 否 | on/off,默认值为on | 控制是否允许优化器使用位图扫描(Bitmap Scan)执行计划。 |
enable_gathermerge | 否 | on/off,默认值为on | 控制是否启用规划器的收集合并计划使用。 |
enable_hashagg | 否 | on/off,默认值为on | 控制是否允许使用哈希聚合(Hash Aggregate)执行计划。 |
enable_hashjoin | 否 | on/off,默认值为on | 控制是否启用规划器的哈希连接计划使用。 |
enable_incremental_sort | 否 | on/off,默认值为on | 控制是否启用规划器的增量排序步骤使用。 |
enable_indexonlyscan | 否 | on/off,默认值为on | 控制是否启用规划器的索引仅扫描计划使用。 |
enable_indexscan | 否 | on/off,默认值为on | 控制是否启用规划器的索引扫描计划使用。 |
enable_material | 否 | on/off,默认值为on | 控制是否启用规划器的物化使用。 |
enable_memoize | 否 | on/off,默认值为on | 控制是否启用规划器的备忘录使用 |
enable_mergejoin | 否 | on/off,默认值为on | 控制是否启用规划器的合并连接计划使用。 |
enable_nestloop | 否 | on/off,默认值为on | 控制是否启用规划器的嵌套循环连接计划使用 |
enable_parallel_append | 否 | on/off,默认值为on | 控制是否启用规划器的并行追加计划使用。 |
enable_parallel_hash | 否 | on/off,默认值为on | 控制是否启用规划器的并行哈希计划使用。 |
enable_partition_pruning | 否 | on/off,默认值为on | 控制是否启用计划时间和执行时间分区剪枝。 |
enable_partitionwise_aggregate | 否 | on/off,默认值为off | 控制是否启用分区式聚合和分组。 |
enable_partitionwise_join | 否 | on/off,默认值为off | 控制是否启用分区式连接。 |
enable_seqscan | 否 | on/off,默认值为on | 控制是否启用规划器的序列扫描计划使用 |
enable_sort | 否 | on/off,默认值为on | 控制是否启用规划器的显式排序步骤使用。 |
enable_tidscan | 否 | on/off,默认值为on | 控制是否启用规划器的的 TID 扫描计划使用。 |
escape_string_warning | 否 | on/off,默认值为on | 控制是否在普通字符串字面值中发出有关反斜杠转义的警告。 |
event_source | 否 | Unvdb | 事件源Unvdb设置应用程序名称,用于标识在事件日志中unvdb消息. |
exit_on_error | 是 | on/off,默认值为off | 控制服务器在启动过程中遇到致命错误时是否立即退出。 |
external_pid_file | 是 | 默认值为空(' ') | 指定服务器进程 ID(PID)的外部存储文件路径。 |
extra_float_digits | 否 | 默认值为1,取值范围-10 ~ 10。 | 控制浮点数输出时的额外精度位数。 |
force_parallel_mode | 否 | 默认值为off,可选值off、on、regress | 是否启用并行查询模式。 |
from_collapse_limit | 否 | 8,取值≥1 | 控制FROM子句中表连接的折叠(collapse)数量上限。 |
fsync | 否 | on/off,默认值为on | 控制是否将数据同步写入磁盘。 |
full_page_writes | 否 | on/off,默认值为on | 将完整页面写入到 WAL 当第一次修改后,从写缓存中获取。表示是否对每个数据页进行完整的写入。此处设置为on,表示进行全页写入。 |
geqo | 否 | on/off,默认值为on | 启用遗传查询优化器(GEQO),用于处理多表连接时的复杂查询规划,通过模拟进化算法寻找最优执行计划。 |
geqo_effort | 否 | 默认值为5,取值 1~10 | GEQO是一种用于解决组合优化问题的算法。在GEQO中,effort参数用于设置其他GEQO参数的默认值。 |
geqo_generations | 否 | 0 | GEQO 算法中的世代数量,决定进化迭代次数。 |
geqo_pool_size | 否 | 0 | GEQO 算法中的种群大小,决定每次迭代的候选解数量。 |
geqo_seed | 否 | 0 | GEQO 算法的随机种子,用于生成初始种群。 |
geqo_selection_bias | 否 | 默认值为2,取值≥1.0 | GEQO 算法中选择父代的偏差因子。值越大,越倾向于选择适应度高的候选解,加速收敛但可能陷入局部最优。 |
geqo_threshold | 否 | 默认值为12,取值≥1 | 启用 GEQO 的表数量阈值。当查询涉及的表数超过该值时,自动启用 GEQO;否则使用传统规划器。 |
gin_fuzzy_search_limit | 否 | 默认值为0,取值≥0 | 控制 GIN 索引模糊搜索(如@@ 操作符)的最大结果数。设为0 时不限制,可能导致高内存消耗;设为正数时限制返回结果数量。 |
gin_pending_list_limit | 否 | 默认值为4MB,取值≥1kB | GIN 索引待处理列表的最大内存占用,用于缓存未写入磁盘的索引更新。超过时会触发刷盘,避免内存溢出。 |
hash_mem_multiplier | 否 | 默认值为1,取值 > 0 | 哈希操作的内存分配乘数,用于调整哈希表的最大内存使用量(基于 work_mem 参数)。 |
hba_file | 否 | /data/udb/ud_hba.conf | 参数用于设置服务器的"hba"配置文件。 |
hot_standby | 是 | on/off,默认值为on | 启用热备模式,允许从库(Standby)接收并执行只读查询,实现主从复制场景下的读写分离。设为on时,从库需配置流复制。 |
hot_standby_feedback | 是 | on/off,默认值为off | 在热备模式下,从库向主库反馈已处理的事务信息,避免主库因长时间未被清理的旧事务导致索引膨胀。 |
huge_page_size | 是 | 默认值为0(自动检测系统大页大小),取值为系统支持的大页字节数 | 指定使用的大页内存大小。 |
huge_pages | 是 | 默认值为try,可选值try、on、off | 参数用于在Linux或Windows上控制是否使用大页。默认是off,可选值有 on,off,try。try尝试使用大页失败后使用普通内存页面。 |
ident_file | 是 | /data/udb/ud_ident.conf | 参数用于设置服务器的"ident"配置文件 |
idle_in_transaction_session_timeout | 否 | 默认 0(不超时) | 设置事务中空闲会话的超时时间,超时后未活跃的事务会被自动回滚,避免长事务占用资源。 |
idle_session_timeout | 否 | 默认 0(不超时) | 设置无活动会话的超时时间,超时后会话会被自动断开,用于释放闲置连接。 |
ignore_checksum_failure | 是 | on/off,默认值为off | 控制数据库在检测到数据页校验和错误时是否继续运行。 |
ignore_invalid_pages | 是 | on/off,默认值为off | 控制数据库是否忽略无法识别的页面格式错误(如损坏的页面)。 |
ignore_system_indexes | 是 | on/off,默认值为off | 控制真空(VACUUM)操作是否忽略系统表索引。 |
in_hot_standby | 否 | on/off,默认值为off | 标识当前数据库是否为热备(Standby)节点。 |
integer_datetimes | 否 | on/off,默认值为on | 控制是否使用整数格式存储时间戳(timestamp),替代默认的浮点数格式。 |
IntervalStyle | 否 | postgres | 控制时间间隔(interval)类型的显示格式。 |
jit | 否 | on/off,默认值为on | 控制是否启用 Just-In-Time(JIT)编译,用于优化查询执行效率。 |
jit_above_cost | 否 | 默认值100000 | 设置 JIT 编译的查询成本阈值,超过该阈值的查询会尝试启用 JIT。 |
jit_debugging_support | 否 | on/off,默认值为off | 启用 JIT 调试支持,用于排查 JIT 相关问题(如崩溃),会增加调试信息但降低性能。 |
jit_dump_bitcode | 否 | on/off,默认值为off | 控制是否将 JIT 生成的中间代码(位码)输出到日志,用于调试。 |
jit_expressions | 否 | on/off,默认值为on | 控制是否对查询表达式启用 JIT 编译(如过滤条件、计算字段)。 |
jit_inline_above_cost | 否 | 默认值500000 | 设置 JIT 内联函数的成本阈值,超过该阈值的函数会尝试内联以优化性能。 |
jit_optimize_above_cost | 否 | 默认值500000 | 设置 JIT 优化的查询成本阈值,超过该阈值的查询会进行更深度的优化(如循环展开)。 |
jit_profiling_support | 否 | on/off,默认值为off | 是否启用 JIT 性能分析支持,用于收集 JIT 编译的性能数据,便于优化。 |
jit_provider | 是 | llvmjit | 指定 JIT 编译器的实现方式。 |
jit_tuple_deforming | 否 | on/off,默认值为on | 控制是否对元组(行数据)的解析操作启用 JIT 编译,提升数据访问效率。 |
join_collapse_limit | 否 | 值为正整数(范围 1-10),默认 8 | 参数用于设置在执行JOIN操作时,FROM列表中的元素数量超过该join_collapse_limit参数用于设置在执行JOIN操作时,FROM列表中的元素数量超过该值时,不再进行扁平化处理 |
krb_caseins_users | 否 | on/off,默认值为off | 控制 Kerberos 认证时是否忽略用户名大小写。 |
krb_server_keyfile | 否 | 可在 unvdbsvr.conf 中设置,或通过 ALTER SYSTEM SET krb_server_keyfile = '路径'; 配置。 | 指定 Kerberos 服务的密钥文件路径,用于服务端认证。 |
lc_collate | 是 | zh_CN.UTF-8 | 设置字符排序规则(Collation),影响字符串比较和排序的行为。 |
lc_ctype | 是 | zh_CN.UTF-8 | 设置字符分类规则,影响字符类型(如字母、数字)的识别和处理。 |
lc_messages | 是 | zh_CN.UTF-8 | 设置数据库错误和提示信息的语言。 |
lc_monetary | 是 | zh_CN.UTF-8 | 设置货币格式规则,影响 money 数据类型的显示和解析。 |
lc_numeric | 是 | zh_CN.UTF-8 | 设置数字格式规则,影响数字类型的显示和输入解析。 |
lc_time | 是 | zh_CN.UTF-8 | 设置格式化日期和时间值的区域设置。 |
listen_addresses | 是 | * | 设置要监听的主机名或IP地址。'*'代表接受所有地址的连接 |
lo_compat_privileges | 是 | on/off,默认值为off | 控制大对象(Large Object,LO)的权限兼容性。 |
local_preload_libraries | 否 | 逗号分隔的库名 | 指定当前数据库会话加载的共享库。 |
lock_timeout | 否 | 默认 0 表示无限制 | 设置事务等待锁的最大时间,超时则抛出错误,避免长时间等待导致的性能问题。 |
log_autovacuum_min_duration | 否 | -1 表示禁用, 0 记录所有操作,默认10min | 记录自动 VACUUM 操作的执行时间,当操作耗时超过该值时生成日志。 |
log_checkpoints | 否 | on/off,默认值为off | 控制是否在日志中记录检查点(checkpoint)操作的开始和完成。 |
log_connections | 否 | on/off,默认值为off | 控制是否记录客户端连接和断开事件。 |
log_destination | 否 | stderr(默认), csvlog, jsonlog, syslog, eventlog | 指定日志输出的目标 |
log_directory | 否 | log | 指定日志文件的存储目录 |
log_disconnections | 否 | on/off,默认值为off | 控制是否记录客户端断开连接的日志信息(如断开时间、原因)。 |
log_duration | 否 | on/off,默认值为off | 控制是否记录 SQL 语句的执行耗时(从语句开始到结束的总时间)。 |
log_error_verbosity | 否 | terse 仅输出简洁错误信息 default (默认) 包含错误位置和上下文 verbose 输出更详细的调试信息 |
控制错误日志的详细程度。 |
log_executor_stats | 否 | on/off,默认值为off | 控制是否记录查询执行器的统计信息(如扫描行数、索引使用次数、排序耗时等)。 |
log_file_mode | 是 | 0600 | 设置日志文件的权限模式。 |
log_filename | 是 | unvdb-%a.log | 设置日志文件的文件名模式。设置为'unvdb-%a.log',表示以'unvdb-'开头,并包含星期几的日志文件名 |
log_hostname | 否 | on/off,默认值为off | 控制是否在日志中记录客户端的主机名(而非 IP 地址)。 |
log_line_prefix | 否 | %m [%p] %q%u@%d | 设置日志行前缀为%m [%p] %q%u@%d。 |
log_lock_waits | 否 | on/off,默认值为off | 控制是否记录超过 deadlock_timeout 的锁等待事件。 |
log_min_duration_sample | 否 | 默认 -1(禁用),整数(毫秒) | 设置慢查询采样的最小时间阈值。 |
log_min_duration_statement | 否 | 默认 -1(禁用),整数(毫秒) | 设置记录所有语句的最小执行时间。表示超过该时间的SQL语句将被记录到日志中,如此处设置为10000则超过10秒的sql会被记录 |
log_min_error_statement | 否 | debug5 debug4 debug3 debug2 debug1 info notice warning error(默认) log fatal panic (effectively off) |
控制记录 SQL 语句的最小错误级别,所有生成错误语句在或高于该级别时将被记录。 |
log_min_messages | 否 | debug5 debug4 debug3 debug2 debug1 info notice warning error log fatal panic |
控制日志输出的最小消息级别。仅级别大于或等于该值的消息会被写入日志。 |
log_parameter_max_length | 否 | -1:表示不限制参数长度,完整记录所有参数值 0:表示不记录参数值,仅记录参数占位符 |
设置记录 SQL 参数的最大长度。当参数长度超过该值时,会被截断(末尾添加 ...)。 |
log_parameter_max_length_on_error | 否 | 默认 0(不记录) | 设置记录 SQL 参数的最大长度。当参数长度超过该值时,会被截断(末尾添加 ...),但仅在语句执行出错时记录参数。 |
log_parser_stats | 否 | on/off,默认值为off | 控制是否记录 SQL 解析器的统计信息(如解析时间、语法树结构耗时)。 |
log_planner_stats | 否 | on/off,默认值为off | 控制是否记录查询规划器的统计信息(如生成执行计划的时间、索引扫描成本计算等)。 |
log_recovery_conflict_waits | 否 | on/off,默认值为off | 控制是否记录逻辑复制或归档恢复过程中发生的冲突等待事件。 |
log_replication_commands | 否 | on/off,默认值为off | 控制是否记录复制相关命令到日志。 |
log_rotation_age | 否 | 1d | 设置日志文件轮换的时间间隔。当日志文件存在时间超过该值时,会触发轮换(生成新文件);取值 0 时不按时间轮换,仅按大小或手动触发。此处设置为1d,表示每天轮转一次。 |
log_rotation_size | 否 | 0 | 设置日志文件大小的轮换阈值。当文件大小超过该值时,会触发轮换;取值 0 时不按大小轮换,仅按时间或手动触发。 |
log_statement | 否 | none (默认)不记录任何语句 ddl 记录数据定义语句 mod 记录数据修改语句 all 记录所有语句 |
控制记录 SQL 语句的级别。 |
log_statement_sample_rate | 否 | 浮点数(0.0 到 1),默认 1(全部记录) | 设置 SQL 语句的采样率(仅当 log_statement 非 none 时有效)。 |
log_statement_stats | 否 | on/off,默认值为off | 控制是否记录语句级别的统计信息(如执行次数、总耗时、平均耗时等)。 |
log_temp_files | 否 | 整数(字节),默认 -1(不记录) | 设置记录临时文件创建的大小阈值。当临时文件大小超过该值时,会在日志中记录文件路径和大小。 |
log_timezone | 否 | Asia/Shanghai | 设置日志中时间戳的时区。修改后,新日志的时间会按指定时区显示,已存在的日志时间不受影响。 |
log_transaction_sample_rate | 否 | 浮点数(0 到 1.0),默认 0(不记录) | 设置事务级别的采样率,用于记录事务相关统计信息(如提交 / 回滚时间、事务耗时)。 |
log_truncate_on_rotation | 否 | on/off,默认值为on | 在日志轮换期间,删除相同名称的现有日志文件。表示是否在日志轮转时截断当前日志文件。此处设置为on,表示截断日志文件 |
logging_collector | 是 | on/off,默认值为on | 启动一个子进程以捕获标准错误输出或/csvlogs日志文件。表示是否启用日志收集器。此处设置为on,表示启用日志收集器。 |
logical_decoding_work_mem | 否 | 64MB | 设置逻辑解码(如 WAL 解码、复制槽)的工作内存大小。 |
maintenance_io_concurrency | 是 | 10 | 一控制维护操作的并发 I/O 操作数。值为非负整数,0 表示使用系统默认并发。增大该值可提升磁盘密集型维护任务的性能,但需根据存储设备负载调整。 |
maintenance_work_mem | 否 | 64MB | 定维护操作(如 VACUUM、REINDEX)使用的最大工作内存(单位:字节,可带 kB/MB/GB 后缀)。 |
max_connections | 是 | 100 | 限制数据库同时接受的最大客户端连接数。值为正整数,默认为 100。 |
max_files_per_process | 是 | 1000 | 指定每个数据库进程可打开的最大文件描述符数。值为正整数。 |
max_function_args | 是 | 100 | 限制函数定义中允许的最大参数数量。值为正整数,该参数影响函数定义的语法限制,一般无需修改,除非有特殊函数开发需求。 |
max_identifier_length | 是 | 63 | 指定数据库对象(如表名、列名)的最大长度(字符数)。默认值为 63,符合 SQL 标准。修改需谨慎,且可能影响现有对象命名规范。 |
max_index_keys | 是 | 32 | 限制索引定义中允许的最大列数。值为正整数,默认为 32。复合索引的列数不能超过该值,适用于 B-tree、GIN 等索引类型。 |
max_locks_per_transaction | 是 | 64 | 指定每个事务可持有锁的最大数量。值为正整数,默认为 64。若事务需要操作大量数据(如批量更新),可增大该值以避免锁不足的错误。 |
max_logical_replication_workers | 是 | 4 | 制逻辑复制(如逻辑解码、槽复制)的最大工作进程数。值为非负整数,默认为 4。用于流复制或逻辑解码时,需根据复制任务量调整。 |
max_parallel_maintenance_workers | 是 | 2 | 指定维护操作(如 VACUUM、REINDEX)可使用的最大并行工作进程数。值为非负整数,0 表示不使用并行。增大该值可加速大型表的维护,但需考虑 CPU 资源。 |
max_parallel_workers | 是 | 8 | #设置系统支持的最大并行进程数,默认值为8。这个值小于或等于 max_worker_processes。 |
max_parallel_workers_per_gather | 是 | 2 | 设置单个Gather或Gather Merge节点能够启用的最大并行进程数,默认值为2,并行查询(Parallel Query)的并行度受此参数的影响,CREATE INDEX 命令的并行度不受此参数影响。 |
max_pred_locks_per_page | 是 | 2 | 限制每个表页面可存储的谓词锁(Predicate Locks)数量。 |
max_pred_locks_per_relation | 是 | -2 | 设置每个关系的predicate-locked页面和元组的最大数量。 |
max_pred_locks_per_transaction | 是 | 64 | 设置每个事务的predicate-locked最大数量。 |
max_prepared_transactions | 是 | 0 | 设置每个事务的 simultaneously准备事务的最大数量。 |
max_replication_slots | 是 | 10 | 设置复制插槽的最大数量.表示同时允许的最大复制槽数。此处设置为10。 |
max_slot_wal_keep_size | 是 | -1:表示不限制保留的 WAL 大小(单位:字节,可带后缀) | 指定单个复制槽可保留的 WAL 日志最大总量。 |
max_stack_depth | 是 | 2MB | 限制数据库内部函数调用的最大栈深度(单位:KB)。 |
max_standby_archive_delay | 否 | 30s | 指定备用服务器(Standby)在归档模式下等待归档日志的最大时间。 |
max_standby_streaming_delay | 否 | 30s | 指定备用服务器(Standby)在流复制模式下等待主服务器发送 WAL 日志的最大时间。 |
max_sync_workers_per_subscription | 是 | 2 | 指定每个逻辑订阅(Logical Subscription)可使用的最大同步工作进程数。 |
max_wal_senders | 是 | 10 | 限制主服务器可同时运行的 WAL 发送进程数,用于支持复制槽或备用服务器。 |
max_wal_size | 是 | 1GB | 指定 WAL(预写日志)文件的最大总大小(单位:字节,可带后缀)。 |
max_worker_processes | 是 | 8 | 控制后台工作进程的最大数量,包括并行查询、复制、备份等进程。值为非负整数,默认通常为 8。增大该值需考虑系统 CPU 和内存资源。 |
min_dynamic_shared_memory | 是 | 0 | 指定动态共享内存子系统的最小分配大小。用于控制共享内存的动态分配下限,一般无需修改。 |
min_parallel_index_scan_size | 否 | 512kB | 指定索引扫描触发并行查询的最小表大小(单位:页,1 页默认 8KB)。值为正整数,默认通常为 512(约 4MB)。 |
min_parallel_table_scan_size | 否 | 8MB | 指定表扫描触发并行查询的最小表大小(单位:页)。值为正整数,默认通常为 1024(约 8MB) |
min_wal_size | 是 | 80MB | 指定 WAL 文件的最小总大小(单位:字节,可带后缀)。默认值通常为 80MB。用于设置 WAL 空间的下限,确保有足够的日志空间供长时间运行的事务使用。 |
old_snapshot_threshold | 是 | -1 | 指定旧快照(Old Snapshot)的时间阈值(单位:毫秒)。默认值为 -1(禁用)。当设置为非零值时,系统会跟踪超过该时间的快照,用于检测长时间运行的事务可能导致的膨胀问题。 |
parallel_leader_participation | 是 | on/off,默认值为on | 控制并行查询中 leader 进程是否参与实际工作(如扫描数据)。 |
parallel_setup_cost | 否 | 1000 | 优化器评估并行查询启动成本的系数。值越高,越倾向于串行执行;值越低,越可能选择并行。 |
parallel_tuple_cost | 否 | 0.1 | 化器评估并行查询处理每行数据成本的系数。值越高,越倾向于串行执行;值越低,越可能选择并行。 |
password_encryption | 否 | md5 | 指定存储用户密码时的加密算法。可选值:md5(兼容性但不安全)、scram-sha-256(推荐)。 |
plan_cache_mode | 否 | auto (默认) 自动选择 force_generic_plan 强制使用通用计划 force_custom_plan 强制为每个查询生成特定计划 |
控制查询计划缓存策略。 |
port | 是 | 5678 | 设置TCP端口以服务器监听。 |
post_auth_delay | 否 | 时间单位(毫秒),默认 0 | 认证成功后,服务器等待客户端发送首个查询的超时时间。 |
pre_auth_delay | 否 | 时间单位(毫秒),默认 0 | 认证失败后,服务器延迟响应的时间。 |
primary_conninfo | 是 | 字符串,默认空 | 备库连接主库的连接字符串。 |
primary_slot_name | 是 | 字符串,默认空 | 备库连接主库时使用的复制槽名称。 |
promote_trigger_file | 否 | 字符串,默认空 | 指定一个文件路径,当该文件存在时,触发备库提升为主库。 |
quote_all_identifiers | 否 | on/off,默认值为off | 控制在自动生成的 SQL 中是否对所有标识符加双引号。 |
random_page_cost | 否 | 默认 4(机械硬盘) | 优化器评估随机磁盘 I/O 成本的系数。 |
recovery_end_command | 是 | 字符串,默认空 | 在恢复完成后执行的 shell 命令 |
recovery_init_sync_method | 是 | fsync (默认), syncfs | 控制初始同步的方法。 |
recovery_min_apply_delay | 否 | 时间单位(毫秒),默认 0 | 备库应用 WAL 日志的最小延迟时间。用于创建延迟备份,防止误操作导致的数据丢失。 |
recovery_target | 是 | immediate (默认) | 指定恢复目标。可选 immediate(恢复到最新状态)、time(指定时间点)、lsn(指定日志位置)等。 |
recovery_target_action | 是 | pause | 恢复完成后的操作。可选 promote(提升为主库)、pause(暂停恢复)、shutdown(关闭服务器)。 |
recovery_target_inclusive | 是 | on/off,默认值为on | 控制恢复目标是否包含指定的时间点 / LSN。 |
recovery_target_lsn | 是 | 字符串,默认空 | 指定恢复的目标 LSN(日志序列号),格式如 16/B374D848。 |
recovery_target_name | 是 | 字符串,默认空 | 指定恢复的目标命名恢复点。 |
recovery_target_time | 是 | 字符串,默认空 | 指定恢复的目标时间点(如 '2023-01-01 12:00:00')。 |
recovery_target_timeline | 是 | latest | 指定恢复的目标时间线。latest 表示最新时间线,也可指定具体时间线 ID。 |
recovery_target_xid | 是 | 字符串,默认空 | 指定恢复的目标事务 ID。 |
remove_temp_files_after_crash | 否 | on/off,默认值为on | 控制崩溃恢复后是否自动删除临时文件(如排序文件)。 |
restart_after_crash | 是 | on/off,默认值为on | 控制服务器在崩溃后是否自动重启。 |
restore_command | 是 | 字符串,默认空 | 从归档恢复 WAL 日志的命令(如 'cp /archive/%f %p')。用于基于时间点恢复(PITR)。 |
row_security | 否 | on/off,默认值为on | 控制行级安全策略(RLS)是否生效。 |
search_path | 否 | "$user", public | 指定查询时搜索的模式(schema)顺序。 |
segment_size | 否 | 1GB | 指定表和索引的段文件大小。较大的值可减少文件数量,但可能导致单个文件过大。修改后仅影响新建的表和索引。 |
seq_page_cost | 是 | 1 | 用于查询规划器计算顺序扫描(Sequential Scan)的页面成本权重。值越小,规划器越倾向于选择顺序扫描;值越大,越倾向于选择索引扫描。该参数影响查询执行计划的选择,常见调整场景为存储设备速度较慢时(如机械硬盘)可适当调大,SSD 则可适当调小。 |
server_encoding | 否 | UTF8 | 指定数据库存储数据的默认字符编码,决定数据库能处理的字符集范围。 |
server_version | 否 | 22.4 | 显示服务器版本。 |
server_version_num | 否 | 220004 | 显示服务器版本作为整数。 |
session_preload_libraries | 是 | 默认值为空字符串,可设置为逗号分隔的共享库路径 | 指定会话启动时自动加载的共享库,用于扩展数据库功能。 |
session_replication_role | 否 | replica 表示会话为复制节点,会接收并应用主库复制数据 origin (默认)表示会话为复制源(主库) local 表示会话不参与复制,执行的操作不会被复制到从库。 |
控制当前会话是否参与复制(Replication)操作。 |
shared_buffers | 是 | 128MB | 指定数据库用于缓存数据页的共享内存大小,是影响数据库性能的关键参数。建议是物理内存地30%以上 |
shared_memory_type | 是 | sysv、windows、mmap (默认) | 指定使用的共享内存实现方式,用于分配 shared_buffers 等共享内存区域。 |
shared_preload_libraries | 是 | ud_cron,pg_stat_statements,等等 | 指定数据库服务器启动时全局加载的共享库,作用于所有会话,用于加载需要全局生效的扩展。 |
ssl | 是 | on/off,默认值为off | 控制是否启用 SSL 加密连接,用于保护客户端与数据库之间的通信安全。 |
ssl_ca_file | 否 | 默认值为空字符串,可设置为 CA 证书文件的路径 | 指定客户端连接时使用的 CA 证书文件路径,用于验证客户端或服务器证书的合法性。 |
ssl_cert_file | 否 | 默认值为server.crt,可设置为服务器证书文件的路径 | 指定服务器的 SSL 证书文件路径,用于向客户端证明服务器的身份。 |
ssl_ciphers | 否 | HIGH:MEDIUM:+3DES:!aNULL | 指定 SSL 连接支持的密码套件,用于控制加密算法的强度和类型。 |
ssl_crl_dir | 否 | 默认值为空字符串,可设置为证书吊销列表 | 指定证书吊销列表的目录路径,用于验证客户端证书是否已被吊销。 |
ssl_crl_file | 否 | 默认值为空字符串,可设置为证书吊销列表(CRL)文件的路径 | 指定单个证书吊销列表文件的路径,作用与 ssl_crl_dir 类似,但仅读取单个 CRL 文件。 |
ssl_dh_params_file | 否 | 默认值为空字符串,可设置为 Diffie-Hellman 参数文件的路径 | 指定 Diffie-Hellman 密钥交换参数文件,用于增强 SSL 连接的安全性。 |
ssl_ecdh_curve | 否 | 默认值为prime256v1,可设置为椭圆曲线名称 | 指定椭圆曲线 Diffie-Hellman(ECDH)算法使用的曲线,用于 SSL 连接的密钥交换。 |
ssl_key_file | 否 | 默认值为server.key,可设置为服务器私钥文件的路径 | 指定服务器的 SSL 私钥文件路径,与 ssl_cert_file 配合使用,用于服务器身份验证。 |
ssl_library | 是 | 默认值为OpenSSL,可设置为 OpenSSL 库的路径 | 指定 PostgreSQL 用于 SSL 连接的 OpenSSL 库路径,仅在系统自动检测失败时需要手动设置。 |
ssl_max_protocol_version | 否 | 默认值为空字符串 | 指定 SSL 连接支持的最高协议版本,用于禁用不安全的旧协议。 |
ssl_min_protocol_version | 否 | 默认值为TLSv1.2 | 指定 SSL 连接支持的最低协议版本,用于禁用不安全的旧协议。 |
ssl_passphrase_command | 是 | 默认值为空字符串,可设置为获取私钥密码的命令 | 指定一个命令,用于在服务器启动时获取 SSL 私钥的密码(若私钥加密)。 |
ssl_passphrase_command_supports_reload | 否 | on/off,默认值为off | 指定 ssl_passphrase_command 命令是否支持在配置重新加载时重新执行。 |
ssl_prefer_server_ciphers | 否 | on/off,默认值为on | 控制 SSL 连接中服务器是否优先使用自己的密码套件列表。 |
standard_conforming_strings | 否 | on/off,默认值为on | 控制字符串字面量的解析方式。on 时,字符串中的反斜杠(\ )会被视为普通字符,需用双反斜杠(\\ )转义;off 时(兼容旧格式),反斜杠作为转义符(如 \n 表示换行)。 |
statement_timeout | 否 | 默认值为 0 (无超时),可设置为正整数,单位为毫秒 |
指定单个 SQL 语句的最大执行时间,超时后自动终止语句并抛出错误。 |
stats_temp_directory | 是 | 默认值为数据库数据目录下的 ud_stat_tmp 目录,可设置为其他路径 | 指定存储统计信息临时文件的目录,用于保存查询规划器使用的统计数据 |
superuser_reserved_connections | 是 | 默认值为 3,取值范围为 0 到 max_connections 的整数 | 指定为超级用户保留的最大连接数,确保超级用户在普通连接数已满时仍能连接数据库 |
synchronize_seqscans | 否 | on/off,默认值为on | 控制顺序扫描(Sequential Scan)时是否使用同步 I/O。on 时,顺序扫描会等待数据完全读取到缓冲区后再继续,确保数据一致性;off 时,可能使用异步 I/O 提高性能,但在异常断电时可能导致数据不一致。 |
synchronous_commit | 否 | 默认值为 on,可设置为 on、off、remote_apply、remote_write、local(取决于版本)。 | 控制事务提交时的同步级别,影响数据安全性和性能。 |
synchronous_standby_names | 否 | 字符串,格式为 '[FIRST] n (standby_name1, standby_name2, ...)' 或 ' '(禁用同步复制) | 指定同步复制模式下的同步备库名称列表,确保事务提交前 WAL 已传输到这些备库。 |
syslog_facility | 是 | local0 | 设置 syslog 日志的设施(facility),用于分类日志消息。 |
syslog_ident | 是 | 默认postgres | 设置 syslog 日志的标识符前缀,用于在 syslog 中识别 PostgreSQL 日志。 |
syslog_sequence_numbers | 是 | on/off,默认值为on | 控制是否在 syslog 日志中添加序列号,便于追踪消息顺序。 |
syslog_split_messages | 是 | on/off,默认值为on | 控制超长日志消息是否分割为多行输出。 |
tcp_keepalives_count | 否 | 默认值为9 | 设置 TCP 连接在被标记为断开前允许的未响应探测包数量。 |
tcp_keepalives_idle | 否 | 7200 | 设置 TCP 连接在发送保活探测包前的空闲时间(秒)。 |
tcp_keepalives_interval | 否 | 75 | 设置连续两次 TCP 保活探测包之间的间隔时间(秒) |
tcp_user_timeout | 否 | 0 | 设置 TCP 连接在超时前允许的最大未确认数据时间(毫秒) |
temp_buffers | 否 | 内存单位,默认 8MB。 | 设置每个会话的临时缓冲区大小,用于存储临时表和排序结果。 |
temp_file_limit | 否 | 默认 -1(无限制) | 限制单个会话创建的临时文件总大小,超出时会导致查询失败。 |
temp_tablespaces | 否 | 默认 ' ' | 指定临时表和排序操作使用的表空间列表。 |
TimeZone | 否 | Asia/Shanghai | 时区名称(如 UTC、Asia/Shanghai),默认由操作系统决定。 |
timezone_abbreviations | 否 | 预定义字典名称(如 'Default'、'Australia'),默认 'Default'。 | 指定时区缩写字典,用于解析包含时区缩写的时间字符串。 |
trace_notify | 否 | on/off,默认值为off | 控制是否记录 NOTIFY/LISTEN 消息的详细日志,用于调试。 |
trace_recovery_messages | 否 | 日志级别(如 'log'、'verbose'),默认 'log' | 控制在恢复模式(如从库)下是否记录详细的恢复过程日志。 |
trace_sort | 否 | on/off,默认值为off | 控制是否记录排序操作的详细日志,用于性能调优。 |
track_activities | 否 | on/off,默认值为on | 控制是否收集当前活动查询的状态信息,影响 pg_stat_activity 视图。 |
track_activity_query_size | 否 | 1kB | 设置 pg_stat_activity 中存储的查询文本最大长度(字节)。 |
track_commit_timestamp | 是 | on/off,默认值为off | 控制是否记录事务提交的时间戳。 |
track_counts | 否 | on/off,默认值为on | 控制是否收集数据库统计信息(如行数、索引使用),影响查询优化器。 |
track_functions | 否 | 'none'、'pl'、'all',默认 'none'。 | 控制是否收集函数调用的性能统计信息。 |
track_io_timing | 否 | on/off,默认值为off | 控制是否收集 I/O 操作的耗时统计信息,用于性能分析。 |
track_wal_io_timing | 否 | on/off,默认值为off | 控制是否收集 WAL(预写日志)I/O 操作的耗时统计信息。 |
transaction_deferrable | 否 | on/off,默认值为off | 控制事务是否可延迟执行(仅适用于可串行化隔离级别)。 |
transaction_isolation | 否 | 'read uncommitted'、'read committed'、'repeatable read'、'serializable',默认 'read committed' | 设置事务的隔离级别,控制并发事务间的可见性。 |
transaction_read_only | 否 | on/off,默认值为off | 控制事务是否为只读模式(禁止写入操作)。 |
transform_null_equals | 否 | on/off,默认值为off | 将 "expr=NULL" 视为 "expr IS NULL" |
unix_socket_directories | 是 | /tmp | 指定 Unix 域套接字文件的存储目录,用于本地连接。 |
unix_socket_group | 是 | 默认空 | 指定 Unix 域套接字文件的所属组,用于权限控制。 |
unix_socket_permissions | 是 | 默认值为 0777(八进制),表示 Unix 套接字文件的权限。 | 控制 PostgreSQL 服务器 Unix 套接字文件的访问权限。值为八进制数,用于设置文件所有者、组和其他用户的读写执行权限。 |
update_process_title | 否 | on/off,默认值为on | 控制是否在进程标题中显示当前执行的 SQL 语句或连接信息。 |
vacuum_cost_delay | 否 | 默认值为 0(毫秒) | 控制 VACUUM 操作中每次 “成本消耗” 后的延迟时间,用于减轻 VACUUM 对系统性能的影响。 |
vacuum_cost_limit | 否 | 默认值为 200 | 设置 VACUUM 操作的 “成本上限”,用于控制 VACUUM 的资源消耗。每次处理页面时,根据页面类型累计成本,达到上限时会触发延迟(由vacuum_cost_delay控制)。 |
vacuum_cost_page_dirty | 否 | 默认值为 20 | 定义处理脏页(已修改但未写入磁盘的页面)时的 VACUUM 成本值。该值越高,VACUUM 处理脏页时累计成本越快,触发延迟的频率越高。 |
vacuum_cost_page_hit | 否 | 默认值为 1 | 定义处理缓存中命中的页面时的 VACUUM 成本值。缓存命中的页面处理成本较低,因此默认值较小。 |
vacuum_cost_page_miss | 否 | 默认值为2 | 定义处理未在缓存中命中(需从磁盘读取)的页面时的 VACUUM 成本值。磁盘读取操作成本较高,因此默认值大于vacuum_cost_page_hit。 |
vacuum_defer_cleanup_age | 否 | 默认值为 0 | 设置元组(行)在被标记为可删除后,延迟清理的最小事务数。用于避免频繁清理,减少 VACUUM 开销。值为非负整数,0表示不延迟。 |
vacuum_failsafe_age | 否 | 默认值为1600000000(16 亿) | 设置 VACUUM 的安全阈值,当表的年龄(事务数)超过该值时,强制触发 VACUUM,防止事务 ID wraparound(溢出)导致数据不可用。 |
vacuum_freeze_min_age | 否 | 默认值为50000000(5千万) | 设置元组被强制冻结(标记为可删除)的最小事务年龄。当元组的事务 ID 与当前事务 ID 的差值超过该值时,会在 VACUUM 时被冻结,防止事务 ID wraparound。取值为正整数,需小于vacuum_freeze_table_age。 |
vacuum_freeze_table_age | 否 | 默认值为150000000(1.5亿) | 设置表被强制进行 VACUUM 冻结的最大事务年龄。当表的事务数超过该值时,系统会强制触发 VACUUM,避免事务 ID wraparound 导致数据损坏。 |
vacuum_multixact_failsafe_age | 否 | 默认值为1600000000(16亿) | 类似vacuum_failsafe_age,但针对多事务(multixact)场景,防止多事务 ID wraparound。当多事务 ID 超过该值时,强制触发 VACUUM 清理。 |
vacuum_multixact_freeze_min_age | 否 | 默认值为5000000(5百万) | 设置多事务元组被强制冻结的最小事务年龄,用于避免多事务 ID wraparound。取值为正整数,需小于vacuum_multixact_freeze_table_age。 |
vacuum_multixact_freeze_table_age | 否 | 默认值为150000000(1.5亿) | 设置表的多事务 ID 强制冻结的最大年龄,防止多事务 ID 溢出导致数据不一致。取值为正整数,需大于vacuum_multixact_freeze_min_age。 |
wal_block_size | 是 | 默认值为 8192(字节,即 8KB)。 | 设置 WAL(预写日志)块的大小,需与数据库页面大小一致(通常为 8KB)。该参数决定 WAL 文件的物理结构,修改后会影响 WAL 的写入和复制。取值必须为 2 的幂,且需与block_size参数一致(如 8192、16384 等)。 |
wal_buffers | 是 | 4MB | 设置 WAL 缓冲区的大小,用于缓存待写入磁盘的 WAL 数据,提高写入性能。值可为字节数(如4MB)或百分比(如10%),-1表示自动调整。增大该值可减少磁盘 IO,但会消耗更多内存。 |
wal_compression | 是 | on/off,默认值为off | 控制是否对 WAL 日志进行压缩,以减少 WAL 文件大小和流复制的数据量。 |
wal_consistency_checking | 否 | full表示严格检查,partial表示部分检查,off表示关闭检查 | 设置 WAL 日志的一致性检查级别,确保 WAL 数据可用于故障恢复。 |
wal_init_zero | 否 | on/off,默认值为on | 控制 WAL 文件创建时是否用零填充未使用的部分。 |
wal_keep_size | 否 | 默认值为 0 | 设置保留的 WAL 文件最小总量(MB),用于流复制或点恢复时确保有足够的历史 WAL 日志。 |
wal_level | 是 | minimal仅记录必要信息(不支持流复制) replica (默认) 记录支持流复制的信息 logical记录支持逻辑复制和 PITR 的详细信息。 |
控制 WAL 日志的详细程度。 |
wal_log_hints | 是 | on/off,默认值为off | 控制是否在 WAL 中记录页面修改的提示信息,用于支持块级恢复。 |
wal_receiver_create_temp_slot | 是 | on/off,默认值为off | 控制备用服务器(standby)在接收 WAL 时是否自动创建临时复制槽。 |
wal_receiver_status_interval | 否 | 默认值为 10(秒) | 设置备用服务器向主服务器报告复制状态的时间间隔。值为正整数(秒),用于主服务器监控备用服务器的同步状态。 |
wal_receiver_timeout | 否 | 默认值为1min | 设置备用服务器接收 WAL 的超时时间。若主服务器在该时间内未收到备用服务器的响应,会认为复制连接中断并尝试重新连接。 |
wal_recycle | 否 | on/off,默认值为on | 控制是否重用已关闭的 WAL 文件(通过覆盖写入),以减少文件系统中的 WAL 文件数量。 |
wal_retrieve_retry_interval | 否 | 默认值为5s | 设置备用服务器在获取 WAL 失败时的重试间隔。当主服务器暂时无法提供 WAL 时,备用服务器按该间隔重试。 |
wal_segment_size | 是 | 默认值为 16MB | 设置单个 WAL 文件的大小。WAL 文件按该大小分段,达到上限后自动切换。值必须为 1MB 的倍数(如 8MB、16MB、32MB),增大该值可减少 WAL 切换频率,但会增加故障恢复时的重做时间。 |
wal_sender_timeout | 否 | 默认值为1min | 设置主服务器向备用服务器发送 WAL 的超时时间。若备用服务器在该时间内未确认接收,主服务器会断开连接并尝试重新连接。 |
wal_skip_threshold | 否 | 默认值为2MB | 设置 WAL 中可跳过的连续相同数据块的最小大小(字节),用于优化 WAL 传输。当连续数据块相同时,备用服务器可直接跳过读取,提高复制效率。 |
wal_sync_method | 是 | fsync 确保数据完全写入磁盘,安全性最高但性能开销大 fdatasync (默认) 只同步数据而非元数据,性能更好但安全性略低;其他值为特定系统优化选项。 |
控制 WAL(预写日志)数据写入磁盘的同步方式。 |
wal_writer_delay | 否 | 单位为毫秒,默认值为 200ms | 控制 WAL 写入器(wal writer)主动刷新 WAL 缓冲区的时间间隔。 |
wal_writer_flush_after | 否 | 默认值为1MB,设置为 0 时禁用该机制 | 当 WAL 缓冲区积累的数据量达到该值时,WAL 写入器会主动触发一次刷新到磁盘。用于在日志数据量较大时提前刷新,避免缓冲区积压过多导致写入延迟。 |
work_mem | 否 | 默认值为4MB | 指定单个排序操作、哈希连接、聚合操作等可使用的最大内存量。 |
xmlbinary | 是 | base64 | 控制 XML 数据中二进制内容的编码方式。 |
xmloption | 否 | 取值为 document或 content(默认) | 控制 XML 输出的格式选项。 |
zero_damaged_pages | 是 | on/off,默认值为off | 启用后,在检测到数据页损坏时会尝试将其零填充,以防止损坏扩散,并可能允许数据库继续运行。禁用时,遇到损坏页会直接报错。 |
pg_stat_statements 模块配置
更多模块配置参考 标准插件
pg_stat_statements 模块用于跟踪sql执行信息
shared_preload_libraries = ‘pg_stat_statements’ #共享预加载库,表示要加载的共享库。此处设置为’pg_stat_statements’,表示加载pg_stat_statements模块。
pg_stat_statements.max = 1000 #跟踪的语句的最大数目,表示pg_stat_statements模块跟踪的最大语句数。此处设置为1000。
pg_stat_statements.track = all #哪些语句会被该模块计数,默认是top跟踪顶层语句(那些直接由客户端发出的语句);all跟踪嵌套的语句(例如在函数中调用的语句)
pg_stat_statements.track_utility = on #是否会跟踪工具命令,工具命令是除了SELECT、INSERT、 UPDATE和DELETE之外所有的其他命令。默认值是on。
pg_stat_statements.save = on #是否在服务器关闭之后还保存语句统计信息。如果被设置为off,那么关闭后不保存统计信息并且在服务器启动时也不会重新载入统计信息。默认值为on 表示保存统计信息。
#该模块要求与pg_stat_statements.max成比例的额外共享内存。注意只要该模块被载入就会消耗这么多的内存,即便pg_stat_statements.track被设置为none。
#添加上述配置后重启服务,然后执行 CREATE EXTENSION pg_stat_statements; 启动模块
huge_pages 解释
huge_pages=on
#开启大页。默认是off,可选值有 on,off,try。try尝试使用大页失败后使用普通内存页面。
比如物理内存是16GB,准备分配12GB给数据库,则至少要分配14GB大页空间:
cat /proc/meminfo |grep -i Hugepagesize
查看当前页大小,默认是 2048 kB
hugepages应该是14GB/2MB=7168
sysctl -w vm.nr_hugepages=7168
并行参数解释
max_worker_processes=8 #设置数据库的最大后台进程数,默认值为8。数据库允许的最大后台进程数,并行进程属于后台进程的一种;
max_parallel_workers=8 #设置系统支持的最大并行进程数,默认值为8。这个值小于或等于 max_worker_processes。
max_parallel_maintenance_workers=2 #参数设置维护命令(例如 CREATE INDEX) 命令允许的最大并行进程数,默认值为2。并行创建索引仅支持 B-tree 索引
max_parallel_workers_per_gather=2 #设置单个Gather或Gather Merge节点能够启用的最大并行进程数,默认值为2,并行查询(Parallel Query)的并行度受此参数的影响,CREATE INDEX 命令的并行度不受此参数影响。
设置会话级并行参数
ALTER TABLE tablename SET (parallel_workers=0);–禁止指定表并行度。 ALTER TABLE tablename RESET(parallel_workers); –恢复表并行度
max_parallel_workers_per_gather + max_parallel_maintenance_workers 值应小于或等于 max_parallel_workers
对于查询时间少的请求并不会使用并行 ,在负载重的oltp系统上,建议关闭并行