Cache Money gem是否消除了對數據庫級索引(通常用於改進查詢檢索的索引)的需求?緩存資金與DB級別的指數?
0
A
回答
1
緩存=您查詢的答案從緩存(RAM)中檢索,如果他們在那裏的話。數據庫僅在緩存未命中時被訪問。索引=幫助數據庫更快速地回答一些查詢(簡單的定義,但足以滿足我的目的)。
因此,緩存通過根本不擊中數據庫來加快查詢速度,而索引加速了通過緩存並擊中數據庫的查詢。
您可以從緩存中獲得的好處取決於您的應用程序的具體情況。如果大多數查詢都要求輸入相同的數據,或者讀取的數據量少得多,那麼使用緩存層應該是個好主意。但是,即使在我見過的最佳場景中,15-20%的查詢仍然會到達數據庫。這意味着你不能單獨依靠緩存。
但最重要的是 - 數據庫索引很容易定義,通常只需要零維護,除非您變得龐大。緩存otoh要複雜得多 - 對於需要安裝,配置和維護memcached的緩存 - 金錢寶石。這不是火箭科學,但仍會在數據庫之上增加另一層複雜性。換句話說,這通常是不成熟的優化。 我建議您從數據庫索引開始,只有在發現您確實需要時才添加緩存層。
0
什麼都不能取代索引的需要。
緩存層可能會改變工作負載並降低數據庫負載,從而減輕缺失索引的影響。有了緩存層,您可能需要其他索引才能獲得最佳性能,但如果您想獲得最佳性能,仍然需要使用它們。
相關問題
- 1. 緩存資金ActiveRecord :: MissingAttributeError
- 2. 休眠緩存級別1
- 3. 一級休眠緩存,直接在DB
- 4. Rails資產管道指紋識別和頁面緩存
- 5. Rails的緩存日誌級別
- 6. 緩存在不同的記錄級別
- 7. 緩存/池/緩存池之間的區別指南
- 8. PHP緩存用戶級別變量
- 9. system.web.caching - 緩存在哪個級別維護?
- 10. 匿名URL級別緩存失敗
- 11. CXF 3高速緩存級別
- 12. 查詢級別2緩存拋出ClassCastException
- 13. RDBMS結果緩存vs應用程序級別緩存?
- 14. Zend db級聯刪除多個級別
- 15. NHibernate的二級緩存與收藏
- 16. 服務器級別的高速緩存數據
- 17. CATiledLayer和UIScrollView,緩存一些縮放級別的舊數據
- 18. 緩存輕量級數據
- 19. Haskell中類型級別的類型級別指示器函數
- 20. 2級緩存
- 21. 沃金與DB在Zend的frameword 2
- 22. Nginx的瀏覽器緩存與別名
- 23. 資源與緩存頭還是外出
- 24. 使用休眠與數據親和力2級緩存與榛
- 25. 得到保存記錄的Yii DB緩存ID緩存表
- 26. NHibernate第二級緩存與AppFabric
- 27. NHibernate第二級緩存與流行
- 28. 超級緩存與MovableType靜態發佈
- 29. Hibernate何時從二級緩存讀取以及從DB讀取?
- 30. 行級高速緩存「指數作爲表」
你害怕索引嗎? – 2011-03-28 06:18:03