【问题标题】:Why are our Rails database queries slow in spite of Heroku database caching?尽管有 Heroku 数据库缓存,为什么我们的 Rails 数据库查询速度很慢?
【发布时间】:2013-02-03 19:35:06
【问题描述】:

我们之前使用过 Heroku Basic 数据库,但发现我们网站上涉及大量数据库查询的操作非常缓慢。我们在 3 天前升级到 Heroku Crane 数据库,希望它能帮助解决这个问题。但是,查询似乎同样缓慢。即使连续两次运行相同的操作似乎也很慢,但由于缓存,我希望它会很快。

我们的数据库大小只有 15.4MB,而我们使用的 Crane 数据库提供了 400MB 的缓存。从理论上讲,似乎整个数据库都可以被缓存,从而提供非常快速的查询处理。应该是这样吗?我们如何着手解决或排除问题?此外,缓存磁盘是基于块的,还是基于查询的(即,我们是否必须运行完全相同的查询两次才能从缓存中受益?)

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 heroku rails-activerecord


    【解决方案1】:

    仅供参考,我在 Heroku Postgres 团队工作。

    一般来说,Postgres 会缓存它从磁盘中提取的底层表数据,因此您必须至少对其进行一次操作才能将其加载到内存中。但是,如果您正在执行复杂的查询,缓存数据不会让您获得那么多,有时 Rails 无法将足够的工作委托给数据库,从而使您的应用程序 CPU 受限并且您的数据库未得到充分利用。

    我会深入研究优化您的查询和索引,让 Postgres 更好地发挥其魔力。您可以先运行 EXPLAINEXPLAIN ANALYZE 来确定查询的哪一部分需要很长时间。

    优化数据库使用的好资源:http://www.freebsddiary.org/postgresql-analyze.phphttp://wiki.postgresql.org/wiki/Performance_Optimization

    在 Rails 中使用 EXPLAIN 的示例:Understanding how to optimize a query via the Postgres/rails explain data

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多