mysql查询缓存

本文详细介绍了MySQL查询缓存的工作原理、参数配置、数据失效时机、内存管理和使用策略。探讨了缓存条件,强调了完全相同的SQL语句、查询结果大小等因素对缓存的影响。还讨论了InnoDB与查询缓存的交互,并提供了性能评估指标和问题分析。
摘要由CSDN通过智能技术生成

一:缓存条件,原理

MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集,MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELECT语句和该查询语句的结果集做了一个HASH映射并保存在一定的内存区域中。当客户端发起SQL查询时,Query Cache的查找逻辑是,先对SQL进行相应的权限验证,接着就通过Query Cache来查找结果(注意必须是完全相同,即使多一个空格或者大小写不 同都认为不同,即使完全相同的SQL,如果使用不同的字符集、不同的协议等也会被认为是不同的查询而分别进行缓存)。它不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生同任何存储引擎的交互,减少了大量的磁盘IO和CPU运 算,所以有时候效率非常高。

查询缓存的工作流程如下:
1:命中条件

缓存存在一个hash表中,通过查询SQL,查询数据库,客户端协议等作为key.在判断是否命中前,MySQL不会解析SQL,而是直接使用SQL去查询缓存,SQL任何字符上的不同,如空格,注释,都会导致缓存不命中.

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

2:工作流程
  1. 服务器接收SQL,以SQL和一些其他条件为key查找缓存表(额外性能消耗)
  2. 如果找到了缓存,则直接返回缓存(性能提升)
  3. 如果没有找到缓存,则执行SQL查询,包括原来的SQL解析,优化等
  4. 执行完SQL查询结果以后,将SQL查询结果存入缓存表(额外性能消耗)

二:缓存参数

1:查看当前查询缓存相关参数状态:
SHOW VARIABLES LIKE '%query_cache%';

查询结果

2:缓存配置参数解释
1. query_cache_type: 查询缓存类型,是否打开缓存

可选项

  a、0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值