[摘要]+-------------------------+---------+查看当前缓存的状态信息:Qcache_free_blocks表示查询缓存中处以重现状态的内存块数(碎片数量)。如果Qcach...
+-------------------------+---------+
查看当前缓存的状态信息:
Qcache_free_blocks
表示查询缓存中处以重现状态的内存块数(碎片数量)。如果Qcache_free_blocks 的值较大,则意味着查询缓存中碎片比较多,表明查询结果集较小,此时可以减小query_cache_min_res_unit的值。使用flush query cache 会对缓存中的若干个碎片进行整理,从而得到一个比较大的空闲块。缓存碎片率 = Qcache_free_blocks/ Qcache_total_blocks * 100%
Qcache_free_memory
表示当前MySQL服务实例的查询缓存还有多少可用内存。
Qcache_hits
表示使用查询缓存的次数,该值会依次增加。如果Qcache_hits比较大,则说明查询缓存使用的非常频繁,此时需要增加查询缓存。
Qcache_inserts
表示查询缓存中此前总共缓存过多少条select 语句的结果集。
Qcache_lowmen_prunes
表示因为查询缓存已满而溢出,导致MySQL删除的查询结果个数。如果该值比较大,则表明查询缓存过小。
Qcache_not_cached
表示没有进入查询缓存的select个数
Qcache_queryies_in_cache
表示查询缓存中缓存这多少条select语句的结果集
Qcache_total_blocks
查询缓存的总个数
缓存命中率的计算方式: 查询缓存的命中率 = Qcache_hits / Com_select * 100%
其中Com_select为当前MySQL实例执行select 语句的个数。一般情况下Com_select = Qcache_insert + Qcache_not_cached。而 Qcache_not_cached中包含有数据频繁变化而导致查询缓存失效的select语句,因此命中率一般来说较低。如果抛开失效的因素,查询缓存的命中率 = Qcache_hits / (Qcache_hits + Qcache_inserts) 如果使用这种公式计算出查询缓存的命中率比较高的话,这就意味着大部分select语句都命中了查询缓存。
通过如下命令查看当前系统一共执行了多少条select语句
mysql> show status like 'Com_select';
+---------------+-------+
关键词:MySQL优化之缓存优化详细说明(二)