可以通過下面的SQL查看當前查詢緩存相關參數狀態:
- show variables like '%query_cache%';

1) query_cache_type
查詢緩存類型:
0 表示始終不適用查詢緩存;
1 表示始終使用查詢緩存;
如果query_cache_type=1,而又不想利用查詢緩存中的數據,可以使用下面的SQL:
select SQL_NO_CACHE * from table where condition;
2 表示按需要使用查詢緩存。
如果query_cache_type=2,要使用緩存的話,需要使用SQL_CACHE開關參數:
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; -- 關閉所有打開的表,同事該操作將會清空查詢緩存中的內容。
