mysql中查询缓存优化以及慢查询

2023-11-16

1. 概述

开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存

2. 操作流程

在这里插入图片描述
1、客户端发送一条查询给服务器;
2、服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;
3、服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;
4、MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;
5、将结果返回给客户端。

3. 查询缓存配置

1、查看当前的MySQL数据库是否支持查询缓存:

SHOW VARIABLES LIKE 'have_query_cache'; 

在这里插入图片描述
2、查看当前MySQL是否开启了查询缓存 :

SHOW VARIABLES LIKE 'query_cache_type';

3、查看查询缓存的占用大小 :

SHOW VARIABLES LIKE 'query_cache_size';

4、查看查询缓存的状态变量:

SHOW STATUS LIKE 'Qcache%'; 

在这里插入图片描述
各个变量的含义如下:
在这里插入图片描述

4. 开启查询缓存

MySQL的查询缓存默认是关闭的,需要手动配置参数 query_cache_type , 来开启查询缓存。query_cache_type该参数的可取值有三个
在这里插入图片描述
在 /usr/my.cnf 配置中,增加以下配置 :
在这里插入图片描述
配置完毕之后,重启服务既可生效 ;
然后就可以在命令行执行SQL语句进行验证 ,执行一条比较耗时的SQL语句,然后再多执行几次,查看后面几次的执行时间;获取通过查看查询缓存的缓存命中数,来判定是否走查询缓存

5. 查询缓存SELECT选项

可以在SELECT语句中指定两个与查询缓存相关的选项 :
SQL_CACHE : 如果查询结果是可缓存的,并且 query_cache_type 系统变量的值为ON或 DEMAND ,则缓存查询结果 。
SQL_NO_CACHE : 服务器不使用查询缓存。它既不检查查询缓存,也不检查结果是否已缓存,也不缓存查询结果

例子:

SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;

6.查询缓存失效的情况

1) SQL 语句不一致的情况, 要想命中查询缓存,查询的SQL语句必须一致。

SQL1 : select count(*) from tb_item;
SQL2 : Select count(*) from tb_item;

2) 当查询语句中有一些不确定的时,则不会缓存。如 : now() , current_date() , curdate() , curtime() , rand() ,uuid() , user() , database() 。

SQL1 : select * from tb_item where updatetime < now() limit 1;
SQL2 : select user();
SQL3 : select database();

3) 不使用任何表查询语句。

select 'A';

4) 查询 mysql, information_schema或 performance_schema 数据库中的表时,不会走查询缓存。

select * from information_schema.engines; 

5) 在存储的函数,触发器或事件的主体内执行的查询。
6) 如果表更改,则使用该表的所有高速缓存查询都将变为无效并从高速缓存中删除。这包括使用 MERGE 映射到已更改表的表的查询。一个表可以被许多类型的语句,如被改变 INSERT, UPDATE, DELETE, TRUNCATE TABLE, ALTER TABLE, DROP TABLE,或 DROP DATABASE

性能测试中mysql的慢查询日志

性能测试中,通过接口查询数据库施压时,需要设置满足系统当前性能的sql查询时间,如果超出设定时间,我们认为这个sql就是需要优化的。
(1)我们可以通过 SHOW VARIABLES LIKE ‘slow_query%’; 查询是否开始慢查询日志功能
(2)查看默认设置中多长时间的查询呗认为是慢查询:
SHOW VARIABLES LIKE ‘long_query_time’;
(3)获取慢日志的方法1 - 通过sql语句修改,单词设置,重启服务后会回复默认设置:

       SET GLOBAL slow_query_log = ON; #关闭使用OFF
       SET GLOBAL long_query_time  = 10; #超过10秒认为是慢查询语句

(4)获取慢日志的方法2 - 通过修改配置文件,永久设置:
ps -ef |grep msyql – 查看mysql进程 ,找到mysqld的进程
cd 进入到bin的上一级目录 – mysql_23306。有一个.cnf文件 一般都叫my.cnf 这里叫 23306.cnf,根据安装方式的不同还有可能在etc的文件下
vim 23306.cnf 在 mysqld下新增log-slow-queries=dir\filename 和 long_query_time=n

参考链接 :
12.mysql中查询缓存优化 :

https://www.jianshu.com/p/ed86efbcd717

性能测试中mysql的慢查询日志 :https://www.jianshu.com/p/3f9ea9d64385

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql中查询缓存优化以及慢查询 的相关文章

