10

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

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

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

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

4

1 回答 1

6

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

不幸的是,这个缓存的性能不如他的操作系统缓存。如果您的数据很容易放入内存,请确保effective_cache_size足够高,然后尝试减少 shared_buffers

请注意,这不是灵丹妙药。适当的大小shared_buffers取决于您拥有多少数据、占用多少空间、您的查询类型、有多少内存用于排序等。您可以期望不时使用它来找到当前设置和数据库的最佳位置。

于 2013-08-31T08:16:49.593 回答