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 21 MySQL
带你学习MySQL执行计划
May 31 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
MySQL中日期型单行函数代码详解
Jun 21 MySQL
MySQL 数据类型详情
Nov 11 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL 字符集 character
May 04 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
mysql幻读详解实例以及解决办法
Jun 16 MySQL
mysql sql常用语句大全
Jun 21 MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 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动态生成静态HTML网页的代码
2010/03/04 PHP
php教程之phpize使用方法
2014/02/12 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
JavaScript基本对象
2007/01/11 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
解决Python一行输出不显示的问题
2018/12/03 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python实现网页自动签到功能
2019/01/21 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
微型企业创业投资计划书
2014/01/10 职场文书
不假外出检讨书
2014/01/27 职场文书
校园文化建设方案
2014/02/03 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
演讲开场白和结束语
2015/05/29 职场文书
居安思危观后感
2015/06/11 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript