Linux

mysql 5.1 - innodb - query_cache_size - 由於記憶體不足,從查詢記憶體中刪除了 9,418,108 個查詢

  • August 29, 2012

目前在 16GB 系統上執行 - Ubuntu 64 位。INnodb 緩衝池設置為 10GB。

Tuning-primer 顯示以下內容:

QUERY CACHE
Query cache is enabled
Current query_cache_size = 512 M
Current query_cache_used = 501 M
Current query_cache_limit = 4 M
Current Query cache Memory fill ratio = 97.87 %
Current query_cache_min_res_unit = 4 K
However, 9418108 queries have been removed from the query cache due to lack of memory
Perhaps you should raise query_cache_size

即刪除了超過 900 萬個查詢。系統正常執行時間為 8 天。我應該完全刪除查詢記憶體嗎?我們的數據庫總是處於繁重的 I/O 之下。

蒂亞

哦,是的,請務必禁用查詢記憶體(設置query_cache_size = 0)。為什麼 ???

查詢記憶體將始終與 InnoDB 對接。如果修改不影響其他事務的可重複讀取,如果 InnoDB 的 MVCC 允許從查詢記憶體中提供查詢,那就太好了。不幸的是,它沒有這樣做。

顯然,您有很多查詢很快就會失效並且沒有被重用。

對於 MySQL 4.0 下的 InnoDB,事務的查詢記憶體被禁用。對於 MySQL 4.1+,InnoDB 在允許基於每個表訪問查詢記憶體時扮演交通警察。

有關如何實際執行的更多資訊,請閱讀“高性能 MySQL(第二版)”一書的第 213-215 頁。

引用自:https://serverfault.com/questions/422546