2013-02-08 35 views
0

Heroku中的基本生產級數據庫實現了400Mb緩存。我有一個生產站點運行2個dynos和一個讀寫相當繁重的工作者。數據庫是我的應用程序的瓶頸。實際上,生產層Heroku數據庫比起始數據庫要快多少?

在數據庫中執行搜索時,寫入數據庫將使許多查詢失效。

我的問題是,考慮到9美元起始價格和50美元一級生產數據庫之間的價格大幅上漲,遷移可能會顯着提高性能?

+1

這句話「人生中沒有什麼是自由的」,所以你對免費有什麼期望......當然,如果你付出的話,你會看到一種改進。並且從經驗上講,差異是非常顯着的 – Richlewis 2013-02-08 13:36:55

+0

目前我們正在9美元的起始層上配備2個dynos和1名工人。該網站很慢,但預算緊張,所以我想明智地升級。 「非常明顯」聽起來不錯。 – superluminary 2013-02-08 13:43:51

+0

當你說「非常明顯」時,你是否有任何個人經驗數據?我們正在談論5%,還是50%。我知道用例之間差別很大。 – superluminary 2013-02-08 13:46:07

回答

4

「更快」是一個奇怪的指標。這意味着像CPU這樣的東西,但CPU並不總是數據庫中的一個重要因素,特別是如果你沒有執行重寫操作。您的基本數據庫有0mb的緩存 - 每個查詢命中磁盤。與此相比,即使是400MB的緩存也會有驚人的效果。檢查您的大致數據集大小;一般的經驗法則是您的數據集適合緩存。 Postgres會自己管理這個緩存,併爲大多數引用的數據進行優化。

最終,Heroku Postgres不銷售原始性能。生產層的好處有很多,但僅舉幾例:內存中緩存,叉/關支持,500個可用連接,99.95%的預計正常運行時間。

升級到生產層計劃時,您肯定會看到性能提升,但幾乎不可能聲稱它是「3倍速」或類似的,因爲這取決於您如何使用數據庫。

+1

更快就像在現實世界中執行查詢一樣。我剛剛冒險,響應時間縮短了大約70%。這是一個巨大的勝利! – superluminary 2013-02-08 15:33:16

+0

可能是一個緩存提升就在那裏,很高興的事情爲您改善!看看這個heroku cli插件:https://github.com/heroku/heroku-pg-extras它可以給你一些洞察緩存和索引使用 – catsby 2013-02-08 16:12:54

2

這確實是一個陡峭的一步,所以問題真的是瓶頸有多糟?這將花費你40美元的額外費用,但是一旦你的應用程序再次順利運行,它也意味着更多的收入。當然你也可以考慮其他的託管服務,但我個人喜歡Heroku最好(儘管更便宜的選項可用)。此外,你已經熟悉Heroku。有在Heroku devcenter一些更多的信息,關於他們的不同的計劃:

https://devcenter.heroku.com/articles/heroku-postgres-plans

生產計劃

非生產應用程序或應用程序以最小的數據存儲,性能或可用性的要求可以選擇在兩個起始層計劃中的一個之間,dev和基本之間,取決於行的要求。但是,生產應用程序或需要生產層數據庫計劃功能的應用程序有多種可供選擇的計劃。這些計劃主要取決於內存數據緩存的大小。

緩存大小

每個生產層計劃的高速緩存大小構成的RAM給予Postgres的總量。雖然少量的RAM用於管理每個連接和其他任務,但Postgres將利用幾乎所有的RAM來實現緩存。

Postgres不斷管理您的數據緩存:您寫的行,您創建的索引以及Postgres保留的元數據。當查詢所需的數據完全在該緩存中時,性能非常快。從緩存數據中進行查詢通常比完整數據集快100-1000倍。

精心設計的高性能Web應用程序將有99%或更多的查詢從緩存中提供。

相反,不得不退回到磁盤至少要慢一個數量級。此外,具有大數據類型的列(例如大型文本列)通過TOAST在線外存儲,並且訪問大量TOAST數據可能會很慢。

相關問題