• 黄聪:Mysql5.6缓存命中率


    MySQL缓存命中率,网上说法不一,下面我说下我的看法,大家轻拍:

    总的select查询数等于com_select(没命中) + qcache_hits(命中) + 解析错误的查询。

    再来看看Com_select变量:

    mysql> show global status like 'Com_select';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Com_select    | 46    |  
    +---------------+-------+  

    com_select等于qcache_inserts(缓存失效) + qcache_not_cache(没有缓存) + 权限检查错误的查询。

    因此,Mysql的查询缓存命中率 ≈ qcache_hits / (qcache_hits + com_select)

    查询缓存变量:

    mysql> show global status like 'QCache%'  
    +-------------------------+----------+  
    | Variable_name           | Value    |  
    +-------------------------+----------+  
    | Qcache_free_blocks      | 1        |  
    | Qcache_free_memory      | 18856920 |  
    | Qcache_hits             | 3        |  
    | Qcache_inserts          | 20       |  
    | Qcache_lowmem_prunes    | 0        |  
    | Qcache_not_cached       | 26       |  
    | Qcache_queries_in_cache | 0        |  
    | Qcache_total_blocks     | 1        |  
    +-------------------------+----------+ 

    因此本例中的查询缓存命中率 ≈ 3/(3+46) = 6.12%

    查询缓存变量含义:

    Qcache_free_blocks

    目前还处于空闲状态的 Query Cache中内存 Block 数目,数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。

    Qcache_free_memory

    缓存中的空闲内存总量。

    Qcache_hits

    缓存命中次数。

    Qcache_inserts

    缓存失效次数。

    Qcache_lowmem_prunes

    缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的free_blocks和free_memory可以告诉您属于哪种情况)。

    Qcache_not_cached

    不适合进行缓存的查询的数量,通常是由于这些查询不是SELECT语句以及由于query_cache_type设置的不会被Cache的查询。

    Qcache_queries_in_cache

    当前缓存的查询(和响应)的数量。

    Qcache_total_blocks

    缓存中块的数量。
  • 相关阅读:
    优秀的 Java 项目,代码都是如何分层的?
    计算机应届生月薪大多是多少?
    零基础要怎么学JAVA?
    自学 Java 怎么入门?
    Java学习路线总结,已Get腾讯Offer
    java培训出来的如何找工作?
    离散数学学习笔记
    一些公式
    一个模拟
    秦皇岛wannafly[数论]学习笔记
  • 原文地址:https://www.cnblogs.com/huangcong/p/5225317.html
Copyright © 2020-2023  润新知