MySQL query_cache_type 参数与使用详解


Posted in MySQL onJuly 01, 2021

MySQL设置查询缓存的用意:

把查询到的结果缓存起来,下次再执行相同查询时就可以直接从结果集中取;这样就比重新查一遍要快的多。

查询缓存的最终结果是事与愿违:

之所以查询缓存并没有能起到提升性能的做用,客观上有如下两点原因

1、把SQL语句的hash值作为键,SQL语句的结果集作为值;这样就引起了一个问题如 select user from mysql.user 和 SELECT user FROM mysql.user

这两个将会被当成不同的SQL语句,这个时候就算结果集已经有了,但是一然用不到。

2、当查询所基于的低层表有改动时与这个表有关的查询缓存都会作废、如果对于并发度比较大的系统这个开销是可观的;对于作废结果集这个操作也是要用并发

访问控制的,就是说也会有锁。并发大的时候就会有Waiting for query cache lock 产生。

3、至于用不用还是要看业务模型的。

如果何配置查询缓存:

query_cache_type 这个系统变量控制着查询缓存工能的开启的关闭。

query_cache_type=0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存。

这个参数的设置有点奇怪,1、如果事先查询缓存是关闭的然而用 set @@global.query_cache_type=1; 会报错

ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type=1 to enable it

2、如果事先是打开着的尝试去闭关它,那么这个关闭也是不完全的,这种情况下查询还是会去尝试查找缓存。

最好的关闭查询缓存的办法就是把my.cnf 中的query_cache_type=0然后再重启mysql。

查询缓存相关的系统变量:

have_query_cache表示这个mysql版本是否支持查询缓存。

query_cache_limit 表示单个结果集所被允许缓存的最大值。

query_cache_min_res_unit每个被缓存的结果集要占用的最小内存。

query_cache_size用于查询缓存的内存大小。

如何监控查询缓存的命中率:

Qcache_free_memory查询缓存目前剩余空间大小。

Qcache_hits 查询缓存的命中次数。

Qcache_inserts 查询缓存插入的次数。

也就是说缓存的命中率为 Qcache_hits/(Qcache_hits+Qcache_inserts)

MySQL 相关文章推荐
MySQL的安装与配置详细教程
Jun 26 MySQL
MySQL 如何限制一张表的记录数
Sep 14 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
MySQL中order by的使用详情
Nov 17 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL中order by的执行过程
Jun 05 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 #MySQL
MySQL的Query Cache图文详解
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 #MySQL
mysql优化之query_cache_limit参数说明
Jul 01 #MySQL
MySQL中存储时间的最佳实践指南
Jul 01 #MySQL
MySQL连表查询分组去重的实现示例
Jul 01 #MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 #MySQL
You might like
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
域名查询代码公布
2006/10/09 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
vue-router单页面路由
2017/06/17 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
浅谈Python 函数式编程
2020/06/20 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
医务人员自我评价
2014/01/26 职场文书
保护环境的建议书
2014/03/12 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
公司晚会策划方案
2014/05/17 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
2014年领班工作总结
2014/11/25 职场文书
大队委员竞选稿
2015/11/20 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers