配置文件
登录授权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 | 否 | off | 允许修改系统表的结构。 |
application_name | 否 | Navicat | 将连接的应用程序的名称在统计和日志中报告。 |
archive_cleanup_command | 否 | 设置将在每个重启点执行的shell命令。 | |
archive_command | 否 | DATE=date +%Y%m%d ; DIR="/data/backup/ud_rman_backup/walbackup/"; (test -d $DIR || mkdir -p $DIR) && cp %p $DIR/%f |
设置调用归档WAL文件的shell命令,如使用gz压缩,会占用较多CPU。 |
archive_mode | 是 | on | 允许使用archive_command归档WAL文件。可选值有always,on,off 当设置为always时做人从实例也归档主实例发送来的WAL日志 |
archive_timeout | 否 | 0 | 如果新的文件在N秒内未开始,则强制生成并切换到下一个WAL文件。仅当有更新操作时此值才会触发。如没有任何写操作,此值不会触发。如不设置archive_timeout,则执行 select pg_switch_wal 或 单个wal写满16M时 会自动归档。 |
array_nulls | 否 | on | 允许在数组中输入NULL元素。 |
authentication_timeout | 否 | 1min | 设置完成客户端身份验证的最大允许时间。 |
autovacuum | 否 | on | 启动自动真空子进程。 |
autovacuum_analyze_scale_factor | 否 | 0.1 | 在分析之前,作为reltuples的一部分插入、更新或删除的元组数量。 |
autovacuum_analyze_threshold | 否 | 50 | 分析之前插入、更新或删除的元组的最小数量。 |
autovacuum_freeze_max_age | 是 | 200000000 | 自动清理表以防止事务ID回绕的年龄。(单位毫秒) |
autovacuum_max_workers | 是 | 3 | 设置同时运行的自动清理工作进程的最大数量。 |
autovacuum_multixact_freeze_max_age | 是 | 400000000 | 多事务自动清理表以防止多事务回绕的年龄。(单位毫秒) |
autovacuum_naptime | 否 | 1min | 自动真空运行之间的睡眠时间。 |
autovacuum_vacuum_cost_delay | 否 | 2ms | 真空成本延迟(毫秒),用于自动真空。 |
autovacuum_vacuum_cost_limit | 否 | -1 | 休眠前自动清理表时的成本控制-1为没有限制 |
autovacuum_vacuum_insert_scale_factor | 否 | 0.2 | 在执行vacuum操作之前插入元组的数量与reltuples的比值。 |
autovacuum_vacuum_insert_threshold | 否 | 1000 | 执行自动清理之前,需要插入的元组数量。如果设置为 -1,则禁用插入清理。 |
autovacuum_vacuum_scale_factor | 否 | 0.2 | 参数用于设置在执行自动清理之前,需要更新或删除的元组数量占 reltuples 的比例。当这个值达到指定的阈值时,unvdb将开始执行清理操作。 |
autovacuum_vacuum_threshold | 否 | 50 | 参数用于设置在执行自动清理之前,需要更新或删除的元组数量的最小值。当这个值达到指定的阈值时,unvdb 将开始执行清理操作。 |
autovacuum_work_mem | 否 | -1 | 参数用于设置每个 autovacuum worker 进程使用的最大内存。当设置为-1时,表示使用系统默认值。 |
backend_flush_after | 否 | 0 | 参数用于设置在执行写入操作后,需要将之前执行的写入操作刷新到磁盘上的页面数量。当设置为0时,表示每次写入操作都会立即刷新到磁盘上。 |
backslash_quote | 否 | safe_encoding | 是否允许在字符串字面值中使用“ \ ” |
backtrace_functions | 否 | 用于记录这些函数中的错误回溯。 | |
bgwriter_delay | 否 | 200ms | 参数用于设置后台写入器在两次写操作之间休眠的时间。这个参数的默认值是10毫秒(100ms)。 |
bgwriter_flush_after | 否 | 512kB | 参数,用于控制后台写进程(Background Writer)在缓冲区达到512kB时,后台写进程会将缓存中的数据刷新到磁盘上。 |
bgwriter_lru_maxpages | 否 | 100 | 参数用于控制后台写进程在每次刷新缓存时最多处理多少个最近最少使用(LRU)页面。这里的100表示后台写进程在每次刷新缓存时最多处理100个LRU页面。 |
bgwriter_lru_multiplier | 否 | 2 | 参数,用于控制后台写进程在每次刷新缓存时释放多少个LRU页面。这里的2表示后台写进程在每次刷新缓存时释放平均缓冲使用量的2倍的LRU页面。 |
block_size | 否 | 8192 | 参数用于显示磁盘块的大小。这里的8192表示磁盘块的大小为8KB。 |
bonjour | 是 | off | 参数用于控制是否通过Bonjour协议来广播服务器信息。这里的"Enables advertising the server via Bonjour"表示启用该选项后,服务器会通过Bonjour协议来广播自己的信息。 |
bonjour_name | 是 | 参数用于设置Bonjour服务的名称。这里的"Sets the Bonjour service name"表示该选项可以设置服务器的Bonjour服务名称。 | |
bytea_output | 否 | hex | 参数用于设置bytea 类型的输出格式。这里的"Sets the output format for bytea"表示该选项可以设置bytea 类型的输出格式。 |
check_function_bodies | 否 | on | 在创建函数(CREATE FUNCTION)和存储过程(CREATE PROCEDURE)时,是否启用pg_check_function_bodies检查函数体。 |
checkpoint_completion_target | 否 | 0.9 | 参数用于设置在检查点过程中刷新脏缓冲区所花费的时间占检查点间隔的比例。这个参数的默认值为 0.9,表示在检查点过程中,有 90% 的时间用于刷新脏缓冲区。 |
checkpoint_flush_after | 否 | 256kB | 执行写操作后,将之前的操作刷新到磁盘的页面数为 256 KB。系统会将之前的操作缓存在内存中,直到达到 256 KB大小后一次性将它们写入磁盘。 |
checkpoint_timeout | 否 | 5min | 参数用于设置自动 WAL(Write-Ahead Logging)检查点之间的最大时间。 |
checkpoint_warning | 否 | 30s | 参数用于设置检查点段填充频率超过此值时发出警告。 |
client_connection_check_interval | 否 | 0 | 参数用于设置在运行查询时检查断开连接的时间间隔。 |
client_encoding | 否 | UNICODE | 参数用于设置客户端的字符集编码。 |
client_min_messages | 否 | notice | 参数用于设置发送给客户端的消息级别。 |
cluster_name | 是 | 参数用于设置集群的名称,该名称将包含在进程标题中。 | |
commit_delay | 否 | 0 | 参数用于设置事务提交和将 WAL(Write-Ahead Logging)刷新到磁盘之间的延迟时间,单位为微秒。 |
commit_siblings | 否 | 5 | 参数用于设置在执行 commit_delay 之前,允许并发打开的最小事务数。 |
compute_query_id | 否 | auto | 自动计算查询标识符的函数。 |
config_file | 是 | /data/udb/unvdbsvr.conf | 服务器的主要配置文件存储位置。 |
constraint_exclusion | 否 | partition | 使用查询计划时考虑使用约束来优化查询。 |
cpu_index_tuple_cost | 否 | 0.005 | 参数是设置查询计划器在索引扫描过程中处理每个索引条目的成本估计值。默认值为0.005,表示每处理一个索引条目需要花费0.005个CPU周期。 |
cpu_operator_cost | 否 | 0.0025 | 参数是设置查询计划器在处理每个操作符或函数调用时的成本估计值。默认值为0.0025,表示每处理一个操作符或函数调用需要花费0.0025个CPU周期。 |
cpu_tuple_cost | 否 | 0.01 | 参数是设置查询计划器在处理每个元组(行)时的成本估计值。默认值为0.01,表示每处理一个元组需要花费0.01个CPU周期。 |
cron | 否.database_name | unvdb | ud_cron元数据存储在unvdb数据库中。 |
cron | 否.enable_superuser_jobs | on | 允许以超级用户的身份调度作业 |
cron | 否.host | localhost | 连接到unvdb的主机名。 |
cron | 否.log_min_messages | warning | log_min_messages 用于设置 launcher bgworker 的日志最小消息级别。 |
cron | 否.log_run | on | 表示将所有作业运行记录到 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 的行数据估计,即该行数据的占比为0.1。 |
data_checksums | 否 | off | 表示此集群是否关闭了数据校验和功能。 |
data_directory | 是 | /data/udb | 表示设置服务器数据目录 |
data_directory_mode | 否 | 0700 | 表示显示数据目录的模式。 |
data_sync_retry | 是 | off | 表示在同步数据文件失败后是否继续运行 |
DateStyle | 否 | ISO, YMD | 设置日期和时间值的显示格式。 |
db_user_namespace | 否 | off | 启用每个数据库用户名称。 |
deadlock_timeout | 否 | 1s | 设置在检查死锁之前等待锁定的时间。 |
debug_assertions | 否 | off | 显示正在运行的服务器是否启用了断言检查。 |
debug_discard_caches | 否 | 0 | 为调试目的积极地刷新系统缓存 |
debug_pretty_print | 否 | on | 在解析和规划树显示时进行缩进。 |
debug_print_parse | 否 | off | 记录每个查询的解析树。 |
debug_print_plan | 否 | off | 记录每个查询的执行计划。 |
debug_print_rewritten | 否 | off | 记录每个查询的重写解析树。 |
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 | 设置可压缩值的默认压缩方法。 |
default_transaction_deferrable | 否 | off | 设置新事务的默认可延迟状态。 |
default_transaction_isolation | 否 | read committed | 设置每个新事务的事务隔离级别。 |
default_transaction_read_only | 否 | off | 设置新事务的默认只读状态。 |
dynamic_library_path | 否 | $libdir | 设置动态加载模块的路径。 |
dynamic_shared_memory_type | 是 | posix | 选择使用的动态共享内存实现。 |
effective_cache_size | 否 | 4GB | 设置规划器对数据缓存总大小的假设。 |
effective_io_concurrency | 否 | 1 | 表示磁盘子系统可以高效处理的并发请求数量。 |
enable_async_append | 否 | on | 启用规划器的异步追加计划使用。 |
enable_bitmapscan | 否 | on | 启用规划器的位图扫描计划使用 |
enable_gathermerge | 否 | on | 启用规划器的收集合并计划使用。 |
enable_hashagg | 否 | on | 启用规划器的哈希聚合计划使用。 |
enable_hashjoin | 否 | on | 启用规划器的哈希连接计划使用。 |
enable_incremental_sort | 否 | on | 启用规划器的增量排序步骤使用。 |
enable_indexonlyscan | 否 | on | 启用规划器的索引仅扫描计划使用。 |
enable_indexscan | 否 | on | 启用规划器的索引扫描计划使用。 |
enable_material | 否 | on | 启用规划器的物化使用。 |
enable_memoize | 否 | on | 启用规划器的备忘录使用 |
enable_mergejoin | 否 | on | 启用规划器的合并连接计划使用。 |
enable_nestloop | 否 | on | 启用规划器的嵌套循环连接计划使用 |
enable_parallel_append | 否 | on | 启用规划器的并行追加计划使用。 |
enable_parallel_hash | 否 | on | 启用规划器的并行哈希计划使用。 |
enable_partition_pruning | 否 | on | 启用计划时间和执行时间分区剪枝。 |
enable_partitionwise_aggregate | 否 | off | 启用分区式聚合和分组。 |
enable_partitionwise_join | 否 | off | 启用分区式连接。 |
enable_seqscan | 否 | on | 启用规划器的序列扫描计划使用 |
enable_sort | 否 | on | 启用规划器的显式排序步骤使用。 |
enable_tidscan | 否 | on | 启用规划器的的 TID 扫描计划使用。 |
escape_string_warning | 否 | on | 在普通字符串字面值中发出有关反斜杠转义的警告。 |
event_source | 是 | Unvdb | 事件源Unvdb设置应用程序名称,用于标识在事件日志中unvdb消息. |
exit_on_error | 否 | off | 当错误发生时,终止会话。 |
external_pid_file | 是 | 将外部进程的 PID 写入指定的文件。. | |
extra_float_digits | 否 | 1 | 将浮点值的显示位数设置为 1。 |
force_parallel_mode | 否 | off | 禁用强制并行模式。 |
from_collapse_limit | 否 | 8 | 将FROM-list的大小限制设置为 8 |
fsync | 否 | on | 强制同步更新到磁盘。 |
full_page_writes | 否 | on | 将完整页面写入到 WAL 当第一次修改后,从写缓存中获取。表示是否对每个数据页进行完整的写入。此处设置为on,表示进行全页写入。 |
geqo | 否 | on | 启用遗传查询优化。 |
geqo_effort | 否 | 5 | GEQO是一种用于解决组合优化问题的算法。在GEQO中,effort参数用于设置其他GEQO参数的默认值。 |
geqo_generations | 否 | 0 | 在GEQO中,generations参数表示算法的迭代次数 |
geqo_pool_size | 否 | 0 | 在GEQO中,pool_size参数表示种群中的个体数量。 |
geqo_seed | 否 | 0 | 在GEQO中,seed参数用于随机路径选择的种子 |
geqo_selection_bias | 否 | 2 | 在GEQO中,selection_bias参数表示种群内部的选择压力。 |
geqo_threshold | 否 | 12 | 在GEQO中,threshold参数设置使用GEQO的阈值。 |
gin_fuzzy_search_limit | 否 | 0 | gin_fuzzy_search_limit参数设置GIN进行精确搜索时允许的最大结果数。 |
gin_pending_list_limit | 否 | 4MB | gin_pending_list_limit参数设置GIN索引的待处理列表的最大大小为4MB。 |
hash_mem_multiplier | 否 | 1 | 参数用于设置哈希表的工作内存的倍数。 |
hba_file | 是 | /data/udb/ud_hba.conf | 参数用于设置服务器的"hba"配置文件。 |
hot_standby | 是 | on | 参数用于在恢复期间允许连接和查询,做为从节点时允许执行查询请求 |
hot_standby_feedback | 否 | off | 参数用于允许热备从主服务器获取反馈,以避免查询冲突。 |
huge_page_size | 是 | 0 | 参数用于设置请求的页大小时。 |
huge_pages | 是 | try | 参数用于在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 | 否 | off | 参数用于在校验和失败后继续处理。 |
ignore_invalid_pages | 是 | off | 参数用于在无效页面失败后继续恢复。 |
ignore_system_indexes | 否 | off | 参数用于禁用从系统索引中读取。 |
in_hot_standby | 否 | off | 参数用于显示热备当前是否处于活动状态 |
integer_datetimes | 否 | on | 参数用于显示日期时间是否基于整数。 |
IntervalStyle | 否 | postgres | 设置间隔值的显示格式。 |
jit | 否 | on | 允许JIT编译。 |
jit_above_cost | 否 | 100000 | 如果查询成本超过100000,则执行JIT编译。 |
jit_debugging_support | 否 | off | 关闭JIT调试支持,以便在调试器中注册JIT编译的函数。 |
jit_dump_bitcode | 否 | off | 关闭JIT转储位码,以便将LLVM位码写入以便于进行JIT调试。 |
jit_expressions | 否 | on | 允许对表达式进行JIT编译。 |
jit_inline_above_cost | 否 | 500000 | 如果查询开销较大,则执行JIT内联。 |
jit_optimize_above_cost | 否 | 500000 | 如果查询比较昂贵,则优化JIT编译的函数。 |
jit_profiling_support | 否 | off | 关闭JIT性能分析支持,以便在性能分析器中注册JIT编译的函数。 |
jit_provider | 是 | llvmjit | JIT提供程序。 |
jit_tuple_deforming | 否 | on | 允许JIT编译元组变形。 |
join_collapse_limit | 否 | 8 | 参数用于设置在执行JOIN操作时,FROM列表中的元素数量超过该join_collapse_limit参数用于设置在执行JOIN操作时,FROM列表中的元素数量超过该值时,不再进行扁平化处理 |
krb_caseins_users | 否 | off | 设置Kerberos和GSSAPI用户名是否应该被视为不区分大小写。 |
krb_server_keyfile | 否 | 设置Kerberos服务器密钥文件的位置。 | |
lc_collate | 否 | zh_CN.UTF-8 | 显示排序顺序的区域设置。 |
lc_ctype | 否 | zh_CN.UTF-8 | 显示字符分类和大小写转换区域设置。 |
lc_messages | 否 | zh_CN.UTF-8 | 设置显示消息的语言。不设置则使用操作系统变量 |
lc_monetary | 否 | zh_CN.UTF-8 | 设置格式化货币金额的区域设置。 |
lc_numeric | 否 | zh_CN.UTF-8 | 设置格式化数字的区域设置。 |
lc_time | 否 | zh_CN.UTF-8 | 设置格式化日期和时间值的区域设置。 |
listen_addresses | 是 | * | 设置要监听的主机名或IP地址。'*'代表接受所有地址的连接 |
lo_compat_privileges | 否 | off | 启用大型对象权限检查的向后兼容模式。 |
local_preload_libraries | 否 | 列出每个后端要预加载的非特权共享库。 | |
lock_timeout | 否 | 0 | 设置锁等待的最大允许持续时间。 |
log_autovacuum_min_duration | 否 | -1 | 设置自动清理操作执行时间超过该值时,将记录日志。 |
log_checkpoints | 否 | off | 记录每个检查点。 |
log_connections | 否 | off | 记录每个成功连接。 |
log_destination | 否 | stderr | 设置服务器日志输出的目标。 |
log_directory | 否 | log | 将日志文件的目的地设置为指定的目录。 |
log_disconnections | 否 | off | 记录每个断开连接,包括持续时间。 |
log_duration | 否 | off | 记录每个已完成 SQL语句花费时间 |
log_error_verbosity | 否 | default | 设置日志消息的详细度。 |
log_executor_stats | 否 | off | 记录每个执行器的性能统计 |
log_file_mode | 否 | 0600 | 设置日志文件的文件权限 |
log_filename | 否 | unvdb-%a.log | 设置日志文件的文件名模式。设置为'unvdb-%a.log',表示以'unvdb-'开头,并包含星期几的日志文件名 |
log_hostname | 否 | off | 在连接日志中记录主机名 |
log_line_prefix | 否 | %m [%p] %q%u@%d | 设置日志行前缀为%m [%p] %q%u@%d。 |
log_lock_waits | 否 | off | 记录锁等待日志 |
log_min_duration_sample | 否 | -1 | 设置日志最小执行时间采样率。 |
log_min_duration_statement | 否 | -1 | 设置记录所有语句的最小执行时间。表示超过该时间的SQL语句将被记录到日志中,如此处设置为10000则超过10秒的sql会被记录 |
log_min_error_statement | 否 | error | 设置日志最小错误语句错误原因,所有生成错误语句在或高于该级别时将被记录。 |
log_min_messages | 否 | warning | 设置记录的消息级别。 |
log_parameter_max_length | 否 | -1 | 当记录语句时,将记录的参数值限制为前N个字节 |
log_parameter_max_length_on_error | 否 | 0 | 报告错误时,将记录的参数值限制为前N个字节 |
log_parser_stats | 否 | off | 将解析器性能统计写入服务器日志。 |
log_planner_stats | 否 | off | 将规划器性能统计写入服务器日志 |
log_recovery_conflict_waits | 否 | off | 记录备用恢复冲突等待。 |
log_replication_commands | 否 | off | 记录每个复制命令。 |
log_rotation_age | 否 | 1d | 日志轮转时间,表示日志文件自动轮转的时间间隔。此处设置为1d,表示每天轮转一次 |
log_rotation_size | 否 | 0 | 日志轮转大小,表示日志文件自动轮转的大小阈值。此处设置为0,表示不按大小轮转 |
log_statement | 否 | none | 设置记录的语句类型。ddl 等 |
log_statement_sample_rate | 否 | 1 | 将超过log_min_duration_sample的语句百分比记录。 |
log_statement_stats | 否 | off | 将累积性能统计信息写入服务器日志。 |
log_temp_files | 否 | -1 | 记录使用临时文件的占用超过该数量的千字节 |
log_timezone | 否 | Asia/Shanghai | 设置时区以使用日志消息。 |
log_transaction_sample_rate | 否 | 0 | 设置从中记录所有语句的事务的百分比 |
log_truncate_on_rotation | 否 | on | 在日志轮换期间,删除相同名称的现有日志文件。表示是否在日志轮转时截断当前日志文件。此处设置为on,表示截断日志文件 |
logging_collector | 是 | on | 启动一个子进程以捕获标准错误输出或/csvlogs日志文件。表示是否启用日志收集器。此处设置为on,表示启用日志收集器。 |
logical_decoding_work_mem | 否 | 64MB | 设置最大内存以用于逻辑解码 |
maintenance_io_concurrency | 否 | 10 | 一个有效_io_concurrency变体,用于维护工作。 |
maintenance_work_mem | 否 | 64MB | 设置最大内存以用于维护操作。 |
max_connections | 是 | 100 | 设置最大并发连接数。 |
max_files_per_process | 是 | 1000 | 设置每个服务器进程同时打开文件的最大数量 |
max_function_args | 否 | 100 | 显示每个函数的最大参数数量 |
max_identifier_length | 否 | 63 | 显示每个标识符的最大长度 |
max_index_keys | 否 | 32 | 显示每个索引键的最大数量 |
max_locks_per_transaction | 是 | 64 | 设置每个事务的最大锁数。 |
max_logical_replication_workers | 是 | 4 | 逻辑复制工作进程的最大数量 |
max_parallel_maintenance_workers | 否 | 2 | 设置维护命令(例如 CREATE INDEX) 命令允许的最大并行进程数,默认值为2。并行创建索引仅支持 B-tree 索引 |
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-locked元组的最大数量. |
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最大大小,以便可以由复制插槽预留 |
max_stack_depth | 否 | 2MB | 设置每个线程的堆栈深度,以千字节为单位。. |
max_standby_archive_delay | 否 | 30s | 设置每个线程的最长延迟,以便在取消查询时,当一个热存服务器正在处理归档的WAL数据时,可以继续取消查询 |
max_standby_streaming_delay | 否 | 30s | 设置每个线程的最长延迟,以便在取消查询时,当一个热存服务器正在处理流式WAL数据时,可以继续取消查询 |
max_sync_workers_per_subscription | 否 | 2 | 设置每个订阅的表同步工作线程的最大数量. |
max_wal_senders | 是 | 10 | 设置最大WAL发送者数,表示同时允许的最大WAL发送者数。此处设置为10。 |
max_wal_size | 否 | 1GB | 设置触发检查点的WAL大小. 表示每个WAL日志段的最大大小。此处设置为1GB。 |
max_worker_processes | 是 | 8 | 设置数据库的最大后台进程数,默认值为8。数据库允许的最大后台进程数,并行进程属于后台进程的一种; |
min_dynamic_shared_memory | 是 | 0 | 设置启动时动态共享内存的保留数量. |
min_parallel_index_scan_size | 否 | 512kB | 设置每个并行扫描的最小索引数据数量. |
min_parallel_table_scan_size | 否 | 8MB | 设置每个并行扫描的最小表数据数量 |
min_wal_size | 否 | 80MB | 设置最小尺寸以缩小WAL. 表示每个WAL日志段的最小大小。此处设置为80MB。 |
old_snapshot_threshold | 是 | -1 | 在快照被读取后,页面更改的旧快照的时间. |
parallel_leader_participation | 否 | on | 控制是否进行Gather和Gather合并的子计划运行. |
parallel_setup_cost | 否 | 1000 | 设置规划器的的估计,以便在并行查询中启动 up worker进程 |
parallel_tuple_cost | 否 | 0.1 | 设置规划器的的估计,以便在从worker到leader backend中传递每个元组(row)的成本. |
password_encryption | 否 | md5 | 选择加密算法以加密密码 |
plan_cache_mode | 否 | auto | 控制规划器选择自定义计划或通用计划 |
port | 是 | 5678 | 设置TCP端口以服务器监听。 |
post_auth_delay | 否 | 0 | 等待N秒后在连接启动后进行身份验证. |
pre_auth_delay | 否 | 0 | 等待N秒后在连接启动前进行身份验证. |
primary_conninfo | 否 | 设置连接字符串以连接到主服务器. | |
primary_slot_name | 否 | 设置复制槽的名称以使用连接到发送服务器 | |
promote_trigger_file | 否 | 指定一个文件名,该文件在standby中以恢复结束的冗余. | |
quote_all_identifiers | 否 | off | 当生成SQL片段时,引用所有标识符. |
random_page_cost | 否 | 4 | 设置规划器对非顺序获取磁盘页的成本的估计 |
recovery_end_command | 否 | 设置shell命令,以便在恢复结束时执行 | |
recovery_init_sync_method | 否 | fsync | 设置方法以同步数据目录,以便在崩溃恢复之前进行数据目录的同步 |
recovery_min_apply_delay | 否 | 0 | 设置最小延迟以应用更改,以便在恢复期间进行变化的应用程序 |
recovery_target | 是 | 设置"immediaent"以结束恢复,以便在一致状态达到时立即进行变化 | |
recovery_target_action | 是 | pause | 设置操作以到达恢复目标。 |
recovery_target_inclusive | 是 | on | 设置是否包含或排除事务与恢复目标。 |
recovery_target_lsn | 是 | 设置恢复过程将进行到的预写日志(write-ahead log)的位置 | |
recovery_target_name | 是 | 设置命名恢复点以进行恢复. | |
recovery_target_time | 是 | 设置时间戳以进行恢复. | |
recovery_target_timeline | 是 | latest | 指定时间线以进行恢复. 此处设置为'latest',表示使用最新的时间线。 |
recovery_target_xid | 是 | 设置事务ID以进行恢复。. | |
remove_temp_files_after_crash | 否 | on | 在后端崩溃后删除临时文件 |
restart_after_crash | 否 | on | 在后端崩溃后重新初始化服务器 |
restore_command | 否 | 设置用于检索归档WAL文件的shell命令 | |
row_security | 否 | on | 启用行安全性。 |
search_path | 否 | "$user", public | 设置未限定模式的名称的架构搜索顺序 |
segment_size | 否 | 1GB | 显示每个磁盘文件的页数。 |
seq_page_cost | 否 | 1 | 设置规划器对顺序获取磁盘页面的成本的估计 |
server_encoding | 否 | UTF8 | 显示服务器(数据库)字符集编码。 |
server_version | 否 | 2.4 | 显示服务器版本。 |
server_version_num | 否 | 220004 | 显示服务器版本作为整数。 |
session_preload_libraries | 否 | 列出要预加载到每个后端的共享库。 | |
session_replication_role | 否 | origin | 设置会话的行为以触发器和重写规则。 |
shared_buffers | 是 | 128MB | 设置服务器使用的共享内存缓冲区数量。建议是物理内存地30%以上 |
shared_memory_type | 是 | mmap | 选择用于主共享内存区域的共享内存实现。 |
shared_preload_libraries | 是 | ud_cron,pg_stat_statements,等等 | 列出要预加载到服务器的共享库。 |
ssl | 否 | off | 启用SSL连接。 |
ssl_ca_file | 否 | SSL证书颁发机构文件的位置 | |
ssl_cert_file | 否 | server.crt | SSL服务器证书文件的位置。 |
ssl_ciphers | 否 | HIGH:MEDIUM:+3DES:!aNULL | 设置允许的SSL密码列表 |
ssl_crl_dir | 否 | SSL证书吊销列表目录的位置 | |
ssl_crl_file | 否 | SSL证书吊销列表文件的位置。 | |
ssl_dh_params_file | 否 | SSL DH参数文件的位置。 | |
ssl_ecdh_curve | 否 | prime256v1 | 设置用于ECDH的曲线。 |
ssl_key_file | 否 | server.key | SSL服务器私钥文件的位置 |
ssl_library | 否 | OpenSSL | 显示SSL库的名称 |
ssl_max_protocol_version | 否 | 设置要使用的SSL/TLS协议版本的最大值 | |
ssl_min_protocol_version | 否 | TLSv1.2 | 设置要使用的SSL/TLS协议版本的最小值 |
ssl_passphrase_command | 否 | 获取SSL密码的命令。 | |
ssl_passphrase_command_supports_reload | 否 | off | 在服务器重新加载期间也使用ssl_passphrase_command. |
ssl_prefer_server_ciphers | 否 | on | 优先使用服务器密码套件顺序 |
standard_conforming_strings | 否 | on | 使'...'字符串将反斜杠视为字面值. |
statement_timeout | 否 | 0 | 设置任何语句允许的最大持续时间. |
stats_temp_directory | 否 | ud_stat_tmp | 将临时统计文件写入指定的目录 |
superuser_reserved_connections | 是 | 3 | 设置为超级用户保留的连接插槽数量 |
synchronize_seqscans | 否 | on | 启用同步顺序扫描. |
synchronous_commit | 否 | on | 设置当前事务的同步提交方式,表示提交事务时是否等待数据写入到远程存储。此处设置为remote_write,表示在事务提交时等待数据被写入到远程存储。 |
synchronous_standby_names | 否 | 同步备用服务器的数量以及潜在同步服务器的名称列表 | |
syslog_facility | 否 | local0 | 设置启用syslog时使用的syslog "facility" |
syslog_ident | 否 | postgres | 设置用于在syslog中识别PostgreSQL消息的程序名称. |
syslog_sequence_numbers | 否 | on | 为syslog消息添加序列号以避免重复抑制. |
syslog_split_messages | 否 | on | 将发送到syslog的消息按行拆分,使其适应1024字节. |
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 | 设置用于显示和解释时间戳的时区. |
timezone_abbreviations | 否 | Default | 选择一个包含时区缩写的文件。 |
trace_notify | 否 | off | 为LISTEN和NOTIFY生成调试输出. |
trace_recovery_messages | 否 | log | 启用与恢复相关的调试信息记录. |
trace_sort | 否 | off | 在排序过程中输出资源使用信息. |
track_activities | 否 | on | 收集执行命令的信息 |
track_activity_query_size | 是 | 1kB | 设置pg_stat_activity.query预留的大小,以字节为单位 |
track_commit_timestamp | 是 | off | 收集事务提交时间。 |
track_counts | 否 | on | 收集数据库活动统计信息。 |
track_functions | 否 | none | 收集数据库活动的功能级别统计信息。 |
track_io_timing | 否 | off | 收集数据库I/O活动的计时统计信息。 |
track_wal_io_timing | 否 | off | 收集WAL I/O活动的计时统计信息。 |
transaction_deferrable | 否 | off | 是否推迟一个只读可序列化事务,直到它可以被执行且不可能发生序列化失败 |
transaction_isolation | 否 | read committed | 设置当前事务的隔离级别 |
transaction_read_only | 否 | off | 设置当前事务的只读状态 |
transform_null_equals | 否 | off | 将 "expr=NULL" 视为 "expr IS NULL" |
unix_socket_directories | 是 | /tmp | 设置Unix域套接字创建的目录。 |
unix_socket_group | 是 | 设置Unix域套接字的所属组 | |
unix_socket_permissions | 是 | 0777 | 设置Unix域套接字的访问权限。 |
update_process_title | 否 | on | 更新进程标题以显示活动SQL命令 |
vacuum_cost_delay | 否 | 0 | 以毫秒为单位的真空开销延迟 |
vacuum_cost_limit | 否 | 200 | 对表进行清理(vacuum)操作之前,该表上可用的空闲空间量 |
vacuum_cost_page_dirty | 否 | 20 | 执行数据库的 VACUUM 操作时,需要清理的脏页的成本 |
vacuum_cost_page_hit | 否 | 1 | 从缓冲缓存中找到的页面的成本. |
vacuum_cost_page_miss | 否 | 2 | 从缓冲缓存中未找到的页面的成本 |
vacuum_defer_cleanup_age | 否 | 0 | VACUUM和HOT清理应该推迟的事务数量,如果有的话 |
vacuum_failsafe_age | 否 | 1600000000 | VACUUM应该触发故障保护以避免回绕中断的年龄 |
vacuum_freeze_min_age | 否 | 50000000 | VACUUM应该冻结表行的最小年龄 |
vacuum_freeze_table_age | 否 | 150000000 | VACUUM应该扫描整个表以冻结元组的年龄 |
vacuum_multixact_failsafe_age | 否 | 1600000000 | VACUUM应该触发故障保护以避免回绕中断的多事务年龄 |
vacuum_multixact_freeze_min_age | 否 | 5000000 | VACUUM应该冻结表行中的MultiXactId的最小年龄 |
vacuum_multixact_freeze_table_age | 否 | 150000000 | VACUUM应该扫描整个表以冻结元组的多事务年龄 |
wal_block_size | 否 | 8192 | 显示预写式日志中的块大小。 |
wal_buffers | 是 | 4MB | 设置WAL的共享内存中的磁盘页缓冲区数量。 |
wal_compression | 否 | off | 压缩写入WAL文件的完整页面。 |
wal_consistency_checking | 否 | 设置进行WAL一致性检查的WAL资源管理器 | |
wal_init_zero | 否 | on | 在第一次使用时,向新的WAL文件写入零。 |
wal_keep_size | 否 | 0 | 设置为从库保留的最大wal日志大小,超出此大不的日志将不能被从库重新使用,只能重新建立从库。 |
wal_level | 是 | replica | 设置写入WAL的信息级别 |
wal_log_hints | 是 | off | 在检查点后第一次修改时,即使是非关键修改,也会将完整页面写入WAL。开启后支持ud_rewind方式修复数据 |
wal_receiver_create_temp_slot | 否 | off | 设置WAL接收器在没有配置永久插槽时是否应创建临时复制插槽。 |
wal_receiver_status_interval | 否 | 10s | 设置WAL接收器向发送服务器报告状态的最大间隔. |
wal_receiver_timeout | 否 | 1min | 设置从发送服务器接收数据的最大等待时间 |
wal_recycle | 否 | on | 通过重命名来回收WAL文件。 |
wal_retrieve_retry_interval | 否 | 5s | 在失败后,设置重试检索WAL之前等待的时间。 |
wal_segment_size | 否 | 16MB | 显示预写式日志段的大小。 |
wal_sender_timeout | 否 | 1min | 设置等待WAL复制的最大时间。 |
wal_skip_threshold | 否 | 2MB | 最小文件大小,在写入WAL之前进行fsync操作 |
wal_sync_method | 否 | fdatasync | 选择用于强制将WAL更新写入磁盘的方法。 |
wal_writer_delay | 否 | 200ms | WAL写入器执行WAL刷新之间的时间。 |
wal_writer_flush_after | 否 | 1MB | 触发刷新的WAL写入器写出的WAL数量 |
work_mem | 否 | 4MB | 设置查询工作空间使用的内存最大值 |
xmlbinary | 否 | base64 | 设置二进制值在XML中如何编码 |
xmloption | 否 | content | 设置在隐式解析和序列化操作中,XML数据是否应被视为文档或内容片段。 |
zero_damaged_pages | 否 | 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系统上,建议关闭并行