Ruby on rails 为什么尽管有Heroku数据库缓存,Rails数据库查询仍然很慢?
我们以前使用过Heroku Basic数据库,但发现我们网站上涉及大量数据库查询的操作非常缓慢。我们三天前升级到Heroku Crane数据库,希望它能帮助解决这个问题。然而,查询似乎同样缓慢。即使连续两次运行同一个操作似乎也很慢,但由于缓存的原因,我希望它会很快 我们的数据库大小只有15.4MB,而我们使用的Crane数据库提供了400MB的缓存。理论上,似乎整个数据库都可以缓存,从而提供非常快速的查询处理。应该是这样吗?我们如何着手解决或排除问题?此外,缓存磁盘块是基于数据块的还是基于查询的(即,我们是否必须运行完全相同的查询两次才能从缓存中获益?)Ruby on rails 为什么尽管有Heroku数据库缓存,Rails数据库查询仍然很慢?,ruby-on-rails,ruby-on-rails-3,heroku,rails-activerecord,Ruby On Rails,Ruby On Rails 3,Heroku,Rails Activerecord,我们以前使用过Heroku Basic数据库,但发现我们网站上涉及大量数据库查询的操作非常缓慢。我们三天前升级到Heroku Crane数据库,希望它能帮助解决这个问题。然而,查询似乎同样缓慢。即使连续两次运行同一个操作似乎也很慢,但由于缓存的原因,我希望它会很快 我们的数据库大小只有15.4MB,而我们使用的Crane数据库提供了400MB的缓存。理论上,似乎整个数据库都可以缓存,从而提供非常快速的查询处理。应该是这样吗?我们如何着手解决或排除问题?此外,缓存磁盘块是基于数据块的还是基于查询的
谢谢。仅供参考,我在Heroku Postgres团队工作 一般来说,Postgres将缓存从磁盘提取的底层表数据,因此您必须至少对其进行一次操作才能将其加载到内存中。但是,如果您正在执行复杂的查询,缓存数据不会给您带来太多好处,有时Rails无法将足够的工作委托给数据库,从而导致应用程序CPU受限,数据库未得到充分利用 我会深入研究优化您的查询和索引,让Postgres更好地发挥其魔力。您可以从运行
EXPLAIN
和EXPLAIN ANALYZE
开始,找出查询的哪个部分花费了很长时间
优化数据库使用的良好资源:以及
在rails中使用EXPLAIN的示例:仅供参考,我在Heroku Postgres团队工作 一般来说,Postgres将缓存从磁盘提取的底层表数据,因此您必须至少对其进行一次操作才能将其加载到内存中。但是,如果您正在执行复杂的查询,缓存数据不会给您带来太多好处,有时Rails无法将足够的工作委托给数据库,从而导致应用程序CPU受限,数据库未得到充分利用 我会深入研究优化您的查询和索引,让Postgres更好地发挥其魔力。您可以从运行
EXPLAIN
和EXPLAIN ANALYZE
开始,找出查询的哪个部分花费了很长时间
优化数据库使用的良好资源:以及
在rails中使用EXPLAIN的示例:对于这么小的数据库,您不应该看到任何性能问题。 我将对应用程序进行概要分析,并梳理出缓慢的部分,正如我在这里推荐的那样:
对于这么小的数据库,您应该不会看到任何性能问题。 我将对应用程序进行概要分析,并梳理出缓慢的部分,正如我在这里推荐的那样: