MySQL查询缓存的那些事

来源:互联网 发布:网络协议分析器下载 编辑:程序博客网 时间:2024/06/07 06:56

Query Cache(查询缓存,简称QC),是MySQL服务器端提供的用来缓存SQL语句执行结果的,仅适用于频繁提交同一个select语句,并且该表数据变化很少的场景。这里我只能说,理想很美好,现实很残酷。

benifit && cost

在这个Cache为王的时代,缓存都已经被玩坏了,下面是SQL语句的整个执行流程(出镜率很高)。

QC的原则是:最快的查询是直接返回结果,因为它缓存的是结果集,不是执行计划。提取下QC的流程,其实就是经典的cache架构。
这里写图片描述
1. 如果Cache命中,还需要检查当前用户是否对所有的表拥有权限( 确实很奇葩好么?)是才会返回结果,省去SQL语句的解析优化和执行过程。
2. 不命中,按正常流程走,得到执行结果扔缓存里,然后返回。
3. 缓存里放的是key-value映射,key是整个select语句计算得到的hash值,value是该条select语句的结果集。

0 0
原创粉丝点击