MySQL查询缓存
一.mysql的查询缓存
1.查询缓存的命中率计算:
Qcache_hits/(Qcache_hits + Com_select)
二.查询缓存进行调优
1.Query_cache_type,这个选项表示缓存是否被激活
取值为ON,OFF,DEMAND,DEMAND的意思是包含了SQL_CACHE选项的查询才能被缓存
2.Query_cache_size,分给给查询缓存的总内存,以字节为单位,他必须是1024的倍数
3.Query_cache_min_res_unit,分配缓存块的最小值
4.Query_cache_limit,限制了mysql存储的最大结果,默认是1m,如果在缓存的过程中超过了限制,Qcache_not_cached的值被增大
5.Query_cache_wlock_invalidate,是否缓存其他连接已经锁定了的表,默认是OFF.
三.减少碎片
仔细的选择Query_cache_min_res_unit的值,可以用以下公式获取参考值
(query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache得到一个平均的大小
移除碎片:FLUSH QUERY CACHE,这个命令不会从缓存中移除查询,只有RESET QUERY CACHE才会这么做
四.如果临时禁用缓存
可以将query_cache_size设置为0,因为改变query_cache_type不会影响已经打开的连接
五.通用缓存优化
1.不要让query_cache_size过大,256m已经足够了
2.使用较小的表
3.成批写入操作
4.写入过多的数据库,适合关闭缓存