2012-08-30 73 views
1

我有一個應用程序,當未優化時,將需要許多寫入到postgreSQL數據庫響應實時信息 - 多達1每秒!優化(和緩存?)postgreSQL在Django寫入

因此,我想緩存這個數據流 - 通過redis/redisco或memcache - 然後在我的postgreSQL數據庫中每5分鐘做一次bulk_create。

據我所知,django memcache將存儲在內存中,但是當需要寫入時可能會使memcache失效。

或者,我正在考慮將信息放入redis中,可能使用Redisco模型,並且每5分鐘對數據庫執行bulk_create。

3部分的問題:

  • 哪個選項是用於縮放長期的更好嗎?
  • 各有哪些優點/缺點?
  • 最後,有沒有人有我可以閱讀的任何參考資料/教程?

謝謝!

+0

每秒1次不會對postgres造成問題。我建議直接使用Postgres進行寫入,並使用Redis或Memcached緩存讀取內容。 –

+0

「當需要寫入時,可能會使memcache無效。」在寫入磁盤之前,可能會失去緩存。緩存寫入數據庫是非常危險的。它與[ACID](http://en.wikipedia.org/wiki/ACID#Durability)中的「D」相抵觸。 –

回答

3

不成熟的優化是萬惡之源。 PostgreSQL能夠處理繁重的混合讀/寫工作負載。從那裏開始,並根據需要開始探索其他選項,但使用高端服務器時,PostgreSQL 9.2出現時,您將能夠達到每秒大約14000次寫入(取決於查詢細節)。使用9.1時,您最多可以每秒處理大約3000次寫入,而差異與鎖定行爲有關。

尚未優化。如果你開始進入每秒數百次的寫入,那麼也許是值得的。但是,特別是如果這些都是簡單的寫入,你最好保持簡單的架構。