一、工作原理
查询缓存的工作原理,基本上可以用二句话概括:
1.缓存SELECT操作或预处理查询(注释:5.1.17开始支持)的结果集和SQL语句;
2.新的SELECT语句或预处理查询语句,先去查询缓存,判断是否存在可用的记录集,判断标准:与缓存的SQL语句,是否完全一样,区分大小写;
二、查询缓存对什么样的查询语句,无法缓存其记录集,大致有以下几类:
a.查询语句中加了SQL_NO_CACHE参数;
b.查询语句中含有获得值的函数,包含自定义函数,如:CURDATE()、GET_LOCK()、RAND()、CONVERT_TZ等;
c.对系统数据库的查询:mysql、information_schema
d.查询语句中使用SESSION级别变量或存储过程中的局部变量;
e.查询语句中使用了LOCK
IN SHARE MODE、FOR
UPDATE的语句
f.查询语句中类似SELECT…INTO 导出数据的语句;
g.事务隔离级别为:Serializable情况下,所有查询语句都不能缓存;
h.对临时表的查询操作;
i.存在警告信息的查询语句;
j.不涉及任何表或视图的查询语句;
k.某用户只有列级别权限的查询语句;
三、查询缓存的优缺点:
不需要对SQL语句做任何解析和执行,当然语法解析必须通过在先,直接从Query Cache中获得查询结果。
查询缓存的判断规则,不够智能,也即提高了查询缓存的使用门槛,降低其效率;
Query Cache的起用,会增加检查和清理QueryCache中记录集的开销,而且存在SQL语句缓存的表,每一张表都只有一个对应的全局锁。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




