- select @@query_cache_type; 查询缓存状态 0 = off 关闭 1 =ON 开启 2 = DEMAND 当sql语句中有sql_cache 关键字才缓存
- 开启缓存(文件配置方法) 在mysql.ini 文件最后加入 query_cache_type = 1 query_cache_size = 600000 (命令方法->) set global query_cache_type = 1 (也可以 set session query_cache_type = ON) set global query_cache_size 600000
- 查看缓存设置情况 show variables like '%query_cache%' 包括命中率等待
- show status like '%Qcache_hits% ' 查询缓存命中累计次数 如果query_cache_size 为0 缓存没有效果
- query_cache_limit 如果查询结果大于该值,则不进行缓存
- show variables like '%query_cache%';查询缓存相关变量
- show status like '%Qcache%'查看缓存状态
- 查询缓存命中率的计算公式是:Qcache_hits/(Qcache_hits + Com_select)。
- query_cache_min_res_unit 默认4KB 如果设置大对大数据查询有好处,如果都是小查询容易生成内存碎片,
-
query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据 查询,就容易造成内存碎片和浪费。
查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。
查询缓存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%
查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且 Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。
查询缓存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%
示例服务器 查询缓存碎片率 = 20.46%,查询缓存利用率 = 62.26%,查询缓存命中率 = 1.94%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。
-
转载地址 http://www.111cn.net/database/mysql/63815.htm
myql 缓存
最新推荐文章于 2022-03-31 18:04:58 发布