Postgresql - 配置文件参数解析(二)

#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

# - Memory -
# 内存设置,可以设置为系统的1/4-1/3
shared_buffers = 128MB # min 128kB
# (change requires restart)
# 大页
#huge_pages = try # on, off, or try
# (change requires restart)
# 临时内存
#temp_buffers = 8MB # min 800kB
# 如果设置为不为0的正整数,可以在事务中做保存,并且不提交,之后再提交该事务
# begin --> 操作 --> prepared transaction 'XXX' ,退出事务 --> 执行其他操作 --> 提交或回滚之前事务'XXX' :commit prepared 'XXX' ,rollback prepared 'XXX'
# 信息可在pg_prepared_xacts中查询
#max_prepared_transactions = 0 # zero disables the feature
# (change requires restart)
# Caution: it is not advisable to set max_prepared_transactions nonzero unless
# you actively intend to use prepared transactions.
# 在写入临时磁盘文件之前,内部排序操作和哈希表使用的内存数量。
# 对于复杂的查询,可能会同时运行多个排序或散列操作;在开始将数据写入临时文件之前,每个操作都可以使用这个值指定的内存。
# 此外,几个正在运行的会话可以同时执行这些操作。因此,所使用的总内存可以是work_mem值的许多倍;在选择值时,有必要记住这个事实。
# 每一个会话排序操作用于ORDER BY、DISTINCT和merge join。散列表用于散列连接、基于散列的聚合和基于散列的子查询处理。
#work_mem = 4MB # min 64kB
# 每一个会话维护操作(如真空度、创建索引和修改表添加外键)使用的最大内存量。
#maintenance_work_mem = 64MB # min 1MB
# 当要排序的元组的数目小于这个数目时,排序将使用替换选择而不是快速排序生成它的第一个输出运行。
# 这在内存受限的环境中可能很有用,在这种环境中,输入到较大排序操作的元组具有很强的物理-逻辑相关性。
# 注意,这并不包括具有反向相关性的输入元组。替换选择算法可以生成一个不需要合并的长期运行,
# 在这种情况下,使用默认策略将导致许多必须合并的运行,从而产生最终排序的输出。这可能允许排序操作更快完成。
# 默认是150,000元组。注意,更高的值通常不会更有效,而且可能会适得其反,因为优先级队列对可用CPU缓存的大小很敏感,而默认策略则使用缓参无关算法来运行。
# 此属性允许默认的排序策略自动地、透明地有效地使用可用的CPU缓存。
#replacement_sort_tuples = 150000 # limits use of replacement selection sort
# 指定每个autovauum 工作进程使用的最大内存数量。它默认为-1,表示应该使用maintenance_work_mem值。
#autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem
# 指定服务器执行堆栈的最大安全深度。此参数的理想设置是由内核强制执行的实际堆栈大小限制(由ulimit -s或本地等效值设置),小于兆字节的安全范围。
# 之所以需要安全裕度,是因为在服务器中的每个例程中都不检查堆栈深度,而只检查关键的潜在递归例程,如表达式求值。
# 默认设置是2MB,这是保守的小设置,不太可能出现崩溃。但是,它可能太小而不能执行复杂的函数。只有超级用户可以更改此设置。
# 将max_stack_depth设置为高于实际内核限制的值,将意味着失控的递归函数可能导致单个后端进程崩溃。
# 在PostgreSQL可以确定内核限制的平台上,服务器将不允许将此变量设置为不安全的值。然而,并不是所有的平台都提供这些信息,所以在选择值时要谨慎。
# 在linux系统/etc/security/limits.conf 中设置,* soft stack 102400 即100M
#max_stack_depth = 2MB # min 100kB
# 服务器是否使用的动态共享内存实现
# posix(用于使用shm_open分配的posix共享内存)
# sysv(用于通过shmget分配的System V共享内存)
# windows(用于windows共享内存)、
# mmap(用于使用存储在数据目录中的内存映射文件模拟共享内存)
# none(用于禁用此特性)
dynamic_shared_memory_type = posix # the default is the first option
# supported by the operating system:
# posix
# sysv
# windows
# mmap
# use none to disable dynamic shared memory
# (change requires restart)

# - Disk -
# 进程可用于临时文件(如排序和散列临时文件)的最大磁盘空间,或用于保存游标的存储文件。该值以千字节为单位指定,而-1(默认值)表示没有限制。
#temp_file_limit = -1 # limits per-process temp file space
# in kB, or -1 for no limit

