Mysql

我必須每 6 小時刷新一次查詢記憶體以保持快速查詢,這是否正常?

  • September 16, 2014

我正在執行 MySQL 5.5.37。我有一個 cronjob 設置為每 6 小時執行一次以刷新查詢記憶體。我意識到,如果我不這樣做,那麼記憶體就會變得支離破碎,平均查詢響應時間可能會增加一倍或三倍。我 95% 的數據都保存在 MyISAM 表中。

只要我執行 cronjob,我的平均響應時間在 15 毫秒到 30 毫秒之間。

這是正常行為嗎?或者它是否表明我有一個應該解決的潛在問題?也許我的 query_cache_min_res_unit 值太低,導致碎片?或者碎片是不可避免的並且刷新記憶體是完全正常的?

QUERY CACHE
Query cache is enabled
Current query_cache_size = 4.08 G
Current query_cache_used = 1.05 G
Current query_cache_limit = 3.24 G
Current Query cache Memory fill ratio = 25.79 %
Current query_cache_min_res_unit = 4 K

根據儲存引擎,刷新查詢記憶體是可以的

InnoDB 花時間對數據更改進行微觀管理。這包括交叉檢查查詢記憶體。

我有一個 2 年前的文章(Sep 05, 2012頻繁查詢記憶體失效的成本值得嗎?)我建議FLUSH QUERY CACHE通過 crontab 執行。

我也有最近的文章

解釋如果真正了解數據、結果集的平均大小以及查詢記憶體中應該有多少條目,如何嘗試設置query_cache_sizequery_cache_min_res_unit 。

除了對數據有這種預知之外,碎片化是不可避免的。

另一方面,如果您的所有數據都是 MyISAM,您應該花時間通過了解您的數據來設置 set query_cache_sizequery_cache_min_res_unit 。畢竟,MyISAM 不記憶體數據。它只記憶體索引。

結語

無論儲存引擎如何,執行FLUSH QUERY CACHE;都無需設置query_cache_sizequery_cache_min_res_unit。它可以快速消除碎片問題。如果您的數據集不是很大,請花時間調整數據和結果集的大小。您可以消除 crontab。

以下是更大的優勢

引用自:https://dba.stackexchange.com/questions/76763