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 中,你可以監視查詢快取的性能:
Total number of queries =
查詢快取使用變長的塊,因而
注意:每個查詢最小需要兩個塊(一個用於儲存查詢純文字,另一個或多個用於儲存查詢結果)。同樣的,每個被一個查詢使用的表需要一個塊,但是,如果有兩個或更多的查詢使用同一張表,僅僅只需要分配一個塊就行了。
你可以使用狀態變數
使用 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 |
查詢快取中的塊的總數目 |
Qcache_inserts
+ Qcache_hits
+ Qcache_not_cached
. 查詢快取使用變長的塊,因而
Qcache_total_blocks
和 Qcache_free_blocks
可能顯示查詢快取的碎片。在 FLUSH QUERY CACHE
之後,只有剩餘一個單獨的(大的)閒置塊。 注意:每個查詢最小需要兩個塊(一個用於儲存查詢純文字,另一個或多個用於儲存查詢結果)。同樣的,每個被一個查詢使用的表需要一個塊,但是,如果有兩個或更多的查詢使用同一張表,僅僅只需要分配一個塊就行了。
你可以使用狀態變數
Qcache_lowmem_prunes
來諧調查詢快取尺寸。它計數被從快取中移除的查詢,該查詢的移除是為了釋放記憶體,以快取新增的查詢。查詢快取使用一個
least recently used
(LRU
) 策略來判斷從快取中移除哪個查詢。
留言
張貼留言