随机推荐

  • Ubuntu 22.04 配置静态IP

    1 桥接模式 NAT模式 参考博客 虚拟机上网设置 桥接模式 NAT模式 2 interfaces配置文件 interfaces 5 file used by ifup 8 and ifdown 8 auto lo iface lo ine
  • 论文中图片加方框 matlab代码

    转自 http blog csdn net majinlei121 article details 52334171 加方框函数 cpp view plain copy function I rgb DrawRectangle I Left
  • pymysql介绍

    一 数据库介绍 概念 一个存放数据的仓库 这个仓库按照一定的数据结构组织 存放 管理数据 分类 关系型数据库 mysql sql server oracle DB2等 非关系型数据库 redis等 python操作数据库的方式 pymysq
  • 传统制造型企业如何实现数字化转型?

    传统制造企业可以通过采用技术和数据驱动的方法来实现数字化转型 以改善运营 提高效率并在快速发展的行业中保持竞争力 以下是他们可以遵循的步骤和策略 1 评估和战略制定 评估当前状态 首先评估制造流程 技术基础设施和数据管理系统的当前状态 确定
  • XSS攻击绕过过滤方法大全(转)

    XSS攻击绕过过滤方法大全 约100种 文章目录 XSS攻击绕过过滤方法大全 约100种 1 XSS定位器 2 XSS定位器 短 3 无过滤绕过 4 利用多语言进行过滤绕过 5 通过JavaScript命令实现的图片XSS 6 无分号无引号
  • windows用 tree命令查看目录文件夹结构

    windows用 tree命令查看目录文件夹结构 查看帮助 tree help tree dirsfirst filelimit 6 h t dirsfirst 目录优先展示 filelimit 6 文件夹下超过6个文件的将不展开 s 以字
  • 启动mysql服务的时候一直报ERROR! The server quit without updating PID file

    问题背景 最近在电脑的vmware上安装了个CentOS 7系统 并在系统中装了mysql 8 0 11 可是启动服务的时候一直报错 如下 root localhost etc service mysql start Starting My
  • CloudCompare二次开发(1)——获取指定高程的所有点

    目录 一 源码编译 二 制作流程 三 结果展示 本文由CSDN点云侠原创 原文链接 爬虫网站自重 一 源码编译 1 WIN10系统下VS2019编译CloudCompare2 12 4 二 制作流程 1 找到源码中的插件例子 主要支持三种插
  • 类什么时候被加载 java

    创建对象实例时 new 创建子类对象实例 父类也被加载 使用类的静态成员时 静态属性 静态方法
  • 软件工程—软件结构图笔记详谈

    一 定义 结构图 Structure Chart 简称SC图 是精确表达软件结构的图形表示方法 它以特定的符号表示模块 模块间的调用关系和模块间信息的传递 二 主要构成 模块 Module 用矩形框表示 框中写有模块的名字 说明模块的功能
  • 服务器ie浏览器总是未响应,win7电脑IE浏览器总是未响应怎么办 IE浏览器无响应原因解决方法...

    win7电脑IE浏览器总是未响应怎么办 IE浏览器无响应原因解决方法 2016 12 05 已有人学习 编辑 chenwei 来源 电脑技术吧整理 win7电脑IE浏览器总是未响应怎么办 IE浏览器无响应原因解决方法 我们在使用电脑的时候
  • Linux mysql启动失败 Job for mysqld.service failed because the control process exited with error code.

    一 查询mysql无法启动问题 service mysql start 启动mysql 报错 Job for mysqld service failed because the control process exited with err
  • outlook邮箱邮件内容乱码_outlook邮件乱码怎么转换

    造成邮件乱码的原因很多 但归纳起来不外乎有三种情况 一是操作系统和使用的软件设置不同导致的 二是发送邮件时发送程序采用不同的编码标准 如UU MIME BINHEX等 而你所用的操作系统程序没有能力将其解码 收到的邮件像 天书 一般 三是邮
  • 《Graph Neural Networks Foundations,Frontiers and Applications》第一部分第一章第1.2.2节翻译和解读

    书名 Graph Neural Networks Foundations Frontiers and Applications 图神经网络的基础 前沿和应用 出版社 Springer Berlin Heidelberg 作者 Lingfei
  • chatgpt赋能python:Python中如何写π

    Python中如何写 在Python中 写 Pi 即圆周率 可能是一个小小的挑战 但是 这个问题的答案相对比较简单 在本文中 我们将介绍如何在Python中计算 以及如何使用Python的数学库 math库 介绍 是一个十分重要的数学常数
  • 决策树与R语言(RPART)

    关于决策树理论方面的介绍 李航的 统计机器学习 第五章有很好的讲解 传统的ID3和C4 5一般用于分类问题 其中ID3使用信息增益进行特征选择 即递归的选择分类能力最强的特征对数据进行分割 C4 5唯一不同的是使用信息增益比进行特征选择 特
  • 自动寻路算法C语言,C语言实现A*算法

    CopyRight c HYTC Ltd All rights reserved Filename main c Creator GaoLei Version 0 0 Date 2011 06 15 QQ 38929568 Descript
  • 微信小程序中使用svga动画

    参考资料 https github com svga SVGAPlayer Web tree mphttps github com svga SVGAPlayer Web tree mp 也可以参考 我主要参考的上面的 https gith
  • runtime交换方法的正确姿势

    runtime交换方法的正确姿势 说到Objective C大家就会想到黑魔法runtime 不知道runtime是什么的看这里 runtime是开源的 源码在这里 本文主要讲解如何利用runtime正确的交换方法 将会提到两种方式去交换
  • mysql中查询缓存优化以及慢查询

    1 概述 开启Mysql的查询缓存 当执行完全相同的SQL语句的时候 服务器就会直接从缓存中读取结果 当数据被修改 之前的缓存会失效 修改比较频繁的表不适合做查询缓存 2 操作流程 1 客户端发送一条查询给服务器 2 服务器先会检查查询缓存