在解析一个查询之前,如果缓存开启,MySQL要检查它的缓存。这个操作是一个区分大小写的hash查找。在缓存中,如果两个相似的查询哪怕是一个单字节不一样,也不回匹配,并且这个查询就会到下一个阶段。
如果MySQL在查询缓存中找到一个匹配,在返回已经缓存的查询语句之前,必须要校验权限。因为MySQL已经存储了已缓存语句表的信息。所以这一步是可行的,就不需要解析查询语句。如果权限OK,MySQL从缓存中获取结果,并且发送给客户端,跳过了其他语句执行的过程了。这个查询语句就不被解析,优化或者执行。
在下一章会详细说到。