PostgreSql 之 postgresql.conf 参数设置(一)
参考了阿里云最佳实践,和 postgresql 官方手册,研究学习设置 postgresql.conf 参数。(下列只列出需要修改的参数,默认值即为合适值的没有列出。)
连接设置
#连接设置 listen_addresses = '*' max_connections = 2000 superuser_reserved_connections = 10 复制代码
listen_addresses:指定服务器在哪些 TCP/IP 地址上监听客户端连接,默认值是localhost,只允许本地连接。
max_connections:决定数据库的最大并发连接数,默认值通常是 100 个连接,如果内核设置不支持(initdb时决定),可能会比这个数少。
superuser_reserved_connections:为超级用户保留的连接数,默认是 3,不能小于 max_connections。
内存设置
#内存设置 shared_buffers = 16GB max_prepared_transactions = 2000 work_mem = 8MB maintenance_work_mem = 2GB autovacuum_work_mem = 1GB dynamic_shared_memory_type = posix effective_cache_size = 32GB复制代码
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%或更大。
作者:脑子进水养啥鱼
链接:https://juejin.cn/post/7023694274218688525