十、查询缓存
1、具体使用
mysql服务器提供的,用于缓存select语句结果的一种内部内存缓存系统。
如果开启了查询缓存,将所有的查询结果,都缓存起来,使用同样的select语句,再次查询时,直接返回缓存的结果即可

查看缓存设置情况,并给缓存空间设置大小:
show variables like ‘query_cache%’; #查看缓存使用情况query_cache_size:缓存空间大小query_cache_type:是否有开启缓存

如何开启查询缓存,并设置缓存空间大小
在my.ini中对上边的两个变量进行配置:

配置完成,之后需要重启mysql,

查看缓存开启成功:show variables like ‘query_cache%’;

sql语句第一次执行没有缓存,之后就有缓存了

2、无缓存
1、缓存失效
数据表的数据(数据有修改)有变化 或者 数据表结构(字段的增、减)有变化,则会清空全部的缓存数据,即缓存失效。
update emp set job=’123456’ where empno=123456;

上图,执行了一个update语句,导致之前存在缓存(empno=1234567)被清空了
2、不使用缓存
sql语句有变化表达式,则不会生成/使用缓存。
例如有 时间信息、随机数等
select ename,job,now() from emp where empno=123456;

上图,在sql语句中有“时间”变化的表达式,则不使用缓存
select * from emp order by rand() limit 4;

上图,sql语句中有“随机数”的表达式,不给使用缓存
3、生成多个缓存
生成缓存的sql语句对“空格”、“大小写”比较敏感
相同结果的sql语句,由于空格、大小写问题就会分别生成多个缓存。
注意:相同结果的sql语句,由于大小写问题会分别生成缓存:
4、禁用缓存
sql_no_cache #不进行缓存#意思是当前查询结果不使用查询缓存;select sql_no_cache * from emp where empno=123456;

3、查看缓存空间使用情况
show status like 'Qcache%'; //查看缓存使用情况

如下图,再次使用一个缓存,并读取一次,发现缓存相关参数有变化:

