在mysql中,Query Cache默認是打開的,能夠提升查詢效率。mysql
但這不表明開啓Query Cache就對mysql的性能有所提升。由於若是有大量的修改時,因爲修改形成cache失效,會給服務器形成更大的開銷。算法
控制緩存的配置是:query_cache_type,0:關閉,1:開啓,2:只有select 中明確指定SQL_CACHE才緩存。sql
須要注意的是Query cache對sql的大小寫敏感,由於Query Cache在內存中是以Hash結構來進行映射的,而Hash算法的基礎是sql語句的字符,因此任何sql語句的改變會從新cache。緩存
-- 指定不使用緩存 select SQL_NO_CACHE count() from t_user where tell = "153*******"; -- 指定使用緩存 select SQL_CACHE count() from t_user where tell = "153*******";
使用命令:show status like ‘qcache%’;服務器
Qcache_free_blocks:緩存中相鄰內存塊的個數。數目大說明可能有碎片。FLUSH QUERY CACHE會對緩存中的碎片進行整理,從而獲得一個空閒塊。函數
Qcache_free_memory:緩存中的空閒內存。性能
Qcache_hits:每次查詢在緩存中命中時就增大spa
Qcache_inserts:每次插入一個查詢時就增大。命中次數除以插入次數就是不中比率。code
Qcache_lowmem_prunes:緩存出現內存不足而且必需要進行清理以便爲更多查詢提供空間的次數。這個數字最好長時間來看;若是這個 數字在不斷增加,就表示可能碎片很是嚴重,或者內存不多。(上面的 free_blocks和free_memory能夠告訴您屬於哪一種狀況)對象
Qcache_not_cached:不適合進行緩存的查詢的數量,一般是因爲這些查詢不是 SELECT 語句或者用了now()之類的函數。
Qcache_queries_in_cache:當前緩存的查詢(和響應)的數量。
Qcache_total_blocks:緩存中塊的數量。