后端,MySQL

MySql的查询缓存机制

1、查询缓存机制的概述

MySql提供了一个机制,就是开启一个叫Qcache的空间缓存,这个缓存空间存在MySql编译器内存当中,有一个用户发起了一次请求编译器会判断当前是否已经发起过,如果发起过,编译器将不会继续在硬盘当中做出查找的响应,而是把Qcache当中的结果进行返回,如果用户发起的请求是第一次的发起,那么mysql依然会从硬盘当中查找数据,但是同时也会把查找结果保存到Qcache空间当中,准备下一次查询响应。

2、查看查询缓存是否已经开启

有时候我们需要知道这个查询缓存是否已经开启,我们可以使用以下命令进行查看:

show variables like '%query_cache_size%';

3、开启MySql的查询缓存

开启MySql查询缓存就是开启编译器中的Qcache空间,这个空间默认的情况下以字节的大小来计算空间的大小,所以我们需要使用字节换算来开启Qcache空间的大小

1k = 1024字节

1M = 1024k =1024*1024字节

如果希望表示一个64M的字节大小,那么我们可以换算成为以下形式公式:

64M = 64*1024*1024字节

开启MySql查询缓存的语法格式如下:

set global query_cache_size = 字节大小

需求:开启64M的查询缓存空间(Qcache),代码如下:

set global query_cache_size = 64 * 1024 * 1024

查询缓存的缺点是:如果查询缓存的累积空间达到64M的上限,那么mysqld就会自动释放Qcache空间,使得原来缓存消失,并且开启过多的Qcache空间会导致mysql编译器内存空间被占用过多,因此后来有人使用Memcache和redis进行取代,但是如果你的数据不算非常多,那么使用查询缓存是非常值得,因为查询缓存的开启方式和使用方式非常的简单

4、关闭mysql的查询缓存

关闭mysql的查询缓存有两种方法:

4.1、重启mysql服务

注意:不建议使用这种方法,不建议使用这种方法;如果生产环境项目,停止服务导致我们用户丢失,用户访问

4.2、使用命令关闭
set global query_cache_size = 0;(**建议使用该方法**)

回复

This is just a placeholder img.