PostgreSQL 的进程内存架构旨在高效管理资源并确保性能,包含若干关键组件:
- 共享内存:用于所有服务器进程需访问的数据,如缓存频繁访问数据页的共享缓冲池(shared_buffers),以及存储事务日志数据再写入磁盘的预写式日志缓冲(wal_buffers)。
- 本地内存:每个 PostgreSQL 后端进程(每个连接一个)有独立本地内存处理查询执行,关键组件包括用于排序和哈希表的 work_mem,以及用于 vacuum 和索引创建等维护任务的 maintenance_work_mem。
- 进程特定内存:每个进程按需动态分配内存用于查询解析、规划和执行,进程内内存上下文确保高效内存使用和清理。
- 临时文件:对于超出可用内存的操作(如大型排序或哈希连接),PostgreSQL 将数据溢出到磁盘临时文件。