博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[MySQL优化案例]系列 -- 无法使用查询缓存
阅读量:5864 次
发布时间:2019-06-19

本文共 2285 字,大约阅读时间需要 7 分钟。

1. 先看当前的 QCACHE, hits 和 in_cache 均为 0
mysql>SHOW GLOBAL STATUS LIKE 'QCACHE%';+-------------------------+----------+| Variable_name           | Value    |+-------------------------+----------+| Qcache_hits             | 0        || Qcache_not_cached       | 1        || Qcache_queries_in_cache | 0        |+-------------------------+----------+mysql>SELECT * FROM `Weather` WHERE `AddTime` = 1185897600;
2. 第一次查询完之后,再来看下,not_cached 增加了 1, in_cache 变成 1,因为 SHOW GLOBAL STATUS LIKE 'QCACHE%' 本身不会放在 QCACHE 里的
mysql>SHOW GLOBAL STATUS LIKE 'QCACHE%';+-------------------------+----------+| Variable_name           | Value    |+-------------------------+----------+| Qcache_hits             | 0        || Qcache_not_cached       | 2        || Qcache_queries_in_cache | 1        |+-------------------------+----------+mysql>SELECT * FROM `Weather` WHERE `AddTime` = 1185897600;
3. 第二次查询完后,再来看看,hits 加 1,in_cache 仍为 1
mysql>SHOW GLOBAL STATUS LIKE 'QCACHE%';+-------------------------+----------+| Variable_name           | Value    |+-------------------------+----------+| Qcache_hits             | 1        || Qcache_not_cached       | 3        || Qcache_queries_in_cache | 1        |+-------------------------+----------+mysql>SELECT * FROM `Weather` WHERE `AddTime` = DATE_FORMAT(NOW(), '%Y-%m-%d');
4. 执行完上面的查询后看一下,QCACHE 没工作,in_cache 仍为 1,not_cached 增加了 2
mysql>SHOW GLOBAL STATUS LIKE 'QCACHE%';+-------------------------+----------+| Variable_name           | Value    |+-------------------------+----------+| Qcache_hits             | 1        || Qcache_not_cached       | 5        || Qcache_queries_in_cache | 1        |+-------------------------+----------+mysql>SELECT * FROM `Weather` WHERE `AddTime` = DATE_FORMAT(NOW(), '%Y-%m-%d');
5. 再验证一下,跟刚才的结论一样
mysql>SHOW GLOBAL STATUS LIKE 'QCACHE%';+-------------------------+----------+| Variable_name           | Value    |+-------------------------+----------+| Qcache_hits             | 1        || Qcache_not_cached       | 7        || Qcache_queries_in_cache | 1        |+-------------------------+----------+
总结,如果查询语句条件中带有 CURDATE()、CURRENT_TIME()、FOUND_ROWS() 等函数时,则无法试用查询缓存。具体的请查看MySQL手册的“5.13.1.?How the Query Cache Operates”部分;另外,存储过程/存储函数/触发器也无法用到查询缓存。
本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/308357,如需转载请自行联系原作者
你可能感兴趣的文章
给你一天时间,你会从最懂钱的这些人身上学点啥?
查看>>
一本CTO开源的工程师职业发展规划指南
查看>>
福利丨所有AI安全的讲座里,这可能是最实用的一场
查看>>
滴滴春节前裁员:内部人士称是重组人才体系 末尾淘汰
查看>>
IT基础架构又有新概念?可组合基础设施是什么?
查看>>
万科创始人王石出任华大基因联席董事长 协助汪建管理
查看>>
西藏林芝边境小康村迎藏历新年
查看>>
普悠玛号将开放卖站票 台铁局:安全测试报告合格
查看>>
广东法院公开裁判文书超350万份
查看>>
福建宁德自闭症儿童家长:有爱,我们不孤独
查看>>
CBA全明星赛再遭吐槽,是因为不用心吗?
查看>>
区块链应用网易星球将上线黑钻直接兑换,这是要复活的节奏吗
查看>>
看看100万程序员怎么评论:美国 IT 公司程序员会加班吗?
查看>>
库克:销量下滑,因为中国人都等着攒钱买iphone8
查看>>
java开发转行大数据开发的学习路径
查看>>
使用RecyclerView的两个非传统型崩溃
查看>>
Java 多线程设计模式之基础概念
查看>>
springboot(六):如何优雅的使用mybatis
查看>>
漫画:程序员的“情人”节应该这样度过
查看>>
并发容器之BlockingQueue
查看>>