mysql query cache 关闭_为什么要关闭MySQL query cache-Fun言

MySQL的query cache大部分情况下其实只是鸡肋而已,建议全面禁用。当然了,或许在你的场景下还是挺好的,还能发挥作用,那就继续使用吧,把本文当做参考就好。

06e8d233a4f5dc65438019c079fef09d.png

不过,可能有的人人为只需要把 query_cache_size 大小调整为 0 就可以了,可以忽略 query_cache_type 参数的值,反正它也是可以在线调整的。

事实果真如此吗?让我们来实际模拟测试下就知道了。

模拟以下几种场景

场景1:初始化时,同时设置 query_cache_size 和 query_cache_type 的值为 0;

场景2:初始化时,设置 query_cache_size = 0,但设置 query_cache_type = 1;

场景3:初始化时,设置 query_cache_size = 0,query_cache_type = 1,但是启动后立刻 修改 query_cache_type = 0

场景4:初始化时,设置 query_cache_size = 0,query_cache_type = 0,但是启动后立刻 修改 query_cache_type = 1

场景5:初始化时,设置 query_cache_size = xMB,query_cache_type = 1,但是启动后立刻 修改 query_cache_type = 0

经过测试,得到下面几个重要结论

结论1:想要彻底关闭query cache,务必在一开始就设置 query_cache_type = 0,即便是启动后将 query_cache_type 从 1 改成 0,也不行;

结论2:即便query_cache_size = 0,但 query_cache_type 非 0 的话,在实际环境中,可能会频繁发生 Waiting for query cache lock;

结论3:一开始就设置 query_cache_type = 0 的话,没有办法在运行 过程中再次动态启用,反过来则可以。也就是说,一开始是启用 query cache 的, 在运行过程中将其关闭,但事实上仍然会发生  Waiting for query cache lock,并没有真正的关闭;

详细测试过程

一、测试方法

采用sysbench模拟并发oltp请求:

sysbench --test=tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --rand-init=on --num-threads=64 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=1800 --max-requests=0 run

二、具体几种测试模式

1、一直关闭QC(query cache的简写,下同),即  query_cache_size = 0, query_cache_type = 0

测试过程中,一直都没有和query cache lock相关的状态出现,结果tps:2295.34

2、启用QC,但QC size 设置为 0,即:query_cache_size = 0,query_cache_type = 1

测试过程中,一直有 Waiting for query cache lock 状态出现,结果tps:2272.52

3、启用QC,但QC size为0,但启动时立刻关闭QC,即初始化时 query_cache_size = 0,query_cache_type = 1,启动后立刻修改 query_cache_type = 0

测试过程中,也一直有 Waiting for query cache lock 状态出现,结果tps:2311.54

4、关闭QC,但启动后立刻启用QC,即初始化时 query_cache_size = 0,query_cache_type = 0,启动后立刻修改 query_cache_type = 1

这时,会提示报错信息:

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

也就是说,如果一开始就关闭 QC 的话,是没办法在运行过程中动态再启用QC的。

5、启用QC,并设置QC size为256M,即 query_cache_size = 256M,query_cache_type = 1

这种情况下,在测试过程中一直有 Waiting for query cache lock 状态出现,并且结果tps也很差,只有 1395.39(几个案例中最差的一种)

6、启用QC,设置QC size为256M,但启动后立刻关闭QC,即 query_cache_size = 256M,query_cache_type = 1,启动后立刻修改 query_cache_type = 0

这种情况下,在测试过程中也一直有  Waiting for query cache lock 状态出现,结果tps:2295.79(在这个模式下,如果设置 query_cache_type = 2,效果也不佳)

第三种模式下,虽然看起来tps还不错,但毕竟上面只是简单模拟测试,实际情况下如果有频繁的query cache lock的话,tps肯定不会太好看。

因此,总的来说,想要获得较高tps的话,最好还是一开始就关闭QC,不要心存侥幸或者固守陈规。

query cache延伸阅读请见

参考推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 基础之java运算符

运算符,顾名思义就是用于计算的符号。按功能分为:赋值运算符、算术运算符、关系运算符和逻辑运算符按操作数的个数分类:单目运算符、双目运算符、三目运算符运算符的目:运算符能连接操作数的个数称为运算符的目运算符的优先级&…

直流电机调速仿真作业

本次调速仿真采用PID调节。首先要确定PID中的各项设计参数,仿真过程中采用临界比例度法确定了大概的Kp值。在若干次调整的过程中,发现加入微分环节后调整时间略有上升,故采用PI调节。调整参数确定为Kp75,Ki22。控制器部分的程序如下图所示。原…

mysql any 效率_关于mysql的性能优化

1.用 show status like value 查询mysql数据库性能2. 用 EXPLAIN select * from table 或 DESCRIBE select * from table 查看执行计划3.使用索引--使用 like关键字时 like %le索引不起作用,但 like le%索引可以起作用-- 使用关键字or时要求两个字段必须同为索引…

存储指针

