PostgreSQL集篇——PostgreSQL的配置⽂件解析PostgreSQL集篇——f配置⽂件解析
正⽂
⽇常中我们进⾏安装PostgreSQL后都需要对其进⾏配置基础配置,以便其能有效发挥出服务器的性能,下⾯是我进⾏整理后的f
配置⽂件的相关注释,⽅便⼤家对于各个属性进⾏熟悉。
#------------------------------------------------------------------------------
# 基础⽂件位置
#------------------------------------------------------------------------------
data_directory = '/opt/postgres/data' # 数据库数据存储⽬录
# (需要重启⽣效)
hba_file = '/opt/postgres/data/f' # ⽤户访问数据库认证限定⽂件
# (需要重启⽣效)
ident_file = '/opt/postgres/data/f' # 使⽤ident 协议访问数据库时系统⽤户与数据库⽤户对应关系配置⽂件
# (需要重启⽣效)
#------------------------------------------------------------------------------
# 连接和认证配置 CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - 连接设置 Connection Settings -
listen_addresses='*' # 多个ip使⽤英⽂逗号分隔即可;默认是 'localhost'; 设置为 '*' 时表⽰所有IP均可访问
# (需要重启⽣效)
port = 5432 # 数据库访问端⼝号 (需要重启⽣效)
max_connections = 100 # 数据库⽀持的最⼤连接数连接数 = ((核⼼数 * 2) + 有效磁盘数)
# 通常在⼀台⾼配服务器中连接数在300-1000以内性能最⾼
# 你需要⼀个⼩连接池,和⼀个充满了等待连接的线程的队列
# 如果你有10000个并发⽤户,设置⼀个10000的连接池基本等于炸掉服务器。
# 1000仍然很恐怖。即是100也太多了。
# 你需要⼀个10来个连接的⼩连接池,然后让剩下的业务线程都在队列⾥等待。
# 连接池中的连接数量应该等于你的数据库能够有效同时进⾏的查询任务数(通常不会⾼于2*CPU核⼼数)
superuser_reserved_connections = 3 # 为具有超级⽤户权限的⽤户预留的连接数
# (需要重启⽣效)
unix_socket_directories = '.' # 指定服务器⽤于监听来⾃客户端应⽤的连接的 Unix 域套接字⽬录。
# (需要重启⽣效)
#unix_socket_group = '' # 设置 Unix 域套接字的所属组(套接字的所属⽤户总是启动服务器的⽤户)
# (需要重启⽣效)
unix_socket_permissions = 0700 # 设置 Unix 域套接字的访问权限
# (需要重启⽣效)
#bonjour = off # 通过Bonjour⼴告服务器的存在。默认值是关闭
# (需要重启⽣效)
#bonjour_name = '' # 指定Bonjour服务名称。空字符串''(默认值)表⽰使⽤计算机名。
# (需要重启⽣效)
# - 安全和认证 -
默认浏览器怎么设置authentication_timeout = 10s # 完成客户端认证的最长时间,以秒计
#ssl = off # (需要重启⽣效)
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # 指定⼀个SSL密码列表,⽤于安全连接。
# (需要重启⽣效)
#ssl_prefer_server_ciphers = on # 指定是否使⽤服务器的 SSL 密码⾸选项,⽽不是⽤客户端的。默认为真。(需要重启⽣效)
#ssl_ecdh_curve = 'prime256v1' # 指定⽤在ECDH密钥交换中的曲线名称。它需要被所有连接的客户端⽀持。它不需要与服务器椭圆曲线密钥使⽤的曲线相同。默认值是prim # (需要重启⽣效)
#ssl_cert_file = '' # 指定包含 SSL 服务器证书的⽂件名。默认值是 (需要重启⽣效)
#ssl_key_file = 'server.key' # 指定包含 SSL 服务器私钥的⽂件名。默认值为server.key。 (需要重启⽣效)
#ssl_ca_file = '' # 指定包含 SSL 服务器证书颁发机构(CA)的⽂件名 (需要重启⽣效)
#ssl_crl_file = '' # 指定包含 SSL 服务器证书撤销列表(CRL)的⽂件名。默认值为l (需要重启⽣效)
#password_encryption = on # 当在CREATE USER或ALTER ROLE中指定了⼀个密码,⽽没有写ENCRYPTED或UNENCRYPTED时,这个参数决定是否密码会被加密。默认值#db_user_namespace = off # 允许针对每个数据库的⽤户名。默认是关闭的。
#row_security = on # 此变量控制是否提⾼错误以代替应⽤⾏安全策略。
# 当设置为on时,策略往往适⽤。
# 当设置为off时,查询失败,这将应⽤⾄少⼀个策略。默认为on。
# GSSAPI using Kerberos
#krb_server_keyfile = '' # 设置 Kerberos 服务器密钥⽂件的位置。
#krb_caseins_users = off # 设置 Kerberos 和 GSSAPI ⽤户名是否应区分⼤⼩写。默认是off(区分⼤⼩写)
# - TCP Keepalives -
# see "man 7 tcp" for details
#tcp_keepalives_idle = 0 # 指定不活动多少秒之后通过 TCP 向客户端发送⼀个 keepalive 消息。
# 这个参数只有在⽀持TCP_KEEPIDLE或TCP_KEEPALIVE符号的系统或 Windows 上才可以使⽤。
# 0 值表⽰使⽤默认值
#tcp_keepalives_interval = 0 # 指定在多少秒之后重发⼀个还没有被客户端告知已收到的 TCP keepalive 消息
# 0 值表⽰使⽤默认值
#tcp_keepalives_count = 0 # 指定与客户端的服务器连接被认为死掉之前允许丢失的 TCP keepalive 数量
# 0 值表⽰使⽤默认值
#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------
# - 内存 -
shared_buffers = 10GB # 设置数据库服务器将使⽤的共享内存缓冲区量。默认通常是 128 兆字节(128MB)
如果爱老了# ⼀个合理的shared_buffers开始值是系统内存的 25%
# 为了能把对写⼤量新的或改变的数据的处理分布在⼀个较长的时间段内, shared_buffers更⼤的设置通常要求对max_wal_size也做相应增加
# windows上可⽤的shared_buffers值通常是从 64MB 到 512 MB
# min 128kB
# (需要重启⽣效)
#huge_pages = try # 启⽤/禁⽤巨型内存页⾯的使⽤。可⽤的值是 try(默认)、on、和off。
# 当前,只有 Linux 上⽀持这个特性。在其他系统上这个参数被设置为 try时,它会被忽略。
# 当huge_pages被设置为try时,服务器将尝试使⽤巨型页⾯,如果失败则会转回去使⽤正常的分配。
如果设置为 on,使⽤巨型页⾯失败会阻⽌服务器启动。如果设置 # (需要重启⽣效)
temp_buffers = 8MB # 设置每个数据库会话使⽤的临时缓冲区的最⼤数⽬。这些都是会话的本地缓冲区,只⽤于访问临时表。默认是 8 兆字节(8MB)
#
#max_prepared_transactions = 0 # 设置可以同时处于"prepared"状态的事务的最⼤数⽬;把这个参数设置为零(这是默认设置)将禁⽤预备事务特性
# 该特性主要是为了事务管理器时使⽤,⽇常业务会话事务⽆需使⽤该配置。
# 当运⾏⼀个后备服务器时,这个参数必须⾄少与主服务器上的⼀样⼤。否则,后备服务器上将不会执⾏查询。
# (需要重启⽣效)
work_mem = 4MB # 指定在写到临时磁盘⽂件之前被内部排序操作和哈希表使⽤的内存量。该值默认为四兆字节(4MB)
# 注意对于⼀个复杂查询,可能会并⾏运⾏好⼏个排序或者哈希操作;每个操作都会被允许使⽤这个参数指定的内存量,然后才会开始写数据到临时⽂件。同样, # min 64kB
maintenance_work_mem = 40MB # 指定在维护性操作(例如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY)中使⽤的最⼤的内存量。其默认值是 64 兆 # 因为在⼀个数据库会话中,⼀个时刻只有⼀个这样的操作可以被执⾏,并且⼀个数据库安装通常不会有太多这样的操作并发执⾏,
# 把这个数值设置得⽐work_mem⼤很多是安全的。更⼤的设置可以改进清理和恢复数据库转储的性能。
# 注意 autovacuum_max_workers 该参数设置的数量,实际能打开的内存⼤⼩是maintenance_work_mem * autovacuum_max_workers
# min 1MB
#replacement_sort_tuples = 150000 # 限制替换选择排序的使⽤,当超过150000条数据时使⽤替换算法进⾏排序相对效率要低⼀些,同时受限maintenance_work_mem
#autovacuum_work_mem = -1 # 指定每个⾃动清理⼯作者进程能使⽤的最⼤内存量。其默认值为 -
1,
# 当-1时转⽽使⽤ maintenance_work_mem的值。当运⾏在其他上下⽂环境中时,这个设置对VACUUM的⾏为没有影响。
#max_stack_depth = 2MB # 指定服务器的执⾏堆栈的最⼤安全深度。
# 这个参数的理想设置是由内核强制的实际栈尺⼨限制(ulimit -s所设置的或者本地等价物),减去⼤约⼀兆字节的安全边缘。
# 我们当前采⽤的linux通常是8M,则这⾥最⼤默认可设置7MB,如果更⼤需要更改linux本⾝的默认堆栈空间⼤⼩
# min 100kB
dynamic_shared_memory_type = posix # 指定服务器应该使⽤的动态共享内存实现。默认posix
# supported by the operating system:
# posix
# sysv
# windows
# mmap
# use none to disable dynamic shared memory
# - Disk -
temp_file_limit = -1 # 指定⼀个会话能⽤于临时⽂件(如排序和哈希临时⽂件,或者⽤于保持游标的存储⽂件)的最⼤磁盘空间量。
# ⼀般情况使⽤默认值-1不⽤做限制
# in kB, or -1 for no limit
# - Kernel Resource Usage -
#
max_files_per_process = 1000 # 设置每个服务器⼦进程允许同时打开的最⼤⽂件数⽬。默认是 1000 个⽂件。
# (需要重启⽣效)
# 第三⽅插件模块,多个加载时使⽤","进⾏分割常⽤如下:
shared_preload_libraries = 'pg_stat_statements' # 这个变量指定⼀个或者多个要在服务器启动时预载⼊的共享库。
# auth_delay 模块,使服务器在报告认证失败之前短暂暂停⼀下
auth_delay.milliseconds = 5000 # 在报告认证失败之前等待的毫秒数,默认值为0
auth_delay.milliseconds = 5000 # 在报告认证失败之前等待的毫秒数,默认值为0
# auto_explain 模块,可以定义sql执⾏的时间以记录在postgres的⽇志中,包含sql的直接计划。
auto_explain.log_min_duration = 1s # 记录执⾏超过1s的sql
auto_explain.log_analyze = true # 执⾏statement, 得到真实的运⾏时间以及统计信息
auto_explain.log_verbose = true # 是否输出详细信息,如列,schema,trigger等信息
auto_explain.log_buffers = true # 缓冲区⽤量统计信息是否被打印出来。这个参数只有当开启auto_explain.log_analyze后才有作⽤,默认为off。
auto_explain.log_nested_statements = true # 使嵌套语句被记录下来。默认为off。网速突然变慢
# pg_stat_statements 监控SQL模块
pg_ack_utility=off # 是否跟踪⾮DML语句 (例如DDL,DCL),on表⽰跟踪, off表⽰不跟踪
pg_stat_statements.max = 1000 # 在pg_stat_statements中最多保留多少条统计信息,通过LRU算法,覆盖⽼的记录
pg_ack = all # all - (所有SQL包括函数内嵌套的SQL), top - 直接执⾏的SQL(函数内的sql不被跟踪), none - (不跟踪)
# - 基于代价的清理延迟 -
vacuum_cost_delay = 10ms # 进程超过代价限制后将休眠的时间长度,以毫秒计。其默认值为0,这将禁⽤基于代价的清理延迟特性。正值将启⽤基于代价的清理。注意在很#vacuum_cost_page_hit = 1 # 清理⼀个在共享缓存中到的缓冲区的估计代价。它表⽰锁住缓冲池、查共享哈希表和扫描页内容的代价。默认值为1
#vacuum_cost_page_miss = 10 # 清理⼀个必须从磁盘上读取的缓冲区的代价。它表⽰锁住缓冲池、查共享哈希表、从磁盘读取需要的块以及扫描其内容的代价。默认值为1 #vacuum_cost_page_dirty = 20 # 当清理修改⼀个之前⼲净的块时需要花费的估计代价。它表⽰再次把脏块刷出到磁盘所需要的额外I/O。默认值为20
vacuum_cost_limit = 200 # 将导致清理进程休眠的累计代价。默认值为200
# 注:实际延迟的计算⽅式是vacuum_cost_delay * accumulated_balance / vacuum_cost_limit,且最⼤值是vacuum_cost_delay * 4
# - 后台写⼊器 -
bgwriter_delay = 200ms # 指定后台写⼊器活动轮次之间的延迟。
bgwriter_lru_maxpages = 500 # 在每个轮次中,不超过这么多个缓冲区将被后台写⼊器写出。把这
个参数设置为零可禁⽤后台写出,默认值是 100 个缓冲区。
#bgwriter_lru_multiplier = 2.0 # 每⼀轮次要写的脏缓冲区的数⽬基于最近⼏个轮次中服务器进程需要的新缓冲区的数⽬。
#bgwriter_flush_after = 512kB # 不管何时 bgwriter 写⼊了超过bgwriter_flush_after字节,尝试强制 OS 把这些写发送到底层存储上。
# 注:较⼩的bgwriter_lru_maxpages和bgwriter_lru_multiplier可以降低由后台写⼊器造成的额外 I/O 开销。但更可能的是,服务器进程将必须⾃⼰发出写⼊操作,这会延迟交互式# - 异步⾏为 -
effective_io_concurrency = 300 # 设置PostgreSQL可以同时被执⾏的并发磁盘 I/O 操作的数量。
# 允许的范围是 1 到 1000,或 0 表⽰禁⽤异步 I/O 请求。
# 异步 I/O 依赖于⼀个有效的posix_fadvise函数(⼀些操作系统可能没有)。如果不存在这个函数,将这个参数设置为除 0 之外的任何东西将导致错误。
# SSD 以及其他基于内存的存储常常能处理很多并发请求,因此它们的最佳值可能是数百。
#max_worker_processes = 8 # 设置系统能够⽀持的后台进程的最⼤数量。这个参数只能在服务器启动时设置。默认值为 8。
# (需要重启⽣效)
#max_parallel_workers_per_gather = 0 # 设置单个Gather节点能够开始的⼯作者的最⼤数量。设置为 0(默认值)将会禁⽤并⾏查询执⾏
#old_snapshot_threshold = -1 # 设置在使⽤快照时,⼀个快照可以被使⽤⽽没有发⽣snapshot too old 错误风险的最⼩时间。
# 值为-1会禁⽤这个特性,并且这个值是默认值。
# (需要重启⽣效)
#backend_flush_after = 0 # 只要⼀个后端写⼊了超过backend_flush_after字节,就会尝试强制 OS 把这些写发送到底层存储。
# 合法的范围位于0 (禁⽤受控写回)和2MB之间。默认是0(即没有刷写控制)
#------------------------------------------------------------------------------
# 预写式⽇志
#------------------------------------------------------------------------------
# - Settings -
wal_level = hot_standby # wal_level决定多少信息写⼊到 WAL 中。默认值是minimal,只写⼊从崩溃或⽴即关机恢复所需要的信息。
# archive添加 WAL 归档所需要的⽇志。 hot_standby则进⼀步增加在⼀个后备服务器上运⾏只读查询所需的信息。最后,logical会增加⽀持逻辑解码所需的信 # 为了在⼀个后备服务器上启⽤只读查询,主服务器上的wal_level必须设置为hot_standby或更⾼级别,并且后备服务器上必须启⽤hot_standby。
# (需要重启⽣效)
#fsync = on # 如果打开这个参数,PostgreSQL服务器将尝试确保更新被物理地写⼊到磁盘,做法是发出fsync()系统调⽤或者使⽤多种等价的⽅法(见wal_sync_method) # 虽然关闭fsync常常可以得到性能上的收益,但当发⽣断电或系统崩溃时可能造成不可恢复的数据损坏。因此,只有在能很容易地从外部数据中重建整个数据库时才 # fsync只能在
f⽂件中或在服务器命令⾏上设置。如果你关闭这个参数,请也考虑关闭full_page_writes。
#synchronous_commit = on # 指定在命令返回“success”指⽰给客户端之前,⼀个事务是否需要等待 WAL 记录被写⼊磁盘。
# 合法的值是on、remote_apply、remote_write、local和off。默认的并且安全的设置是on。
#wal_sync_method = fsync # ⽤来向强制 WAL 更新到磁盘的⽅法。如果fsync是关闭的,那么这个设置就不相关,因为 WAL ⽂件更新将根本不会被强制。
# supported by the operating system:
英雄联盟ez出装# open_datasync ⽤open()选项O_DSYNC写 WAL ⽂件
# fdatasync (default on Linux) 在每次提交时调⽤fdatasync()
# fsync 在每次提交时调⽤fsync()
# fsync_writethrough 在每次提交时调⽤fsync(),强制任何磁盘写⾼速缓存的直通写
# open_sync ⽤open()选项O_SYNC写 WAL ⽂件
#full_page_writes = on # 当这个参数为打开时,PostgreSQL服务器在⼀个检查点之后的页⾯的第⼀次修改期间将每个页⾯的全部内容写到 WAL 中。默认值是on
wal_compression = on # 当这个参数为on时,如果full_page_writes 为打开或者处于基础备份期间,PostgreSQL服务器会压缩写⼊到 WAL 中的完整页⾯镜像。
#wal_log_hints = off # 当这个参数为on时,PostgreSQL服务器⼀个检查点之后页⾯被第⼀次修改期间把该磁盘页⾯的整个内容都写⼊ WAL,即使对所谓的提⽰位做⾮关键
#wal_log_hints = off # 当这个参数为on时,PostgreSQL服务器⼀个检查点之后页⾯被第⼀次修改期间把该磁盘页⾯的整个内容都写⼊ WAL,即使对所谓的提⽰位做⾮关键 # (需要重启⽣效)
wal_buffers = -1 # ⽤于还未写⼊磁盘的 WAL 数据的共享内存量。
# 默认值 -1 选择等于shared_buffers的 1/32 的尺⼨(⼤约3%),但是不⼩于64kB也不⼤于 WAL 段的尺⼨(通常为)
# (需要重启⽣效)
wal_writer_delay = 200ms # 指定 WAL 写⼊器的活动轮次之间的延迟。在每个轮次中写⼊器会将 WAL 刷到磁盘。之后,休眠wal_writer_delay毫秒,然后重复。默认值是 2 #wal_writer_flush_after = 1MB # 指定 WAL 写⼊器刷写 WAL 的频繁程度。
commit_delay = 20 # 在⼀次 WAL 刷写被发起之前,commit_delay增加⼀个时间延迟,以微妙计。
commit_siblings = 5 # range 1-1000 在执⾏commit_delay延迟时,要求的并发活动事务的最⼩数⽬。
# - Checkpoints 检查点 -
checkpoint_timeout = 5min # range 30s-1d ⾃动 WAL 检查点之间的最长时间。如果指定值时没有单位,则以秒为单位。合理的范围在 30 秒到 1 天之间。默认是 5 分钟(5m max_wal_size = 10GB # 在⾃动WAL检查点使得WAL增长到最⼤尺⼨。这是软限制;特殊情况下WAL⼤⼩可以超过 max_wal_size,如重负载下,错误archive_command,min_wal_size = 80MB # 只要WAL磁盘使⽤率低于这个设置,旧的WAL⽂件总数被回收,以供将来检查点使⽤。
#checkpoint_completion_target = 0.5 # 指定检查点完成的⽬标,作为检查点之间总时间的⼀部分。默认是 0.5, 0.0 - 1.0
#checkpoint_flush_after = 256kB # 在执⾏检查点时,只要有checkpoint_flush_after字节被写⼊,就尝试强制 OS 把这些写发送到底层存储。
#checkpoint_warning = 30s # 如果由于填充检查点段⽂件导致的检查点之间的间隔低于这个参数表⽰的秒数,那么就向服务器⽇志写⼀个消息(它建议增加max_wal_size的值# - Archiving -
archive_mode = on # 当启⽤archive_mode时,可以通过设置 archive_command命令将完成的 WAL 段发送到归档存储。 off, on, or always
# (需要重启⽣效)
#bin/date
archive_command = 'test ! -f /pgbackup/data/pg_xlog/%f && cp %p /pgbackup/data/pg_xlog/%f' # command to use to archive a logfile segment
# placeholders: %p = path of file to archive
# %f = file name only
# e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
archive_timeout = 5min # archive_command仅在已完成的 WAL 段上调⽤。
# number of seconds; 0 disables
#------------------------------------------------------------------------------
# 复制
#------------------------------------------------------------------------------
# - 发送服务器(s) -
# 这些参数可以在任何发送复制数据给⼀个或多个后备服务器的服务器上设置。主控机总是⼀个发送服务器,因此这些参数总是要在主控机上设置。这些参数的⾓⾊和含义不会在max_wal_senders = 3 # 指定来⾃后备服务器或流式基础备份客户端的并发连接的最⼤数量(即同时运⾏ WAL 发送进程的最⼤数)。默认值是零,它意味着禁⽤复制。
# WAL 发送进程被计算在连接总数内,因此该参数不能被设置为⾼于max_connections的值。
# wal_level必须设置为archive或更⾼级别以允许来⾃后备服务器的连接。
# (需要重启⽣效)
wal_keep_segments = 200 # 指定在后备服务器需要为流复制获取⽇志段⽂件的情况下,pg_xlog⽬录下所能保留的过去⽇志⽂件段的最⼩数⽬。每个段通常是 16 兆字节。wal_sender_timeout = 60s # 中断那些停⽌活动超过指定毫秒数的复制连接。
#max_replication_slots = 0 # 指定服务器可以⽀持的复制槽最⼤数量。默认值为零。
# (需要重启⽣效)
#track_commit_timestamp = off # 记录事务提交时间。默认值是off。
# (需要重启⽣效)
# - 主服务器 -
# These settings are ignored on a standby server.
#synchronous_standby_names = '' # 这个参数指定⼀个⽀持同步复制的后备服务器的列表。'*' = all
#vacuum_defer_cleanup_age = 0 # 指定VACUUM和HOT更新在清除死亡⾏版本之前,应该推迟多
久(以事务数量计)。默认值是零个事务,
# 表⽰死亡⾏版本将被尽可能快地清除,即当它们不再对任何打开的事务可见时尽快清除。
# - 后备服务器 -
# 这些设置空值接收复制数据的⼀个后备服务器的⾏为。它们的值与主服务器⽆关。
hot_standby = on # 指定在恢复期间,你是否能够连接并运⾏查询
音乐之声排行榜# (需要重启⽣效)
#max_standby_archive_delay = 30s # 当热后备机处于活动状态时,这个参数决定取消那些与即将应⽤的 WAL 项冲突的后备机查询之前,后备服务器应该等待多久
# 当 WAL 数据被从 WAL 归档(并且因此不是当前的 WAL)时,max_standby_archive_delay可以应⽤。默认值是 30 秒。
# -1 允许后备机⼀直等到冲突查询结束。
max_standby_streaming_delay = 30s # 当热后备机处于活动状态时,这个参数决定取消那些与即将
应⽤的 WAL 项冲突的后备机查询之前,后备服务器应该等待多久
# 当 WAL 数据正在通过流复制被接收时,max_standby_streaming_delay可以应⽤。默认值是 30 秒。
# -1 允许后备机⼀直等到冲突查询结束。
# -1 允许后备机⼀直等到冲突查询结束。
wal_receiver_status_interval = 1s # 指定在后备机上的 WAL 接收者进程向主服务器或上游后备机发送有关复制进度的信息的最⼩频度
# 这个参数的值是报告之间的最⼤间隔,以秒计。
# 将这个参数设置为零将完全禁⽤状态更新。这个参数只能在f⽂件中或在服务器命令⾏上设置。默认值是 10 秒。
hot_standby_feedback = on # 指定⼀个热后备机是否将会向主服务器或上游后备机发送有关于后备机上当前正被执⾏的查询的反馈。
# 反馈消息的发送频度不会⾼于每个wal_receiver_status_interval周期发送⼀次。默认值是off。
#wal_receiver_timeout = 60s # 中⽌处于⾮活动状态超过指定毫秒数的复制链接。
# 0 禁⽤超时机制
# 默认值是 60 秒
#wal_retrieve_retry_interval = 5s # 指定等待服务器应等待多长时间时,当重试检索WAL数据之前来⾃任何源(流复制,本地pg_xlog或者WAL归档)的WAL数据不可⽤。
# 默认值是 5 秒如果没有指定,单位是毫秒
# 此参数有助于配置恢复节点控制等待新的WAL数据可⽤的时间数。
#------------------------------------------------------------------------------
# QUERY TUNING
#------------------------------------------------------------------------------
# - 规划器⽅法配制 -
#enable_bitmapscan = on # 允许或禁⽌查询规划器使⽤位图扫描计划类型。默认值是on
#enable_hashagg = on # 允许或禁⽤查询规划器使⽤哈希聚集计划类型。默认值是on
#enable_hashjoin = on # 允许或禁⽌查询规划器使⽤哈希连接计划类型。默认值是on
#enable_indexscan = on # 允许或禁⽌查询规划器使⽤索引扫描计划类型。默认值是on
#enable_indexonlyscan = on # 允许或禁⽌查询规划器使⽤只⽤索引扫描计划类型。默认值是on
#enable_material = on # 允许或者禁⽌查询规划器使⽤物化。它不可能完全禁⽤物化,但是关闭这个变量将阻⽌规划器插⼊物化节点,除⾮为了保证正确性。默认值是on
#enable_mergejoin = on # 允许或禁⽌查询规划器使⽤归并连接计划类型。默认值是on
#enable_nestloop = on # 允许或禁⽌查询规划器使⽤嵌套循环连接计划。它不可能完全禁⽌嵌套循环连接,但是关闭这个变量将使得规划器尽可能优先使⽤其他⽅法。默认值#enable_seqscan = on # 允许或禁⽌查询规划器使⽤顺序扫描计划类型。它不可能完全禁⽌顺序扫描,但是关闭这个变量将使得规划器尽可能优先使⽤其他⽅法。默认值是o #enable_sort = on # 允许或禁⽌查询规划器使⽤显式排序步骤。它不可能完全禁⽌显式排序,但是关闭这个变量将使得规划器尽可能优先使⽤其他⽅法。默认值是on
#enable_tidscan = on # 允许或禁⽌查询规划器使⽤TID扫描计划类型。默认值是on
# - 规划器代价常量 -
#seq_page_cost = 2.0 # 设置规划器对⼀系列顺序磁盘页⾯获取中的⼀次的代价估计。默认值是 1.0。
#random_page_cost = 4.0 # 设置规划器对⼀次⾮顺序获取磁盘页⾯的代价估计。默认值是 4.0。
#cpu_tuple_cost = 0.01 # 设置规划器对⼀次查询中处理每⼀⾏的代价估计。默认值是 0.01
#cpu_index_tuple_cost = 0.005 # 设置规划器对⼀次索引扫描中处理每⼀个索引项的代价估计。默认值是 0.005
#cpu_operator_cost = 0.0025 # 设置规划器对于⼀次查询中处理每个操作符或函数的代价估计。默认值是 0.0025
#parallel_tuple_cost = 0.1 # 设置规划器对于从⼀个并⾏⼯作者进程传递⼀个元组给另⼀个进程的代价估计。默认是 0.1
#parallel_setup_cost = 1000.0 # 设置规划器对启动并⾏⼯作者进程的代价估计。默认是 1000
#min_parallel_relation_size = 8MB # 设置要考虑⽤于并⾏扫描的关系的最⼩尺⼨。默认是 8 兆字节(8MB
effective_cache_size = 126GB # 设置规划器对⼀个单⼀查询可⽤的有效磁盘缓冲区尺⼨的假设。
# 这个参数会被考虑在使⽤⼀个索引的代价估计中,更⾼的数值会使得索引扫描更可能被使⽤,更低的数值会使得顺序扫描更可能被使⽤。
# 默认值 4GB
# - 遗传查询优化 -
# 遗传查询规划器(GEQO)是⼀种使⽤启发式搜索来进⾏查询规划的算法。它可以降低对于复杂查询(连接很多表的查询)的规划时间,但是代价是它产⽣的计划有时候要差于#geqo = on # 允许或禁⽌遗传查询优化。默认是启⽤。
#geqo_threshold = 12 # 只有当涉及的FROM项数量⾄少有这么多个的时候,才使⽤遗传查询优化(注意⼀个FULL OUTER JOIN只被计为⼀个FROM项)。默认值是 12。
#geqo_effort = 5 # 控制 GEQO 中规划时间和查询计划质量之间的折中。这个变量必须是位于 1 到 10 之间的⼀个整数。默认值是 5。
#geqo_pool_size = 0 # 控制 GEQO 使⽤的池尺⼨,它就是遗传种中的个体数⽬。它必须⾄少为 2,且有⽤的值通常在 100 到 1000 之间。
# 如果它被设置为零(默认设置)则会基于geqo_effort和查询中表的数量选择⼀个合适的值。
#geqo_generations = 0 # 控制 GEQO 使⽤的代数,也是算法的迭代次数。它必须⾄少为 1,并且有⽤值的范围和池尺⼨相同。
#geqo_selection_bias = 2.0 # 控制 GEQO 使⽤的选择偏好。选择偏好是种中的选择压⼒。值可以是 1.5 到 2.0 之间,后者是默认值。
#geqo_seed = 0.0 # 控制 GEQO 使⽤的随机数⽣成器的初始值,随机数⽣成器⽤于在连接顺序搜索空间中选择随机路径。
# 该值可以从 0 (默认值)到 1。变化该值会改变被探索的连接路径集合,并且可能导致到⼀个更好或更差的路径
# - 其他规划器选项 -
#default_statistics_target = 100 # 为没有通过ALTER TABLE SET STATISTICS设置列相关⽬标的表列设置默认统计⽬标。 range 1-10000
# 默认值是 100
#constraint_exclusion = partition # constraint_exclusion的允许值是on(对所有表检查约束)、off(从不检查约束)和partition(只对继承的⼦表和UNION ALL⼦查询检查约束 # 通常被⽤于继承和分区表来提⾼性能
#cursor_tuple_fraction = 0.1 # 设置规划器对将被检索的⼀个游标的⾏的⽐例的估计。默认值是 0.1。
#from_collapse_limit = 8 # 如果⽣成的FROM列表不超过这么多项,规划器将把⼦查询融合到上层查询。
# 较⼩的值可以减少规划时间,但是可能会⽣成较差的查询计划。默认值是 8。
如何升级QQ空间#join_collapse_limit = 8 # 如果得出的列表中不超过这么多项,那么规划器将把显式JOIN(除了FULL JOIN)结构重写到 FROM项列表中。
# 默认情况下,这个变量被设置成和from_collapse_limit相同,这样适合⼤多数使⽤。
#force_parallel_mode = off # 允许为测试⽬的使⽤并⾏查询,即便是并不期望在性能上得到效益。
# force_parallel_mode的允许值是off (只在期望改进性能时才使⽤并⾏模式)、on (只要查询被认为是安全的,就强制使⽤并⾏查询)以及 regress(和on相#------------------------------------------------------------------------------
# 错误报告和⽇志
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论