数据大小还是其他?
我刚刚将我的Heroku postgres数据库从Kappa计划(800MB RAM,postgres 9.1)升级到Ronin计划(1.7GB RAM,postgres 9.2),但性能已经下降。
按照这里的指导,我检查了一下,缓存命中率甚至比我们的Kappa数据库还低(现在〜57%,之前〜69%)。 我们的应用程序设计应该不错,因为我们已经看到之前的缓存命中率为99%。
我们的建议是,数据集应该能够适应内存,现在不应该成为问题 - 我们的数据大小为1.27GB(至少大部分数据应该适合)。
由于数据大小,缓存命中率很低,还是有其他我可以研究的内容? 还是仅仅是数据库缓存没有完全预热的情况? (已经差不多2天了)
如果你有足够的内存并且没有在db上运行很多其他的东西,那么可能会改变的是shared_buffers。 共享缓冲区所做的就是缓存经常使用的数据,以便在不是所有数据库都适合内存时,它可以始终最大化。
不幸的是,这个缓存的性能不如OS缓存。 如果您的数据很容易适应内存,请确保effective_cache_size
足够高,然后尝试减少shared_buffers
请注意,这不是一个神奇的项目符号。 shared_buffers
大小取决于你有多少数据,占用多少空间,你的查询类型,有多少内存正在进行排序等等。 您可以期待随时使用这个功能来找到当前设置和数据库的最佳位置。