2013-01-15 166 views
1

對於起重機上的Heroku DB plans,緩存不是0字節。Heroku數據庫緩存

這是否意味着,在這些計劃,如果代碼中有

User.find(10) 

例如,然後將查詢的結果將被保存?從而提高數據庫查詢的性能?

+0

鏈接到有問題的Heroku文檔? –

+0

添加鏈接到DB計劃 –

回答

3

PostgreSQL沒有查詢結果緩存。除非Heroku已經在自定義內部PostgreSQL分支中增加了一個分支(非常不可能),否則很可能是磁盤緩存可用於數據庫,用於存儲從磁盤讀取的表和索引的內容,所以當它們不需要重新讀取時再次訪問。這是一個塊級高速緩存,而不是查詢級或行級高速緩存。

大量的RAM緩存對PostgreSQL的性能有很大的影響,特別是在像Amazon EC2那樣I/O性能差的設置上。

某些應用程序級別的工具,如Hibernate ORM和其他JPA實現維護查詢結果緩存,或者說實體緩存。我不知道ActiveRecord是否執行此操作,但是如果執行它,它將位於應用程序服務器端,而不是數據庫端。

+0

謝謝,基本上你說的是緩存是在數據庫機器上的RAM? –

+0

這就是我所期望的那樣並理解它,但我無法確定地證實這一點。我不知道它是否是'shared_buffers' +'effective_cache_size',總物理內存,或者是什麼。 –