mysql query cache总结及命中率计算公式

     我在这篇文章MySQL Query Cache 小结与使用举例,已经介绍过mysql query cache的基本知识了,有人问到。再次总结一下。
      对于mysql query cache,应该注意以下几点:
QC缓存的作用是很微小的
②只有 SELECT 语句被缓存。 插入、删除、更新当然不需要进行缓存了,同时 SHOW 命令和 存储过程 stored procedure (包括存储过程中的SELECT)也不会进入缓存结果集。
③查询必须绝对完全同,由于在查找缓存是否存在前不进行查询解析( Query Parser )所以查询并没有经过规范化处理(Normalized),因此缓存查找的过程是按字节顺序进行的 ( Byte by byte )。更具体点说吧:在每次查询时包不同的注释、多余的空格以及大小写不同等等,都不会指向同一个缓存结果集。
④Query Cache有如下规则,如果数据表被更改,那么和这个数据表相关的全部Cache全部都会无效,并删除之。这里“数据表更改”包括: INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, or DROP DATABASE等。
⑤不支持预备查询 prepared statement 和 游标 cursors 。
⑥查询结果必须完全一致,才能进入缓存结果集。比如:查询语句中有 UUID , RAND , CONNECTION_ID 等会动态改变查询结果集的函数,都不会进入缓存结果集的
⑦可以使用FLUSH QUERY CACHE语句来清理查询缓存碎片以提高内存使用性能。该语句不从缓存中移出任何查询。
RESET QUERY CACHE语句从查询缓存中移出所有查询。FLUSH TABLES语句也执行同样的工作。

比较合理的命中率计算公式:
hit rate=Qcache_queries_in_cache/Com_select
要调整到合适的配置,可以到MySQL Query Cache 小结与使用举例查看详细说明。

    Page :
  1. 1