Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

参数——内存缓冲大小

  • 总缓冲区大小(必改)

    通俗解释: 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的值)

    • 加大后,能加速垃圾回收