2016-12-01 50 views
-1

我已經看到,一些框架使用文件系統中的常用文件(不考慮這種情況下的內存緩存數據)從數據庫中緩存結果,並且一旦對數據庫進行更改就會使其無效一個特定的TTL結束了。由於數據庫也是一個文件,所以對於我來說這似乎有點多餘,除了在一個用例中對來自不同源的數據庫執行大量併發SELECT查詢以將負載分發到不同文件的情況。當緩存MySQL結果時收益和性能下降

除了體面的設計和抽象之外,是否有任何理由將這種緩存技術用於小型私人項目,而且流量和併發性幾乎可以忽略不計?

回答

0

經驗法則緩慢和使用:不要把緩存中的高速緩存的前面。 MySQL已經沒有工作來避免I/O;你描述的緩存似乎增加了I/O負載。此外,如果緩存機制增加了RAM消耗,那麼它會從RAM中拿走本來可以用於加速MySQL的內存。例如,不要將memcached放在與MySQL相同的服務器上。 Memcached需要大量的RAM。

KISS - 你是不是一個小項目?爲什麼它不可能獲得太多好處而使它複雜化。

如果您的應用程序很慢,那麼它可能是因爲

  1. 缺少的「複合」指數;
  2. 一個配方不好SELECT;
  3. 任何十幾個不常見的,但很容易解決,導致。

但很少因爲沒有使用額外的緩存。

0

緩存有助於兩兩件事:

  • 大數據集,複雜的查詢(連接,聯合,子查詢等)
  • 數據庫服務器查詢解析

的問題要問你自己在處理緩存時:

  • 我的數據經常變化嗎?
  • 如果我使用它,速度會提高嗎?

如果您的數據經常變化或性能增益可以忽略不計,我建議不要緩存。另一件事是維護並確保它沒有被破壞,等等。如果性能明顯更好,那就去做吧。

而且基於文件的緩存通常只對大數據集