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 kill不掉线程的原因
May 07 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
MySQL触发器的使用
May 24 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL5.7并行复制原理及实现
Jun 03 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
MySQL高级进阶sql语句总结大全
Mar 16 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
May 25 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
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
多广告投放代码 推荐
2006/11/13 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
如何使用angularJs
2017/05/08 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Pytorch中.new()的作用详解
2020/02/18 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
上班看电影检讨书
2014/02/12 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
单位政审意见范文
2015/06/04 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