MySQL查詢快取引數詳解

chenfeng發表於2016-09-08
查詢快取方面主要涉及兩個引數,query_cache_size用於設定MySQL的查詢快取(query cache)大小,query_cache_type用於設定使用查詢快取的型別,
可以用以下命令檢視具體使用情況:
mysql> show global status like 'qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 1         |
| Qcache_free_memory      | 195024544 |
| Qcache_hits             | 0         |
| Qcache_inserts          | 3         |
| Qcache_lowmem_prunes    | 0         |
| Qcache_not_cached       | 121       |
| Qcache_queries_in_cache | 1         |
| Qcache_total_blocks     | 4         |
+-------------------------+-----------+
8 rows in set (0.00 sec)


相關引數解釋如下:
Qcache_free_blocks:快取中相鄰記憶體塊的個數。數目大說明可能有碎片。flush query cache會對快取中的碎片進行整理,從而得到一個空閒塊。
Qcache_free_memory:快取中的空閒記憶體。
Qcache_hits:多少次命中,透過這個引數可以檢視query cache的基本命中效果。
Qcache_inserts:每次插入一個查詢時就增大,命中次數除以插入次數就是非命中率。
Qcache_lowmem_prunes:多少條query因為記憶體不足而被清理出query cache,透過Qcache_lowmem_prunes和Qcache_free_memory引數相互結合,能夠
更清楚地瞭解到系統中query cache的記憶體大小是否真的足夠,是否非常頻繁的出現因為記憶體不足而有query被換出的情況。
Qcache_not_cached:不適合進行快取的查詢數量,通常是由於這些查詢不是SELECT語句或用了now()之類的函式。
Qcache_queries_in_cache:當前快取的查詢和響應數量。
Qcache_total_blocks:快取中塊的數量。


關於query_cache的配置:
mysql> show variables like 'query_cache%';
+------------------------------+-----------+
| Variable_name                | Value     |
+------------------------------+-----------+
| query_cache_limit            | 1048576   |
| query_cache_min_res_unit     | 4096      |
| query_cache_size             | 195035136 |
| query_cache_type             | ON        |
| query_cache_wlock_invalidate | OFF       |
+------------------------------+-----------+
5 rows in set (0.00 sec)


各個欄位的解釋如下:
query_cache_limit:超過此大小的查詢將不再快取。
query_cache_min_res_unit:快取塊的最小值。
query_cache_size:快取大小值
query_cache_type:快取型別,決定快取什麼樣的查詢。
query_cache_wlock_invalidate:表示當有其它客戶端正在對MyISAM表進行寫操作時,讀請求是要等write lock釋放資源後再查詢還是允許直接
從query cache中讀取結果,預設為FALSE
查詢快取碎片率=Qcache_free_blocks/Qcache_total_blocks * 100%
查詢快取利用率=(query_cache_size - Qcache_free_memory)/query_cache_size * 100%
查詢快取利用率在25%以下,說明query_cache_size設定的過大,可適當減小。
查詢快取命中率=(Qcache_hits - Qcache_inserts) / Qcache_hits * 100%

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2124725/,如需轉載,請註明出處,否則將追究法律責任。

相關文章