Heroku Postgres查询速度健全性检查。我做错了吗?

时间:2013-08-23 21:15:34

标签: ruby-on-rails postgresql activerecord heroku postgresql-performance

我在Heroku上运行一个rails网站,正在进行一些性能分析和改进。

我想知道是否有人在Heroku上分析Postgres性能的经验可以告诉我,我是否做了明显错误的事情,或者这个数据库调用是否真的预计会这么慢。

这是一个名为Cities的表上的SELECT,它有大约3000行。 country_id有一个索引。

这是image showing profiling of the slow call

如果您可以阅读图片,您会看到我正在调用SELECT name,slug,... FROM“Cities”WHERE“cities”。“country_id”= 151。

根据Miniprofiler,这次电话会议(在Heroku上制作)需要14.739秒。这个呼叫似乎需要2秒到25秒,并且该国家拥有的城市数量之间存在一定的相关性(2到50左右)。在开发过程中,它只需要几分之一秒。

我正在以10美元的计划运行Heroku托管Postgres。

现在我正在考虑将ajax加载到我的页面上使用此调用的内容,但对我而言,它仍然没有意义,因为它需要花费很长时间。

有人有什么想法吗?

作为参考,该网站可在www.istorical.com上找到,此次电话会在加载www.istorical.com/countries/russia

时发生。

如果您确实点击了实际网站,您可能会发现加载时间不长,这是因为只有在页面的缓存过期时才会进行此调用。

编辑:这是EXPLAIN (analyze,verbose,buffers) of the query

1 个答案:

答案 0 :(得分:1)

再运行一些解释分析测试,但是如果它们都像那样出来那么它就不是数据库了。该查询只需要20毫秒。

如果其他查询看起来没问题,那么数据库连接不是通用的。

该页面上的任何内容是否与远程服务器通信 - 获取数据/图像等?