《高性能MySQL》第三版 P.204:
这里说一下,查询缓存的作用:
要点:
① 要比对SQL语句是不是一模一样,这个比对可以通过类似于hashmap.get(sql)来实现的(联想Java中的HashMap<String,String>),如果存在则直接拿到结果,如果没有则说明没有该sql查询的记录。
② 如果命中,不能直接返回结果,要检查一下用户权限。
PS,对缓存中的sql查询涉及的任何表进行修改,都会使缓存失效(其实也是一种特殊形式的更新),这也是为什么MySQL不推荐使用缓存,甚至在MySQL 8中移除了该功能,总的来说:收益太小。
更为具体的可以参考:
一条SQL语句在MySQL中如何执行的