MySQL数据库优化之查询缓存(Query cache)

本文探讨了MySQL的查询缓存机制,包括缓存的工作原理、何时失效以及如何配置和监控。当query_cache_type设为1,MySQL会保存查询语句和结果到hash表。缓存非持久化,重启后消失。若查询包含不确定数据如CURRENT_DATE(),则无法缓存。写入数据会导致相关表的缓存失效。通过调整query_cache_limit和query_cache_size参数可配置缓存大小。通过show status命令可查看缓存使用情况,关注Qcache_hits和Qcache_lowmem_prunes等指标以评估缓存效果。
摘要由CSDN通过智能技术生成

MySQL缓存机制:

当MySQL开启了缓存模式(query_cache_type=1)后,mysql会把查询语句和查询结果保存在一张hash表中,下一次用同样的sql语句查询时,mysql会先从这张hash表中获取数据,如果缓存没有命中,则解析sql语句,查询数据库。 当缓存的数据达到最大值(query_cache_size) 后,mysql会把老的数据删除掉,写入信的数据。

mysql的缓存是非持久化的,当mysql重启后,缓存即消失。

如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那么查询完毕后则不会被缓存.所以,包含不确定数据的查询是肯定不会找到可用缓存的

缓存失效:

当某个表正在写入数据,则这个表的缓存(命中检查,缓存写入等)将会处于失效状态.在Innodb中,如果某个事务修改了表,则这个表的缓存在事务提交前都会处于失效状态,在这个事务提交前,这个表的相关查询都无法被缓存。

如何配置缓存:

用 show variables like '%query_cache%'  命令查看缓存是否开启:


参数解释:

have_query_cache :  表示此版本mysql是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT界鸟叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值