托马斯·冯德拉:即使在繁忙系统中,也不要给Postgres分配过多内存

💡 原文英文,约1700词,阅读约需7分钟。
📝

内容提要

在繁忙系统中,过高的维护内存(maintenance_work_mem)设置可能导致性能下降。测试显示,无论并发任务数量如何,64MB的设置比1GB快约10%。这表明CPU缓存分配模型可能过于简单,实际使用情况更为复杂。

🎯

关键要点

  • 在繁忙系统中,过高的维护内存设置可能导致性能下降。
  • 测试显示,64MB的设置比1GB快约10%。
  • 较低的维护内存值可能将任务分割成适合CPU缓存的小块,从而提高速度。
  • CPU缓存是共享资源,活跃进程需要共享它。
  • 创建索引时,数据分割成小块可能导致后续合并的开销增加。
  • 在并发创建索引的情况下,64MB的设置仍然比1GB快。
  • 即使在有OLTP工作负载的情况下,64MB的设置仍然比1GB快。
  • 对于B树索引,增加维护内存可能会带来小幅提升,但相对内存使用量不成比例。
  • 在繁忙系统中,维护内存的相对性能变化不大,64MB和1GB的表现相似。
  • 可能的原因是每个进程对CPU缓存的使用方式不同,且随时间变化。
  • 结论是,即使在繁忙系统中,维护内存的行为变化不大,64MB和1GB的相对性能保持一致。
➡️

继续阅读