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性能压力基准测试工具sysbench的使用简介
Apr 21 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
mysql外连接与内连接查询的不同之处
Jun 03 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
js分页工具实例
2015/01/28 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
Python实现的几个常用排序算法实例
2014/06/16 Python
Python魔术方法详解
2015/02/14 Python
浅析使用Python操作文件
2017/07/31 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
浅析Python 条件控制语句
2020/07/15 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
捐款倡议书范文
2014/02/02 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
班委竞选稿范文
2015/11/21 职场文书
导游词之阆中古城
2019/12/23 职场文书