mysql查询缓存解释说明

查询缓存解释说明

  • 缓存条件,原理

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

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

(1)缓存存在一个hash表中,通过查询SQL,查询数据库,客户端协议等作为key.在判断是否命中前,MySQL不会解析SQL,而是直接使用SQL去查询缓存,SQL任何字符上的不同,如空格,注释,都会导致缓存不命中.
(2)如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那么查询完毕后则不会被缓存.所以,包含不确定数据的查询是肯定不会找到可用缓存的
(3)内存的容量不一定是内存越大越好,要保持刚刚好!这与命中率有关

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

你可能感兴趣的:(MySQL数据库,MySQL数据库)