什么是查询缓存?
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%';