2011-10-09 96 views
14

我正在將我的所有數據從Heroku共享分貝數據庫遷移到Amazon RDS。在將所有內容切換到RDS之前,我在本地運行了一些測試,以確保我的應用可以正常工作。這些測試顯然減慢了RDS上查詢時間的速度。對於完全相同的要求,我得到:Heroku共享分貝對亞馬遜RDS性能

的Heroku,與Heroku的共享DB

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清楚地說明了他們的共享數據庫:

共享數據庫適用於生產應用程序的分段,測試和低規模 。

但它似乎比這個RDS實例更快,我支付80美元/月。 heroku的共享數據庫在本地運行嗎?因爲對我來說顯而易見的是,在我的heroku應用程序中本地運行的任何數據庫將比任何超出它的數據庫更快。亞馬遜表示,任何超過10毫秒的查詢都被視爲「慢速查詢」。但現在看來,每個查詢將會在至少 25毫秒的單獨往返從應用程序到亞馬遜的服務器+實際查詢時間。或者我錯過了什麼?

+0

此問題可能屬於ServerFault。好吧。 – samvermette

回答

13

據我所知,Heroku EC2實例運行在East可用區域,因此在同一個區域創建一個RDS實例就像給它一個本地數據庫(我相信這就是heroku共享數據庫的工作方式)。

直接在Heroku上爲我的應用程序設置臨時環境並將其連接到我的RDS實例後,查詢時間比我在本地測試時快得多(每個SQL查詢必須從本地機器到RDS服務器)。

唯一沒有答案的小問題是如何確定我的heroku應用程序在哪個特定的可用性子區域運行,因此我可以將其與我的RDS實例相匹配(儘管它可能與全球無關可用區)。

enter image description here

+2

爲了進一步複雜化,亞馬遜以每個用戶爲基礎隨機化區域。所以你的美國東部1b可能是我的東西1c –

+0

我正在尋找同樣的東西。我正在爲Heroku App創建一個新的RDS實例,並且我想知道我應該選擇哪個可用的子區域以獲得最佳性能(並且BW中不需要額外成本)。我確實選擇了美國東部1區,但其他地區,我們東1區,美東1區,美東1區和「無偏好區」,我不知道可以選擇。我應該離開「無偏好」還是應該選擇一個特定的? – Guillermo

+0

@Guillermo我認爲分區對性能影響不大。我選擇了「無偏好」,並且在查詢時間方面似乎沒有滯後。 – samvermette