低Postgres缓存命中率 - 数据大小或其他?

时间:2013-05-29 05:22:06

标签: postgresql heroku postgresql-9.1 postgresql-9.2 heroku-postgres

我刚刚将我的Heroku postgres数据库从Kappa计划(800MB RAM,postgres 9.1)升级到Ronin计划(1.7GB RAM,postgres 9.2),但性能下降了。

按照指南here,我检查了缓存命中率甚至低于我们的Kappa数据库(现在约为57%,之前为~69%)。我们的应用程序设计应该不错,因为我们之前已经看到了99%的缓存命中率。

建议数据集应该能够适应内存,现在不应该成为问题 - 我们的数据大小为1.27GB(至少大部分都应该适合)。

由于数据大小导致缓存命中率低,还是我可以查看其他内容?或者仅仅是数据库缓存没有完全预热的情况? (已经差不多2天了)

1 个答案:

答案 0 :(得分:3)

如果你有足够的内存而且没有在db上运行太多其他内容,那么可能会改变的一件事是shared_buffers。共享缓冲区的作用是缓存经常使用的数据,以便在并非所有数据库都适合内存时最大化。

不幸的是,这个缓存的性能不如OS缓存。如果您的数据很容易适合内存,请确保effective_cache_size足够高,然后尝试减少 shared_buffers

请注意,这不是一个神奇的子弹。 shared_buffers的适当大小取决于您拥有的数据量,占用的空间量,查询类型,内存类型等内存量。你可以不时地玩这个,为你当前的设置和数据库找到最佳位置。