- (void)addObserver:(__weak NSObject *)observer forContext:(void *)context { NSValue *valueContext [NSValue valueWithPointer:context]; dispatch_sync(self.queue, ^{ [self.trampolines setObject:observer forKey:valueContext]; }); }转载于:https://www.cnblogs.…

Java运算符优先级和表达式及数据类型转换

计算机程序在处理数据时会进行大量的计算,而数据的运算则需要借助运算符和表达式来完成。表达式是指由操作数和运算符组成的用于完成某种运算功能的语句子表达式Y X * ( Z 10 ) 表达式 其中Y、X、Z、10 称为操作数,、*、 称为运算符。 在…

Bugtags 2016-06-16 更新内容

增加版本管理功能 随着版本的增多,有些历史的版本不再使用,可将这些版本隐藏起来。操作步骤如下:点击设置 - 版本管理(管理员可见)- 取消勾选需要隐藏的版本即可。隐藏版本后,版本筛选中将不会显示&#xf…

MYSQL描述选课系统的问题与_mysql+php实现选课系统中遇到的问题及解决方法

首先是一些mysql 的基本命令删除表格 drop ;约束条件 :primary key 设置为主键unique 值唯一not null 非空foreighn key(key_name) references(key_name) 设置外键 default 设置默认值auto_increment 一般用于设置编号,随着…

Java 基础(条件结构)

Java 程序流程控制结构 顺序结构: 条件结构: 循环结构: 单分支if结构 选择 结构又称为分支结构 。 当 程序执行到分支判断的语句时,首先判断条件,然后根据条件表达式的结果选择相应的语句执行 。 分支 结构包括单分支、双分支和多分支三种形式。 语法…

直通车运营系统优化之账户结构设置

国庆期间,小2哥我好好的享受了好几天的日子,说实话,自从做了淘宝,就很少像这期间一样好好的享受了这段日子 。做淘宝有时候真的很苦逼,每天的工作时间比一个打工的还长,熬夜到凌晨才睡也是家常便饭&#xf…

mysql批量导入数据脚本_MySQL数据库批量导入脚本

//File: query.php//描述: 数据库批量导入脚本//功能: 可进行单行和批量插入.//作者: SworDs//QQ: 78623269//日期: 2005-1-21//其他:好老了啊,刚学PHP写的,连抄带查!2006.5.19从仓库里翻出来,。。。error_reporting(7);if ( function_exists…

原生JS封装ajax方法

http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿。这…

mysql 从库 问题_一篇文章帮你解决Mysql 中主从库不同步的问题

写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度,导致产生了主从延迟,出现了一点小事故。今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题。坐好了,准备发车&a…

深度学习代码练习

代码下载地址:https://github.com/daijifeng001/R-FCN 对应论文:Object Detection via Region-based Fully Convolutional Networks 1、代码里面给的数据库下载链接失效,需要去代码下载主页最下方给定的资源区下载。 2、按照要求一步一步运行…

rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

概述之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展。01消息队列Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队…

BZOJ 2763: [JLOI2011]飞行路线 spfa dp

题目链接&#xff1a; http://www.lydsy.com/JudgeOnline/problem.php?id2763 题解&#xff1a; d[x][kk]表示从s到x用了kk次免费机会的最少花费。 代码&#xff1a; #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #incl…

mysql快速删除大表数据部分数据_mysql删除大表的部分数据

mysql删除大表的部分数据好久没写博客。最近项目要上线。下班时间还得陪着老妈。实在没时间更新。今天有人提了一个问题&#xff0c; www.2cto.com一个表有1亿6000万的数据&#xff0c;有一个自增ID。最大值就是1亿6000万&#xff0c;需要删除大于250万以后的数据&#xff0c;…

读“硬件抽象层:HAL”的心得

1 HAL是建立在Linux驱动上的一套程序库&#xff0c;并不属于Linux内核&#xff0c;而是属于Linux内核层上的应用层。它的目的就是保护“私人财产”&#xff0c;避免应用程序直接访问Linux驱动。 2在Android系统中使用Linux驱动有两种方式。一种就是通过传统的方式直接与Linux交…

mysql所有版本介绍_mysql各个版本介绍

一、版本说明&#xff1a;MYSQL自从被ORCLE收购后&#xff0c;软件的版本也ORACLE化&#xff0c;整体的感觉就是服务的费用提高了很多&#xff0c;整体的软件的Supports也有相应的提高&#xff1b;MYSQL根据软件的功能可以分成三个版本&#xff1a;社区版、企业版、集群版。社区…

安装jdk源码

step1:打开选择Window->Preference step2:选择Java->Installed JREs step3:选中你所安装的jre&#xff0c;点击Edit&#xff0c;进入Edit JRE,如下所示 step4:选中rt.jar,点击Source Attachment step5:在对话框中&#xff0c;点击External Folder&#xff0c;选择你所安装…

d3js mysql_D3js技术文档 可视化展现

转载请注明http://www.cnblogs.com/juandx/articles/3885220.htmlD3js技术文档概述D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. For example, you can use D3 to generate an HTML …