show variables like 'query_cache%'
query_cache_limit
如果單個查詢結果大於這個值,則不Cache
query_cache_size
分配給QC的內存。如果設為0,則相當於禁用QC。要注意QC必須使用大約40KB來存儲它的結構,如果設定小於40KB,則相當於禁用QC。QC存儲的最小單位是1024 byte,所以如果你設定了一個不是1024的倍數的值,這個值會被四捨五入到最接近當前值的等於1024的倍數的值。
query_cache_type
0 完全禁止QC,不受SQL語句控制(另外可能要注意的是,即使這裡禁用,上面一個參數所設定的內存大小還是會被分配);1啟用QC,可以在SQL語句使用SQL_NO_CACHE禁用;2可以在SQL語句使用SQL_CACHE啟用。
query_cache_min_res_unit
每次給QC結果分配內存的大小
show status like 'Qcache%'
Qcache_free_blocks
當一個表被更新之後,和它相關的cache blocks將被free。但是這個block依然可能存在隊列中,除非是在隊列的尾部。這些blocks將會被統計到這個值來。可以用FLUSH QUERY CACHE語句來清空free blocks。
Qcache_free_memory
可用內存,如果很小,考慮增加query_cache_size
Qcache_hits
自MySQL進程啟動起,cache的命中數量
Qcache_inserts
自MySQL進程啟動起,被增加進QC的數量
Qcache_lowmem_prunes
由於內存過少而導致QC被刪除的條數。加大query_cache_size,盡可能保持這個值0增長。
Qcache_not_cached
自MySQL進程啟動起,沒有被cache的只讀查詢數量(包括select,show,use,desc等)
Qcache_querIEs_in_cache
當前被cache的SQL數量
Qcache_total_blocks
在QC中的blocks數。一個query可能被多個blocks存儲,而這幾個blocks中的最後一個,未用滿的內存將會被釋放掉。例如一個QC結果要占6KB內存,如果query_cache_min_res_unit是4KB,則最後將會生成3個blocks,第一個block用來存儲sql語句文本,這個不會被統計到query+cache_size裡,第二個block為4KB,第三個block為2KB(先allocate4KB,然後釋放多馀的2KB)。每個表,當第一個和它有關的SQL查詢被CACHE的時候,會使用一個block來存儲表信息。也就是說,block會被用在三處地方:表信息,SQL文本,查詢結果。