💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 什么是查询缓存? mysql服务器提供的,用于缓存select语句结果的一种内部内存缓存系统。 如果开启了查询缓存,将所有的查询结果,都缓存起来,使用同样的select语句,再次查询时,直接返回缓存的结果即可 # 具体使用 查看缓存设置情况,并给缓存空间设置大小: > show variables like ‘query_cache%’; //查看缓存使用情况 query_cache_size:缓存空间大小 query_cache_type:是否有开启缓存 在my.ini(linux是my.cnf)中对上边的两个变量进行配置 ~~~ query_cache_type=1 query_cache_size=xxxx ~~~ 配置完成,之后需要重启mysql, 查看缓存开启成功:show variables like ‘query_cache%’; sql语句第一次执行没有缓存,之后就有缓存了 # 无缓存 ## 缓存失效 数据表的数据(数据有修改)有变化 或者 数据表结构(字段的增、减)有变化,则会清空全部的缓存数据,即缓存失效。 ~~~ update emp set job=’123456’ where empno=123456; ~~~ 执行了一个update语句,导致之前存在缓存(empno=1234567)被清空了 ## 不使用缓存 sql语句有变化表达式,则不会生成/使用缓存。 例如有 时间信息、随机数等 ~~~ select ename,job,now() from emp where empno = 123456; --这边有个时间函数now(),用不了缓存 select * from emp order by rand() limit 4; --sql语句中有“随机数”的表达式,不给使用缓存 ~~~ ## 生成多个缓存 生成缓存的sql语句对“空格”、“大小写”比较敏感 相同结果的sql语句,由于空格、大小写问题就会分别生成多个缓存 ## 禁用缓存 sql_no_cache 不进行缓存 ~~~ select sql_no_cache * from emp where empno=123456; ~~~ # 查看缓存空间使用情况 > show status like ‘Qcache%’; //查看缓存使用情况 ![](https://box.kancloud.cn/9a35b41934eb14cbaa0e58f0615e57a0_745x252.jpg)