我在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
时发生。如果您确实点击了实际网站,您可能会发现加载时间不长,这是因为只有在页面的缓存过期时才会进行此调用。
答案 0 :(得分:1)
再运行一些解释分析测试,但是如果它们都像那样出来那么它就不是数据库了。该查询只需要20毫秒。
如果其他查询看起来没问题,那么数据库连接不是通用的。
该页面上的任何内容是否与远程服务器通信 - 获取数据/图像等?