Mysql快取命中率
阿新 • • 發佈:2019-02-02
歡迎關注本人公眾號
MySQL快取命中率,網上說法不一,下面我說下我的看法,大家輕拍:
總的select查詢數等於com_select(沒命中) + qcache_hits(命中) + 解析錯誤的查詢。
再來看看Com_select變數:
[sql] view plaincopyprint?- mysql> show global status like'Com_select';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
-
| Com_select | 46 |
- +---------------+-------+
com_select等於qcache_inserts(快取失效) + qcache_not_cache(沒有快取) + 許可權檢查錯誤的查詢。
因此,
Mysql的查詢快取命中率 ≈ qcache_hits / (qcache_hits + com_select)
查詢快取變數:
[sql] view plaincopyprint?- mysql> show global status like'QCache%'
- +-------------------------+----------+
-
| Variable_name | Value |
- +-------------------------+----------+
- | Qcache_free_blocks | 1 |
- | Qcache_free_memory | 18856920 |
- | Qcache_hits | 3 |
- | Qcache_inserts | 20 |
- | Qcache_lowmem_prunes | 0 |
- | Qcache_not_cached | 26 |
-
| Qcache_queries_in_cache | 0 |
- | Qcache_total_blocks | 1 |
- +-------------------------+----------+
因此本例中的查詢快取命中率 ≈ 3/(3+46) = 6.12%
查詢快取變數含義:
Qcache_free_blocks |
目前還處於空閒狀態的 Query Cache中記憶體 Block 數目,數目大說明可能有碎片。FLUSH QUERY CACHE會對快取中的碎片進行整理,從而得到一個空閒塊。 |
Qcache_free_memory |
快取中的空閒記憶體總量。 |
Qcache_hits |
快取命中次數。 |
Qcache_inserts |
快取失效次數。 |
Qcache_lowmem_prunes |
快取出現記憶體不足並且必須要進行清理以便為更多查詢提供空間的次數。這個數字最好長時間來看;如果這個數字在不斷增長,就表示可能碎片非常嚴重,或者記憶體很少。(上面的free_blocks和free_memory可以告訴您屬於哪種情況)。 |
Qcache_not_cached |
不適合進行快取的查詢的數量,通常是由於這些查詢不是SELECT語句以及由於query_cache_type設定的不會被Cache的查詢。 |
Qcache_queries_in_cache |
當前快取的查詢(和響應)的數量。 |
Qcache_total_blocks |
快取中塊的數量。 |