mysql查询缓存

什么是查询缓存?

mysql服务器提供的,用于缓存select语句结果的一种内部内存缓存系统。

如果开启了查询缓存,将所有的查询结果,都缓存起来,使用同样的select语句,再次查询时,直接返回缓存的结果即可

查看缓存设置:show variables  like 'query_cache%';

query_cache_size:预留缓存空间大小

query_cache_type:是否有开启缓存

query_cache_type 

    查询缓存类型,有0、1、2三个取值。0则不使用查询缓存。1表示始终使用查询缓存。2表示按需使用查询缓存。 
    如果query_cache_type为1而又不想利用查询缓存中的数据,可以用下面的SQL: 
SELECT SQL_NO_CACHE * FROM my_table WHERE condition;
    如果值为2,要使用缓存的话,需要使用SQL_CACHE开关参数:
SELECT SQL_CACHE * FROM my_table WHERE condition;

缓存失效 

数据表的数据有变化(update/delete/add) 或者 数据表结构(字段的增、减)有变化,则会清空全部的缓存数据,即缓存失效。

适用场景:所以查询缓存适合有大量相同查询的应用,不适合有大量数据更新的应用

注意:如果第二次查询的SQL和第一次查询的SQL完全相同(注意必须是完全相同,即使多一个空格或者大小写不同都认为不同)且开启了查询缓存,那么第二次查询就直接从查询缓存中取结果。

查看缓存使用情况

show status like 'Qcache%'; 

 

原文地址:https://www.cnblogs.com/jdbeyond/p/11369220.html