从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当接收到一个和之前同样的查询,服务器将会从缓存中检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间,非常有用。
有时候,虽然你开启了Mysql查询缓存,但是如果你设置的查询缓存大小为0,这和没有开启缓存没什么区别。所以必须正确的设置才能真正打开查询缓存这个功能。
下面我用 mysql6.0 为例演示最常用的查询缓存设置
一: query_cache_type 使用查询缓存的方式
一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON
mysql> select @@query_cache_type; +——————–+ | @@query_cache_type | +——————–+ | ON | +——————–+
这样 当我们执行 select id,name from tableName; 这样就会用到查询缓存。
在 query_cache_type 打开的情况下,如果你不想使用缓存,需要指明select sql_no_cache id,name from tableName;
当然也可以禁用查询缓存:
mysql> set session query_cache_type=off;
二: 系统变量 have_query_cache 设置查询缓存是否可用
mysql> show variables like 'have_query_cache'; +——————+——-+ | Variable_name | Value | +——————+——-+ | have_query_cache | YES | +——————+——-+
上面的显示,表示设置查询缓存是可用的。
三: 系统变量 query_cache_size
表示查询缓存大小,也就是分配内存大小给查询缓存,如果你分配大小为0,
那么 第一步 和 第二步 起不到作用,还是没有任何效果。
mysql> select @@global.query_cache_size; +—————————+ | @@global.query_cache_size | +—————————+ | 16777216 | +—————————+
上面是 mysql6.0设置默认的,之前的版本默认是0的,那么就要自己设置下。
mysql> set @@global.query_cache_size=104857600;
这里设置为100M。
再次查看下
mysql> select @@global.query_cache_size; +—————————+ | @@global.query_cache_size | +—————————+ | 104857600 | +—————————+
显示我们新设置的大小,表示设置成功。
四: query_cache_limit 控制缓存查询结果的最大值
如果查询结果很大, 也缓存?这个明显是不可取的。
MySql 可以设置一个最大的缓存值,当你查询缓存数结果数据超过这个值就不会进行缓存。缺省为1M,也就是超过了1M查询结果就不会缓存。
mysql> select @@global.query_cache_limit; +—————————-+ | @@global.query_cache_limit | +—————————-+ | 1048576 | +—————————-+
这个是默认的数值,如果需要修改,就像设置缓存大小一样设置,使用set命令重新指定大小。
通过以上4个步骤就可以真正打开查询缓存,具体数值的大小和查询方式根据服务器配置和应用场景而定。但是,重启后就失效了,为了使配置永久有效,我们需要修改 /etc/my.cnf 文件,增加:
query_cache_type = 1 query_cache_size = 104857600 query_cache_limit = 1048576
然后重启 mysql 即可。
/etc/init.d/mysql restart
其它命令:
1.碎片整理
mysql> flush query cache;
2.清除缓存
mysql> reset query cache;
3.查看缓存状态
mysql> show status like 'qcache%';
4.查看缓存中有多少条数据
mysql> show status like 'qcache_q%';
原文链接:https://www.qiquanji.com/post/5223.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知