# - Kernel Resource Usage -
# 允许每个服务器子进程同时打开的文件的最大数量
#max_files_per_process = 1000 # min 25
# (change requires restart)
#shared_preload_libraries = '' # (change requires restart)

# - Cost-Based Vacuum Delay -
# 当超过成本限制时,进程将休眠的时间(
#vacuum_cost_delay = 0 # 0-100 milliseconds
# 在共享缓冲区缓存中清除缓冲区的估计成本。它表示锁定缓冲池、查找共享散列表和扫描页面内容的成本。默认值是1。
#vacuum_cost_page_hit = 1 # 0-10000 credits
# 从磁盘读取缓冲区的估计成本。这表示要锁定缓冲池、查找共享散列表、从磁盘读取所需的块并扫描其内容。
#vacuum_cost_page_miss = 10 # 0-10000 credits
# 当vacuum对先前清洗过的块进行修改时,估计的成本。它表示再次将脏块刷新到磁盘所需的额外I/O。
#vacuum_cost_page_dirty = 20 # 0-10000 credits
# 导致vacuum过程休眠的累计成本。
#vacuum_cost_limit = 200 # 1-10000 credits

# - Background Writer -
# 后台写程序的活动轮之间的延迟。在每一轮中,writer发布为一些脏缓冲区写代码(由以下参数控制)。然后它会在bgwriter_delay毫秒间休眠,然后重复。
#bgwriter_delay = 200ms # 10-10000ms between rounds
# 在每一轮中,不超过这么多的缓冲区将由后台写。将其设置为0将禁用background writer。
#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
# 在每一轮中写入的脏缓冲区的数量取决于服务器进程在最近几轮中需要的新缓冲区的数量。
# 最近的平均需要乘以bgwriter_lru_乘数,以得到下一轮所需的缓冲区数量的估计。
# 脏缓冲区被写入,直到有许多干净的、可重用的缓冲区可用为止。(但是,每轮写入的缓冲区不超过bgwriter_lru_maxpages。)
# 因此,1.0的设置代表了一种“刚好及时”的策略,即准确地编写预计需要的缓冲区数目。
# 较大的值提供了一些缓冲,以应对需求的激增,而较小的值则故意让写操作由服务器进程完成。
#bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round
# 当后台写入器写入超过bgwriter_flush_after字节时,尝试强制操作系统向底层存储发出这些写入。
# 这样做将限制内核页面缓存中的脏数据量,从而减少在检查点结束时出现fsync的情况,或者当操作系统在后台以更大的批次写入数据时。
# 这通常会大大降低事务延迟,但也有一些情况,特别是工作负载大于shared_buffers,但小于OS的页面缓存,性能可能会降低。这种设置可能对某些平台没有影响。
#bgwriter_flush_after = 512kB # measured in pages, 0 disables

# - Asynchronous Behavior -
# 希望同时执行的并发磁盘I/O操作的数量。增加这个值将增加任何PostgreSQL会话试图并行发起的I/O操作的数量。
# 允许的范围是1到1000,或者零,以禁用异步I/O请求的发布。目前,该设置只影响位图堆扫描。
#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
# 设置系统可以支持的后台进程的最大数量。此参数只能在服务器启动时设置。默认是8。
# 在运行备用服务器时,必须将此参数设置为与主服务器相同或更高的值。否则,在备用服务器中将不允许查询。
#max_worker_processes = 8 # (change requires restart)
# 最大数量的worker,可以开始由一个收集或收集合并节点。
#max_parallel_workers_per_gather = 2 # taken from max_parallel_workers
# 设置worker的最大数量,系统可以支持并行查询。
#max_parallel_workers = 8 # maximum number of max_worker_processes that
# can be used in parallel queries
# 避免当使用快照的时候,发生快照过久的错误。
# 超出阈值,旧的数据可能被vacuum away。可以帮助防止膨胀的快照依然使用了很长一段时间。
#old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate
# (change requires restart)
# 每当backend_flush_after字节多写了一个后端,试图迫使这些写入底层存储操作系统问题。
# 这样做会限制在内核中脏数据的页面缓存,尽可能的减少 同步checkpoint
# 或者当操作系统在后台写大量的数据的时候,坏了的可能性。
#backend_flush_after = 0 # measured in pages, 0 disables


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页