参数——内存缓冲大小
-
总缓冲区大小(必改)
通俗解释: PostgreSQL自己的内存缓冲区
show shared_buffers;默认值 128MB
- 加大到机器
总内存的25%,能达到最优性能
- 加大到机器
-
排序和散列的缓存区大小
show work_mem;默认值 4MB
- 加大后,可以进行更大的内存排序
- 对于统计的 去重distinct/哈希JOIN/分组聚合 等需求,可以在session会话级增大此参数至256MB或者512MB,会加快统计(统计前必须要建好索引)
SET work_mem='256MB';
-
有效缓冲大小(必改)
show effective_cache_size;默认值4GB
- 不会实际分配,只是告知优化器内核中可用的缓存量
- 更高的数值会 使
索引扫描更可能被使用 - 更低的数值会 使顺序扫描 更可能被使用
- 更高的数值会 使
- 设置为
- 内存的1/2 (正常保守的设置)
- 内存的3/4 (比较推荐)
- 不会实际分配,只是告知优化器内核中可用的缓存量
-
维护操作使用的内存大小
通俗解释: 所谓维护操作,是指“创建索引、添加外键”等
show maintenance_work_mem;默认64MB
- 加大后,能提升下面两种语句的执行效率
CREATE INDEX- ALTER TABLE
ADD FOREIGN KEY
- 加大后,能提升下面两种语句的执行效率
-
垃圾回收的内存大小
show autovacuum_work_mem;默认值 -1 (代表使用maintenance_work_mem的值)
- 加大后,能加速垃圾回收