2011-03-28 13 views

回答

1

緩存=您查詢的答案從緩存(RAM)中檢索,如果他們在那裏的話。數據庫僅在緩存未命中時被訪問。索引=幫助數據庫更快速地回答一些查詢(簡單的定義,但足以滿足我的目的)。

因此,緩存通過根本不擊中數據庫來加快查詢速度,而索引加速了通過緩存並擊中數據庫的查詢。

您可以從緩存中獲得的好處取決於您的應用程序的具體情況。如果大多數查詢都要求輸入相同的數據,或者讀取的數據量少得多,那麼使用緩存層應該是個好主意。但是,即使在我見過的最佳場景中,15-20%的查詢仍然會到達數據庫。這意味着你不能單獨依靠緩存。

但最重要的是 - 數據庫索引很容易定義,通常只需要零維護,除非您變​​得龐大。緩存otoh要複雜得多 - 對於需要安裝,配置和維護memcached的緩存 - 金錢寶石。這不是火箭科學,但仍會在數據庫之上增加另一層複雜性。換句話說,這通常是不成熟的優化。 我建議您從數據庫索引開始,只有在發現您確實需要時才添加緩存層。

0

什麼都不能取代索引的需要。

緩存層可能會改變工作負載並降低數據庫負載,從而減輕缺失索引的影響。有了緩存層,您可能需要其他索引才能獲得最佳性能,但如果您想獲得最佳性能,仍然需要使用它們。