能夠經過下面的SQL查看當前查詢緩存相關參數狀態:緩存
1) query_cache_typespa
查詢緩存類型:blog
0 表示始終不適用查詢緩存;內存
1 表示始終使用查詢緩存;it
若是query_cache_type=1,而又不想利用查詢緩存中的數據,能夠使用下面的SQL:io
select SQL_NO_CACHE * from table where condition;table
2 表示按須要使用查詢緩存。select
若是query_cache_type=2,要使用緩存的話,須要使用SQL_CACHE開關參數:im
select SQL_CACHE * from table where condition;數據
2) query_cache_size,默認狀況下爲0,表示爲查詢緩存預留的內存爲0,則沒法使用查詢緩存。
2. show warnings; 查看MySQL警告。
3. 緩存條件
查詢緩存能夠看作是SQL文本和查詢結果的映射。若是第二次查詢的SQL和第一次查詢的SQL徹底相同(注意必須是徹底相同,即便多一個空格或者大小寫不一樣都認爲不一樣)且開啓了查詢緩存,那麼第二次查詢就直接從查詢緩存中取結果,能夠經過下面的SQL來查看緩存命中次數(是個累加值):
show status like 'Qcache_hits';
另外即便徹底相同的SQL,若是使用不一樣的字符集、不一樣的協議等也會被認爲是不一樣的查詢而分別進行緩存。
4. 緩存數據失效時機
在表結構或數據發生改變時,查詢緩存中的數據再也不有效。INSERT 、UPDATE、truncate、alter table、drop table或drop database會致使緩存數據失效。因此查詢緩存適合有大量相同查詢的應用,不適合有大量數據更新的應用。
5. 清理查詢緩存
flush query cache; -- 清理查詢緩存內存碎片
reset query cache; -- 從查詢緩存中移除全部查詢
flush tables; -- 關閉全部打開的表,同事該操做將會清空查詢緩存中的內容。