标签:
查询缓存
缓存机制简单的说就是缓存sql文本和查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要去解析和执行sql,如果表更改了,那么使用这个表的所有缓存查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括insert、update、delete、truncate、alter table、drop table或drop database等。这对频繁更新的表,查询缓存是不适合的,而对一些不常改变数据且大量相同的sql查询的表,查询缓存会节约很大的性能。
查询必须是完全相同的才能够被认为是相同的。另外,同样的查询字符串由于其他原因可能认为是不同的,使用不同的数据库、不同的协议版本或者不同的默认字符集的查询被认为是不同的查询并且分别进行缓存。
1、query cache开启方法
编辑mysql的my.cnf,添加如下内容,然后重启mysql:
2、query cache运行状态分析
show status like ‘Qcache%‘;
3、query cache设置状态分析
show variables like ‘%query_cache%‘;
4、几个率
query cache命中率=Qcache_hits / (Qcache_hits+Qcache_inserts)
查询缓存碎片率=Qcache_free_blocks / Qcache_total_blocks * 100%
--如果查询缓存碎片率超过20%,可以使用flush query cache; 整理缓存碎片
查询缓存利用率=(query_cache_size - query_free_memory)/ query_cache_size * 100%
--查询缓存利用率在25%以下的话说明query_cache_size设置过大,可适当减小;查询缓存利用率在80%以上而且query_lowmem_prunes > 50的话,说明query_cache_size可能有点小,要不就是碎片太多。
标签:
原文地址:http://www.cnblogs.com/yezhaohui/p/4201606.html