mysql查询缓存

ゝ一世哀愁。 2022-11-06 05:45 230阅读 0赞

mysql查询缓存

查询缓存(Cache&Buffer),这是MySQL的一个可优化查询的地方;如果开启了查询缓存,之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。

key 是查询的语句,value 是查询的结果。

则将查询结果直接返回给客户端;如果没有开启查询缓存或者没有查询到完全相同的SQL语句则会由解析器进行语法语义解析,并生成“解析树”。

  1. > 缓存select查询的结果和sql语句。
  2. 执行Select查询时,先查询缓存,判断是否存在可用的记录集,要求是否完全相同(包括参数值),这样才会匹配缓存数据命中。
  3. 即使开启查询缓存,以下SQL也不能缓存
  4. 1.查询语句使用SQL\_NO\_CACHE
  5. 2.查询的结果大于query\_cache\_limit设置
  6. 3.查询中有一些不确定的参数,比如now()
  7. show variables like '%query\_cache%'; //查看查询缓存是否启用,空间大小,限制等
  8. show status like 'Qcache%'; //查看更详细的缓存参数,可用缓存空间,缓存块,缓存多少等

注意:

查询缓存的失效非常频繁,对一个表的更新,这个表上所有的查询缓存都会被清空。很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。

对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务就是有一张静态表,很长时间才会更新一次。

比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。

好在 MySQL 也提供了这种“按需使用”的方式。你可以 set global query_cache_type =’DEMAND’; 对于默认的 SQL 语句都不使用查询缓存。

对于你确定要使用查询缓存的语句,可以用 SQL_CACHE 显式指定。

mysql> select SQL_CACHE * from T where ID=10;

MySQL 8.0 版本直接将查询缓存的整块功能删掉了,彻底没有这个功能了。

发表评论

表情:
评论列表 (有 0 条评论,230人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql查询缓存

    mysql查询缓存    > 查询缓存(Cache&Buffer),这是MySQL的一个可优化查询的地方;如果开启了查询缓存,之前执行过的语句及其结果可能会以 key-

    相关 [高性能MySQL]--查询缓存

    简单点说,就是对于相同SQL可以跳过SQL解析和执行计划生成阶段,直接返回缓存的结果。也就是缓存完整的SELECT 查询结果。 1. MySQL查询缓存: 缓存存放在一

    相关 Mysql 查询缓存

    Mysql 查询缓存 查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。

    相关 启用MySQL查询缓存

    1、启用MySQL查询缓存好处: 可以极大地减低数据库服务器的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%。 2、查看查询缓存情况:

    相关 MySQL 查询缓存

    查询缓存是用来缓存一个查询SQL的结果集,下次执行相同SQL时,直接从查询缓存里取得已有的结果,而不需要重新对SQL解析,优化,执行。 查询缓存是会话间共享的,即不同会话执

    相关 MYSQL-查询缓存

    查询的执行路径 ![MYSQL-查询缓存][MYSQL-] 过程: > 数据默认是放在磁盘上的文件,如果我们每次查询都要去磁盘上查找,效率是非常低下的。但是我们把