PostgreSQL 12 有哪些常用的配置参数?

PostgreSQL 12 有许多配置参数,下面为你介绍一些常用的配置参数及其作用:

内存管理相关参数

  • shared_buffers
    • 作用:这是 PostgreSQL 用于缓存数据块的共享内存区域。数据库在读取数据时,会优先从 shared_buffers 中查找,如果找到则直接使用,从而减少磁盘 I/O 操作,提高查询性能。
    • 建议:官方建议在有足够内存的系统上,将其设置为系统内存的 25%。例如,如果系统有 8GB 内存,可以将其设置为 2GB
  • work_mem
    • 作用:每个排序操作和哈希表在执行时可以使用的最大内存量。当进行 ORDER BYGROUP BYDISTINCT 等操作时,如果数据量较大,可能会将部分数据存储到磁盘临时文件中,增加 work_mem 可以减少这种磁盘 I/O,提高操作性能。
    • 建议:可以根据实际的查询负载和系统内存情况进行调整,一般可以设置为几十 MB 到几百 MB。
  • maintenance_work_mem
    • 作用:在执行 VACUUMCREATE 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'(只记录数据定义语言语句,如 CREATEALTER 等)、'mod'(记录所有数据修改语句,如 INSERTUPDATE 等)或 'all'(记录所有 SQL 语句)。
    • 建议:在开发和测试环境中,可以设置为 'all' 以便于调试;在生产环境中,一般设置为 'ddl' 或 'mod',避免产生过多的日志。

连接管理相关参数

  • max_connections
    • 作用:限制数据库可以同时接受的最大客户端连接数。
    • 建议:根据应用程序的并发需求和系统资源进行设置,设置过高可能会导致系统资源耗尽,设置过低可能会导致客户端连接失败。
  • superuser_reserved_connections
    • 作用:为超级用户保留的连接数。即使 max_connections 达到上限,超级用户仍然可以使用这些保留的连接登录数据库进行维护操作。
    • 建议:一般设置为 3 - 5 个连接。

自动清理相关参数

  • autovacuum
    • 作用:是否启用自动清理机制。自动清理机制会定期对数据库中的表进行 VACUUM 和 ANALYZE 操作,以回收被删除或更新行占用的空间,并更新统计信息。
    • 建议:通常设置为 on,以保持数据库的性能和空间利用率。
  • autovacuum_max_workers
    • 作用:控制自动清理进程的最大数量。在 PostgreSQL 12 中,默认值从 3 增加到 8。
    • 建议:可以根据数据库的大小和更新频率进行调整,如果数据库更新频繁,可以适当增加该值。

posted on 2025-03-03 15:20  阿陶学长  阅读(138)  评论(0)    收藏  举报