源无极

导航

 

     一、概论

     查询缓存简单来说就是缓存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执行一次查询

 

 再一次查看变量

 

 

 

posted on 2019-11-03 00:38  源无极  阅读(108)  评论(0)    收藏  举报