ruby-on-rails – Heroku共享db vs Amazon RDS Performance

我正在将所有数据从Heroku的共享数据库移动到Amazon RDS.在将所有内容切换到RDS之前,我在本地进行了一些测试,以确保我的应用程序正常运行.这些测试显示,在RDS上查询时间较慢.对于完全相同的请求,我得到:

在Heroku,与heroku共享db:

Completed 200 OK in 98ms (Views: 0.7ms | ActiveRecord: 56.0ms)

在本地,使用RDS db实例

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.

然而,似乎比这个RDS实例更快,我每月支付80 $. heroku的共享数据库是否在本地运行?因为对我来说,对于在我的heroku应用程序中本地运行的任何数据库都将比在其之外的任何数据库都快得多是非常明显的.亚马逊说,任何超过10ms的查询都被视为“慢查询”.但是现在似乎每个查询都将至少需要25ms的距离,从应用程序到亚马逊的服务器实际的查询时间.还是我错过了什么?

解决方法

根据我的理解,Heroku EC2实例运行在East可用区域,因此在同一个区域创建一个RDS实例就像给它一个本地数据库(我相信这是heroku的共享数据库如何工作).

在我的应用程序直接在Heroku上设置一个分段环境并将其连接到我的RDS实例后,查询时间要比在本地测试(每个SQL查询必须从本地计算机到RDS服务器的往返)快得多,.

没有答案的唯一的小事情是如何确定我的heroku应用程序在哪个特定的可用性子区域运行,所以我可以将其与我的RDS实例相匹配(尽管它可能与全局可用性区域无关).

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...