首页 > 其他分享 >pg参数优化

pg参数优化

时间:2022-12-12 15:33:43浏览次数:48  
标签: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

相关文章

  • MySQL与MariaDB核心特性比较详细版v1.0,Oracle ACE主编(覆盖mysql 8.0/mariadb 10.3,包括
    注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载。MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf链接:https://pan.baidu.com/s/1qAcrxg8eRumRi3......
  • 9、electron子窗口向父窗口传递参数
    主要用到了js里面的 window.opener.postMessage(); 在html页可以直接运行,跟electron没有直接关系1、新建父窗口页“06父窗口接收子窗口.html”1<!DOCTYPEhtml>......
  • 新论文推荐:Auto-Keras:自动搜索深度学习模型的网络架构和超参数
    Auto-Keras是一个开源的自动机器学习库,由美国德州农工大学(TexasA&MUniversity)助理教授胡侠和他的两名博士生:金海峰、QingquanSong提出。Auto-Keras的终极目标是允许所......
  • 深入理解 伪类选择器 :nth-child(notation) 的参数
    简介:nth-child(notation)是CSS3规范中新增的一个伪类选择器,用于选中符合notaion表达式的目标“子元素”。该选择器左侧若有其他选择器,表示命中同时符合左侧条件以......
  • Python 接收解析用户输入参数
    方式一:importsys,getopt;if(__name__=='__main__')or(__name__=='main'):##参数0是文件名+后缀##参数一 Name=sys.argv[1];......
  • Webpack构建速度优化
    前言当我们的项目越来越大,webpack的配置项越来越多时,构建速度会越来越慢,所以我们需要通过一些配置来提高webpack的构建速度。目录缩小范围noParseIgnorePlugin优化......
  • [Impala 使用注意]--调整对应的参数(cdh-5.8.x版本)
    Impala的可伸缩性注意事项本节介绍了您的群集大小和数据量如何影响Impala表的SQL性能和架构设计。通常,增加更多的群集容量可以减少由于内存限制或磁盘吞吐量而造成的问 另......
  • pg9.6使用索引
    使用索引索引是用于快速数据检索操作的结构。在数据库世界中,索引与表相关联并用于有效定位数据,而无需查询数据库表中的每一行。如果表没有索引,则需要全表扫描才能找到记录,这......
  • Java方法(5)可变参数
           ......
  • 决策单调性优化
    数学推导比较多。但是充斥着对称美。单调队列/斜率优化,都是决策单调性优化。这篇主要说四边形不等式优化。还没写完。基本定义四边形不等式:对于二元函数\(w_{x,y}\),......