一、概论
查询缓存简单来说就是缓存SQL语句和查询的结果,如果运行相同的SQL语句,服务器会直接从缓存取,
而不用再去解析SQL和执行SQL。
查询缓存会存储最新的数据,而不会返回过期的数据,当数据被修改之后,缓存中相关的数据回呗清除。
所以经常更新的数据不适合用缓存,对于不经常更新且大量重复的Sql,缓存会提高很多的性能。
mysql的性能优化方面经常涉及缓存区Buffer 和缓存Cache ,mysql通过内存中建立缓存区和缓存来提升MYSQL的性能。
对于InnoDB存储引擎,mysql使缓冲池Buffer Pool的方式来缓存数据和索引
对于MyISAM数据库,mysql使用缓存的方式来缓存数据和索引。
这些缓存能被所有的会话共享,一旦某一个客户建立查询缓存,其他发送相同的SQL语句的客户端也可以使用这些缓存。
以下几种情况不会使用缓存:
1.大小写不同的查询语句。
select price from fruit
SELECT price FROM fruit;
2.子句不会使用缓存
SELECT price FROM fruit WHERE did IN (
SELECT did FROM fruit2
)
3.存储过程、触发器或者事件内部的一条语句
4.汉视图的查询语句
5.结果不确定的查询语句
如不确定函数 NOW() 或是CURRENT_DATE()
二、查看缓存信息
1.先查看查询缓存是否开启

如果没开启设置如下
set session query_cache_type=ON;
关闭的方法如下
set session query_cache_type=OFF
2.查看缓存是否可用
;show variables like 'hava_query_cache'
hava_query_cache 为YES是可用
3.如果SQL语句结果被缓存,系统会修改MYSQL的状态变量qcache_hits并将其值加1

现在16执行一次查询

再一次查看变量
浙公网安备 33010602011771号