标签:WAL max delay 参数 pg 设置 缓冲区 默认值 优化
连接设置
参数名 |
作用 |
使用 |
listen_address |
指定服务器在哪些 TCP/IP 地址上监听客户端连接,默认值是localhost,只允许本地连接。 |
*(所有都可以连接) |
max_connections |
决定数据库的最大并发连接数,默认值通常是 100 个连接,如果内核设置不支持(initdb时决定),可能会比这个数少。 |
|
superuser_reserved_connections |
为超级用户保留的连接数,默认是 3,不能小于 max_connections |
|
内存设置
参数名 |
作用 |
使用 |
shared_buffers |
数据库服务器将使用的共享内存,默认通常是 128M,如果内核设置不支持(initdb时决定),那么可以会更少。 这个设置必须至少为 128 千字节。shared_buffers推荐值是系统内存的 25%。因为PostgreSQL同样依赖操作系统的高速缓冲区,将shared_buffers设置为超过系统内存40%,可能会造成更高的负载。 |
|
max_prepared_transactions |
设置可以同时处于“prepared”状态的事务的最大数目把这个参数设置 为零(这是默认设置)将禁用预备事务特性。若要使用预备事务,max_prepared_transactions 至少设置为同 max_connections 一样大。 |
|
work_mem |
单个查询操作(例如排序或哈希表)可使用的最大内存,默认值是 4MB,ORDER BY、DISTINCT和归并连接都要用到排序操作,哈希连接、基于哈希的聚集以及基于哈希的IN子查询处理中都要用到哈希表 |
|
maintenance_work_mem |
维护性操作(例如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY)中使用的最大的内存,其默认值是64M, 更大的设置可以改进清理和恢复数据库转储的性能。 |
|
autovacuum_work_mem |
每个自动清理工作者进程能使用的最大内存量,其默认值为 -1,表示转而使用 maintenance_work_mem 的值。建议单独分配,因为 maintenance_work_mem 分配的资源建索引等操作也会使用。 |
|
dynamic_shared_memory_type |
服务器使用的内存管理方式。可能的值是posix(用于使用 shm_open分配的 POSIX 共享内存)、sysv (用于通过shmget分配的 System V 共享内存)、 windows(用于 Windows 共享内存)、和mmap (使用存储在数据目录中的内存映射文件模拟共享内存)。并非所有平台上都支持所有值,平台上第一个支持的选项就是其默认值。 在任何平台上mmap选项都不是默认值,通常不鼓励使用它,因为操作系统会 反复地把修改过的页面写回到磁盘上,从而增加了系统的I/O负载。不过当 pg_dynshmem目录被存储在一个 RAM 盘时或者没有其他共享内存功能可用时, 它还是有用的 |
|
effective_cache_size |
规划器对一个单一查询可用的有效磁盘缓冲区的预估大小,更高的数值会使得索引扫描更可能被使用,更低的数值会使得顺序扫描更可能被使用。这个参数对PostgreSQL分配的共享内存尺寸没有影响,它也不会保留内核磁盘缓冲,它只用于估计的目的,默认值是 4GB,推荐值是系统内存的 50%或更大。 |
|
io设置
参数名 |
作用 |
使用 |
bgwriter_delay |
(bg_writer 定期执行缓存刷新,写入)后台写入器活动轮次之间的延迟。在每个轮次中,写入器都会为一定数量的脏缓冲区发出写操作,之后它就休眠 bgwriter_delay 的时长, 然后重复动作。当缓冲池中没有脏缓冲区时,不管 bgwriter_delay,它都会进入更长的休眠(50*bgwriter_delay),默认值是 200ms。 |
|
bgwriter_lru_maxpages |
在每个轮次中,不超过这么多个缓冲区将被后台写入器写出,把这个参数设置为零可禁用后台写出,默认值是 100 个缓冲区。 |
|
bgwriter_lru_multiplier |
最近所需缓冲区的平均值乘以 bgwriter_lru_multiplier可以估算下一轮次中将会需要的缓冲区数目。脏缓冲区将被写出直到有很多干净可重用的缓冲区(然而,每一轮次中写出的缓冲区数不超过 bgwriter_lru_maxpages)。 因此,设置为 1.0 表示一种“刚刚好的”策略,这种策略会写出正好符合预测值的数目的缓冲区,更大大的值可以为需求高峰提供某种缓冲,默认值是 2.0。 |
|
effective_io_concurrency |
设置了该值,磁盘的预读会失效,顺序扫描和索引扫描都可以利用磁盘预读,建议关闭,默认值为 1。 |
|
max_worker_processes |
系统能够支持的后台进程的最大数量,默认值为 8。在更改这个值时,考虑也对 max_parallel_workers、max_parallel_maintenance_workers、max_parallel_workers_per_gather 进行调整。 |
|
max_parallel_workers |
设置系统支持的最大并行数量,默认值为8,要注意将这个值设置得大于 max_worker_processes 将不会产生效果,因为并行工作者进程都是从 max_worker_processes 所建立的工作者进程池中取出来的。 |
|
max_parallel_maintenance_workers |
单一工具性命令能够启动的最大并行数。当前支持使用并行工作者的工具性命令是 CREATE INDEX,并且只有在构建B-树索引时才能并行,并且 VACUUM 没有 FULL选项。并行工作者从由 max_worker_processes 创建的进程池中取出,数量由max_parallel_workers控制,默认值为2。 |
|
max_parallel_workers_per_gather |
设置允许的最大并行查询数,并行查询可能消耗比非并行查询更多的资源,把这个值设置为0将会禁用并行查询执行,默认值是2。 |
|
wal_compression |
(WAL(Write Ahead Log)预写日志,是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性。)当这个参数为on时,如果 full_page_writes 为打开(默认值打开)或者处于基础备份期间,PostgreSQL服务器 会压缩写入到 WAL 中的完整页面镜像。压缩页面镜像将在 WAL 重放时 被解压。默认值为off。只有超级用户可以更改这个设置,打开这个参数可以减小 WAL 所占的空间且无需承受不可恢复的数据损坏风险, 但是代价是需要额外的 CPU 开销以便在 WAL 记录期间进行压缩以及在 WAL 重放时解压。 |
|
wal_writer_delay |
指定 WAL 写入器刷写 WAL 的频繁程度,以时间为单位。 在刷写WAL之后,写入器将根据 wal_writer_delay所给出的时间长度进行睡眠,除非被一个异步提交的事务提前唤醒。 如果最近的刷写发生在 wal_writer_delay 之前,并且小于 wal_writer_flush_after WAL的值产生之后,那么WAL只会被写入操作系统,而不会被刷写到磁盘,默认值是 200ms。 |
|
commit_delay |
在一次 WAL 刷写被发起之前,commit_delay 增加一个时间延迟。 如果系统负载足够高,使得在一个给定间隔内有额外的事务准备好提交,那么通过允许更多事务通过一个单次 WAL 刷写来提交能够提高组提交的吞吐量。 但是,它也把每次 WAL 刷写的潜伏期增加到了最多 commit_delay。 因为如果没有其他事务准备好提交,就会浪费一次延迟,只有在当一次刷写将要被发起时有至少 commit_siblings(默认是5个)个其他活动事务时,才会执行一次延迟。 另外,如果fsync被禁用,则将不会执行任何延迟。 |
|
|
|
|
标签:WAL,
max,
delay,
参数,
pg,
设置,
缓冲区,
默认值,
优化
From: https://www.cnblogs.com/braveman1021/p/16976174.html