为什么我们的Rails数据库查询速度很慢,尽管有Heroku数据库缓存



我们以前使用过Heroku Basic数据库,但发现我们网站上涉及大量数据库查询的操作非常缓慢。3天前,我们升级到了Heroku起重机数据库,希望它能帮助解决这个问题。然而,查询似乎同样缓慢。即使连续两次运行相同的操作似乎也很慢,而由于缓存的原因,我预计它会很快。

我们的数据库大小只有15.4MB,而我们使用的Crane数据库提供了400MB的缓存。理论上,整个数据库似乎都可以缓存,从而提供非常快速的查询处理。应该是这样吗?我们如何着手解决或排除问题?此外,缓存磁盘是基于块的,还是基于查询的(即,我们是否必须运行两次完全相同的查询才能从缓存中受益?)

谢谢。

FYI我在Heroku Postgres团队工作。

通常,Postgres会缓存它从磁盘中提取的底层表数据,因此您必须至少对其进行一次操作才能将其加载到内存中。然而,如果您正在进行复杂的查询,缓存数据不会给您带来太多好处,有时Rails无法将足够的工作委派给数据库,从而导致应用程序CPU受限,数据库未得到充分利用。

我会深入优化您的查询和索引,让Postgres更好地发挥它的魔力。您可以从运行EXPLAINEXPLAIN ANALYZE开始,找出查询的哪一部分需要很长时间。

优化数据库使用率的好资源:http://www.freebsddiary.org/postgresql-analyze.php和http://wiki.postgresql.org/wiki/Performance_Optimization

在rails中使用EXPLAIN的示例:了解如何通过Postgres/rrails解释数据优化查询

对于这么小的数据库,您应该不会看到任何性能问题。我会对应用程序进行评测,并梳理出慢的部分,正如我在这里推荐的那样:Rails生产性能调整?

相关内容

  • 没有找到相关文章

最新更新