mysql查询缓存

1.具体使用

什么是查询缓存?
mysql服务器提供的,用于缓存select语句结果的一种内部内存缓存系统。
如果开启了查询缓存,将所有的查询结果,都缓存起来,使用同样的select语句,再次查询时,直接返回缓存的结果即可
查看缓存设置情况,并给缓存空间设置大小:

mysql>show variables like 'query_cache%'; //查询缓存情况

在这里插入图片描述

  • 在Mysql目录下找到my.ini进行设置查询缓存
    设置缓存容量大小, 并打开查询缓存.
    目前不设置, 缓存也是打开的
    在这里插入图片描述
    设置完毕保存,并重启mysql.
    再进行查看的话, 可以发现缓存容量变化了.
    在这里插入图片描述

现在来进行实践下:
可以发现在查询同一个语句的时候, 第一次明显比第二次慢.
因为第一次是从数据库读取的, 而第二次是直接从缓存内读取的.
在这里插入图片描述
这次我们先对此语句做一次修改,然后再做一次查询.
可以发现在做修改后, 查询同一条数据, 第一次又变慢了.

因为在数据表数据有发生变化, 或者数据结构有发生变化,则会清空全部的缓存数据, 缓存就会失效了.
在这里插入图片描述

2.查询缓存空间使用情况

mysql>show status like 'Qcache%';

在这里插入图片描述
在这里插入图片描述

3.不使用缓存

当查询语句使用了不规则的表达式.
例如时间、随机数等;
(1)时间日期now()

mysql>select count(*),now() from emp where empno=4099993;

在这里插入图片描述
(2)随机数 rand()
order by rand() //rand()随机生成0,1的数, 每次查询出来排序都是随机的.

mysql>select * from emp where empno=4099993 order by rand() limit 5;

在这里插入图片描述

4.生成多个缓存

mysql缓存对大小写、空格都比较敏感, 相同的语句大小写不同, 空格量不同, mysql缓存都会把它当成一个新的sql语句再次对其缓存.

例如大小写不同, 他会对另外一条进行缓存处理.

mysql> select * from emp where empno=4099996;

mysql> select * from emp WHERE empno=4099996;

在这里插入图片描述

5.禁用缓存

在查询语句中加入
sql_no_cache 该语句就不会使用缓存了.

mysql> select sql_no_cache * from emp WHERE  empno=4099996;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值