• 关于QueryCache的一次打脸


    背景问题

      前一段时间给一套MySQL数据库加上了监控,运行一段时间后有人反馈监控到的insert,update,delete,select的数量中select的数量有像比

      本应该的量少了不少!

      我用的是Com_select这个status来监控的select语句的数量,应该不会有什么差错呀;没想到呀,没想到!那个数据库实例是开启了Query

      cache的,所以这个就扎心啦! 这种情况下Com_select只是记录了select语句中没有命中Query_cache的那一部分。

    默认情况下的select统计方式

      默认情况下没有开启Query_cache所以我们可以用Com_select这个status来监控MySQL处理的select语句总数;

      所以总的处理成功的select语句的数量就是 Com_select的值

    Query_cache开启情况下select的统计方式

      在Query_cache开启的情况下针对select语句的统计要分两种情况进行讨论

      1): 如果这条select语句命中了Query_cache那么Qcache_hits这个status就会加1,Com_select不受影响

      2):如果这条select语句没有命中Query_cache那么Com_select这个status加1,Querycache_hit不受影响

      所以总的select语句的数量就是Com_select + Querycache_hits 的值

      Query cache的命中率就是 Querycache_hits / (Com_select + Querycache_hits)

    -----

  • 相关阅读:
    视图的作用,视图可以更改么?
    数据库事务的四个特性及含义
    mysql 设置隔离级别
    如何避免事务的并发问题?
    事务控制语言(TCL)
    事务的并发问题有哪些?
    事务的隔离级别: 事务并发问题如何发生?
    DDL 语言
    DML 语言
    TRUNCATE、Drop、Delete 的用法
  • 原文地址:https://www.cnblogs.com/JiangLe/p/9734485.html
Copyright © 2020-2023  润新知