Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么尽管有Heroku数据库缓存,Rails数据库查询仍然很慢?_Ruby On Rails_Ruby On Rails 3_Heroku_Rails Activerecord - Fatal编程技术网

Ruby on rails 为什么尽管有Heroku数据库缓存,Rails数据库查询仍然很慢?

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 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的示例:

对于这么小的数据库,您不应该看到任何性能问题。 我将对应用程序进行概要分析,并梳理出缓慢的部分,正如我在这里推荐的那样:
对于这么小的数据库,您应该不会看到任何性能问题。 我将对应用程序进行概要分析,并梳理出缓慢的部分,正如我在这里推荐的那样: