我正在将所有数据从 Heroku 的共享数据库移动到 Amazon RDS。在将所有内容切换到 RDS 之前,我在本地运行了一些测试以确保我的应用程序可以正常运行。这些测试显然减慢了 RDS 上的查询时间。对于完全相同的请求,我得到:
在 Heroku 上,使用 heroku 共享数据库:
Completed 200 OK in 98ms (Views: 0.7ms | ActiveRecord: 56.0ms)
本地,使用RDS 数据库实例
Completed 200 OK in 253ms (Views: 0.7ms | ActiveRecord: 127.9ms)
我在这里担心的是 ActiveRecord 时间。我错过了什么吗? Heroku 清楚地说明了他们的共享数据库:
Shared databases are suitable for staging, testing, and low-scale production applications.
但它似乎比我每月支付 80 美元的 RDS 实例要快。 heroku 的共享数据库是否在本地运行?因为对我来说很明显,在我的 heroku 应用程序中本地运行的任何数据库都将比它之外的任何数据库都快。亚马逊表示,任何超过 10 毫秒的查询都被视为“慢查询”。但现在看来,仅从应用程序到亚马逊服务器的往返 + 实际查询时间,每个查询都将花费 至少 25 毫秒。还是我遗漏了什么?
最佳答案
据我所知,Heroku EC2 实例在 East 可用性区域运行,因此在同一区域创建 RDS 实例非常类似于为其提供本地数据库(我相信这也是 heroku 的共享数据库的工作方式)。
直接在 Heroku 上为我的应用程序设置暂存环境并将其连接到我的 RDS 实例后,查询时间比我在本地测试时快得多(每个 SQL 查询都必须从我的本地机器到RDS 服务器)。
唯一 Unresolved 小问题是如何确定我的 heroku 应用程序在哪个特定可用性子区域中运行,以便我可以将它与我的 RDS 实例匹配(尽管它可能与全局可用性无关紧要区)。
关于ruby-on-rails - Heroku 共享数据库与 Amazon RDS 性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701026/