在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:缓存中块的数量。