MySQL查詢快取的狀態和維護

查詢快取的狀態和維護

使用 FLUSH QUERY CACHE 命令,你可以整理查詢快取,以更好的利用它的記憶體。這個命令不會從快取中移除任何查詢。FLUSH TABLES 會轉儲清除查詢快取。

RESET QUERY CACHE 使命從查詢快取中移除所有的查詢結果。

你可以檢查查詢快取在你的 MySQL 是否被引進:

mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
1 row in set (0.00 sec)

在 SHOW STATUS 中,你可以監視查詢快取的性能:

變數 含義
Qcache_queries_in_cache 在快取中已注冊的查詢數目
Qcache_inserts 被加入到快取中的查詢數目
Qcache_hits 快取取樣數數目
Qcache_lowmem_prunes 因為缺少記憶體而被從快取中刪除的查詢數目
Qcache_not_cached 沒有被快取的查詢數目 (不能被快取的,或由於 QUERY_CACHE_TYPE)
Qcache_free_memory 查詢快取的閒置記憶體總數
Qcache_free_blocks 查詢快取中的閒置記憶體塊的數目
Qcache_total_blocks 查詢快取中的塊的總數目
Total number of queries = Qcache_inserts + Qcache_hits + Qcache_not_cached.
查詢快取使用變長的塊,因而 Qcache_total_blocksQcache_free_blocks 可能顯示查詢快取的碎片。在 FLUSH QUERY CACHE 之後,只有剩餘一個單獨的(大的)閒置塊。
注意:每個查詢最小需要兩個塊(一個用於儲存查詢純文字,另一個或多個用於儲存查詢結果)。同樣的,每個被一個查詢使用的表需要一個塊,但是,如果有兩個或更多的查詢使用同一張表,僅僅只需要分配一個塊就行了。
你可以使用狀態變數 Qcache_lowmem_prunes 來諧調查詢快取尺寸。它計數被從快取中移除的查詢,該查詢的移除是為了釋放記憶體,以快取新增的查詢。查詢快取使用一個 least recently used (LRU) 策略來判斷從快取中移除哪個查詢。

留言

這個網誌中的熱門文章

c語言-關於#define用法

PHP教學 - 資料型態(Data Type) - 上

CMD常用網管指令