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主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
详解GaussDB for MySQL性能优化
May 18 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
MySQL 数据 data 基本操作
May 04 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
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
python 自动提交和抓取网页
2009/07/13 Python
python遍历类中所有成员的方法
2015/03/18 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python daemon守护进程实现
2016/08/27 Python
python连接数据库的方法
2017/10/19 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python实现图片九宫格分割
2021/03/07 Python
python小白切忌乱用表达式
2020/05/29 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
太太口服液广告词
2014/03/20 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
婚庆司仪开场白
2015/05/29 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
导游词之峨眉山
2019/12/16 职场文书