MySQL查询缓存认知

MySQL8.0的查询缓存已经被删除, 因此本节主要了解什么是查询缓存

很多数据库产品都能够缓存查询的执行计划,
对于相同类型的SQL就可以跳过SQL解析和执行计划分成阶段,
MySQL在某种场景下也可以实现,但是MySQL哎呦另一种不同的缓存类型:
缓存完成的select查询结果,也就是查询缓存。
在这里插入图片描述
为什么缓存这么重要,数据库居然不用查询缓存呢?
原因在于,我们能够对其进行控制的地方太少了,以至于在某种情况下,
我们在更新缓存的时候,会有很大的性能损耗,一般情况下,我们把查询缓存放在
应用层去做了,比如说我们可以通过JAVA去进行控制,或者使用Redis缓存,

我们可以通过命令
show variables like ‘%query_cache%’;
去查询缓存配置,如果是5.x的版本还存在,8.0已经没有了

mysql> show variables like '%query_cache%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | NO    |
+------------------+-------+
1 row in set, 1 warning (1.31 sec)

查询缓存在5.x的时候是默认打开的
比如说当你发现某一个查询很耗时,即使没有建索引,
第一次是4S,你会发现第二次的时候会很快,这个SQL明明没有
优化过,现在怎么变得这么快,0.xS就出来了,这是因为他是从
查询缓存里面找的

说明:
1.可以使用 sql_no_cache select 命令不使用缓存查询,
例如select sql_no_cache * from tableA;
2.MySQL8.0已删除查询缓存功能

发布了82 篇原创文章 · 获赞 19 · 访问量 4635

猜你喜欢

转载自blog.csdn.net/ABCisCOOL/article/details/105449826