我正在 Heroku 上运行一个 Rails 网站,并且正在进行一些性能分析和改进。
我想知道是否有任何有经验在 Heroku 上分析 Postgres 性能的人可以告诉我我是否在做一些明显错误的事情,或者这个数据库调用是否真的可以这么慢。
这是一个名为 Cities 的表上的 SELECT,该表有大约 3000 行。country_id 上有一个索引。
这是一张显示慢速调用分析的图像
如果您可以阅读图像,您会看到我正在调用 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 时
如果您确实访问了实际站点,您可能会发现加载时间并不长,这是因为此调用仅在页面的缓存过期时进行。