PostgreSQL 12 有哪些常用的配置参数?
PostgreSQL 12 有许多配置参数,下面为你介绍一些常用的配置参数及其作用:
内存管理相关参数
shared_buffers- 作用:这是 PostgreSQL 用于缓存数据块的共享内存区域。数据库在读取数据时,会优先从
shared_buffers中查找,如果找到则直接使用,从而减少磁盘 I/O 操作,提高查询性能。 - 建议:官方建议在有足够内存的系统上,将其设置为系统内存的 25%。例如,如果系统有 8GB 内存,可以将其设置为
2GB。
- 作用:这是 PostgreSQL 用于缓存数据块的共享内存区域。数据库在读取数据时,会优先从
work_mem- 作用:每个排序操作和哈希表在执行时可以使用的最大内存量。当进行
ORDER BY、GROUP BY、DISTINCT等操作时,如果数据量较大,可能会将部分数据存储到磁盘临时文件中,增加work_mem可以减少这种磁盘 I/O,提高操作性能。 - 建议:可以根据实际的查询负载和系统内存情况进行调整,一般可以设置为几十 MB 到几百 MB。
- 作用:每个排序操作和哈希表在执行时可以使用的最大内存量。当进行
maintenance_work_mem- 作用:在执行
VACUUM、CREATE INDEX等维护操作时可以使用的最大内存量。适当增加该参数可以加快维护操作的速度。 - 建议:通常设置为几百 MB 到几 GB,具体取决于系统内存和维护操作的频率。
- 作用:在执行
并行查询相关参数
max_parallel_workers- 作用:整个系统可以使用的最大并行工作进程数。这个参数限制了所有并行操作(包括并行查询和并行备份等)可以启动的工作进程总数。
- 建议:根据系统的 CPU 核心数进行设置,一般可以设置为 CPU 核心数的一半左右。
max_parallel_workers_per_gather- 作用:每个
Gather或Gather Merge节点可以启动的最大并行工作进程数。在 PostgreSQL 12 中,默认值从 2 增加到 4。 - 建议:可以根据实际查询的并行需求和系统资源进行调整,如果系统资源充足,可以适当增加该值。
- 作用:每个
日志管理相关参数
log_destination- 作用:指定日志输出的目标,可以是
stderr(标准错误输出)、csvlog(CSV 格式日志文件)、syslog(系统日志)等。 - 建议:如果需要详细的日志分析,可以选择
csvlog,方便后续使用工具进行处理。
- 作用:指定日志输出的目标,可以是
logging_collector- 作用:是否启用日志收集器。如果设置为
on,则会将日志输出到文件中;如果设置为off,则日志会输出到标准错误输出。 - 建议:通常设置为
on,以便于对日志进行管理和分析。
- 作用:是否启用日志收集器。如果设置为
log_statement- 作用:控制哪些 SQL 语句会被记录到日志中。可以设置为
'none'(不记录)、'ddl'(只记录数据定义语言语句,如CREATE、ALTER等)、'mod'(记录所有数据修改语句,如INSERT、UPDATE等)或'all'(记录所有 SQL 语句)。 - 建议:在开发和测试环境中,可以设置为
'all'以便于调试;在生产环境中,一般设置为'ddl'或'mod',避免产生过多的日志。
- 作用:控制哪些 SQL 语句会被记录到日志中。可以设置为
连接管理相关参数
max_connections- 作用:限制数据库可以同时接受的最大客户端连接数。
- 建议:根据应用程序的并发需求和系统资源进行设置,设置过高可能会导致系统资源耗尽,设置过低可能会导致客户端连接失败。
superuser_reserved_connections- 作用:为超级用户保留的连接数。即使
max_connections达到上限,超级用户仍然可以使用这些保留的连接登录数据库进行维护操作。 - 建议:一般设置为 3 - 5 个连接。
- 作用:为超级用户保留的连接数。即使
自动清理相关参数
autovacuum- 作用:是否启用自动清理机制。自动清理机制会定期对数据库中的表进行
VACUUM和ANALYZE操作,以回收被删除或更新行占用的空间,并更新统计信息。 - 建议:通常设置为
on,以保持数据库的性能和空间利用率。
- 作用:是否启用自动清理机制。自动清理机制会定期对数据库中的表进行
autovacuum_max_workers- 作用:控制自动清理进程的最大数量。在 PostgreSQL 12 中,默认值从 3 增加到 8。
- 建议:可以根据数据库的大小和更新频率进行调整,如果数据库更新频繁,可以适当增加该值。
浙公网安备 33010602011771号