MySQL关闭查询缓存(QC)的两种方法
MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, or DROP DATABASE等操作时,之前的缓存会无效并且删除。这样一定程度上也会影响我们数据库的性能。所以对一些频繁的变动表的情况开启缓存是不明智的。还有一种情况我们测试数据库性能的时候也要关闭缓存,避免缓存对我们测试数据的影响。下面介绍两种不使用缓存的方案:
第一种:方案
首先查看数据库的缓存是开启的
查看缓存命中情况
然后对表查询了两次,可以看到,第二次明显的缓存了数据。然后查看命中缓存变为了1
下面就开始关闭缓存。关闭缓存有两种放法,一种临时的,一种永久的。
临时的直接再命令行执行
set global query_cache_size=0
set global query_cache_type=0
永久的修改配置文件my.cnf ,添加下面的配置即可。
query_cache_type=0
query_cache_size=0
我们用永久的修改方法
注意改完要重启数据库,然后再进去看看
然后开始查询 很明显没有命中缓存。
第二种方案:
再开启缓存的情况下我们对sql语句做一些改动
Select sql_no_cache count(*) from users; 不缓存
Select sql_cache count(*) from users; 缓存(也可以不加,默认缓存已经开启了)
首先查看数据库缓存开启中
缓存命中为0
然后开始查询,查询两次后发现缓存命中率依然为0,很明显没有查询缓存。
然后不加sql_no_cache 查询,很明显缓存命中为1,开始查询缓存了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性