【Redis】【MySQL】redis与mysql的慢查询

redis和mysql都存在对于慢查询的日志记录,下面将叙述一下两者的慢查询。

一,redis[1]

redis的慢查询日志本质上是一个list对象,不过redis并没有提供慢查询日志的key。开发者可以通过下列命令查询慢查询日志:

#获得慢查询日志,n可以指定条数
slowlog get [n]
#慢查询日志列表当前的长度
slowlog len
#慢查询日志重置
slowlog reset

redis提供了slowlog-log-slower-tan和slowlog-max-len配置,slowlog-log-slower-than是慢查询日志的阈值,单位是微秒,默认值是10000;slowlog-max-len是慢查询日志最多存储多少条。

我们可以修改配置文件来修改上述配置,也可以通过在客户端动态修改,如

#修改配置,重启后失效
config set slowlog-max-len 1000
#将配置持久化到配置文件
config rewrite

redis的慢查询日志本质上是一个队列或者说列表,有固定的长度限制,如果超出长度,会丢失一部分慢查询日志。如果想要将慢查询日志持久化,可以通过定时任务将慢查询日志的结果持久化到其他存储中[1]。

二,mysql

进入mysql客户端,

查询是否开启慢查询日志:

#slow_query_log,是否开启了慢查询日志,当前状态为OFF
mysql> show variables like 'slow_query_log'-> ;
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | OFF   |
+----------------+-------+
1 row in set (0.01 sec)#开启慢查询日志
mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+
1 row in set (0.00 sec)

慢查询日志阈值,单位为秒,默认10秒

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

慢查询日志路径

mysql> show variables like 'slow_query_log_file';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
1 row in set (0.00 sec)

是否在慢查询日志中记录没有使用索引的SQL

mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)

这里为了演示,我们把慢查询日志的阈值调为0s,这样任何sql都会被判断为慢查询并记录在日志中。

mysql> set global long_query_time=0;
Query OK, 0 rows affected (0.00 sec)

我们开启另外一个shell,去查看慢查询日志,可以看到此时慢查询日志多了一些日志

#没有开启慢查询日志时,日志文件中没有记录
[root@localhost usr]# cat /var/lib/mysql/localhost-slow.log 
/usr/sbin/mysqld, Version: 5.7.44 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
[root@localhost usr]# vi /var/lib/mysql/localhost-slow.log ;
#开启慢查询日志后,日志中有了记录
[root@localhost usr]# cat /var/lib/mysql/localhost-slow.log 
/usr/sbin/mysqld, Version: 5.7.44 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 2023-12-15T12:08:27.357678Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000328  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1702642107;
select @@version_comment limit 1;
# Time: 2023-12-15T12:09:02.503218Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.003156  Lock_time: 0.000522 Rows_sent: 1  Rows_examined: 1052
SET timestamp=1702642142;
show variables like 'slow_query_log_file';
# Time: 2023-12-15T12:10:19.797352Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000141  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642219;
set global slow_query_log = on;
# Time: 2023-12-15T12:10:33.596783Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.001013  Lock_time: 0.000140 Rows_sent: 1  Rows_examined: 1052
SET timestamp=1702642233;
show variables like 'slow_query_log';
# Time: 2023-12-15T12:10:59.163838Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000086  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642259;
set global long_query_time = 0;
# Time: 2023-12-15T12:11:08.379448Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000115  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642268;
select * from emp;
# Time: 2023-12-15T12:11:23.468288Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000652  Lock_time: 0.000120 Rows_sent: 5  Rows_examined: 5
SET timestamp=1702642283;
show databases;
# Time: 2023-12-15T12:11:27.571064Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000131  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1702642287;
SELECT DATABASE();
# Time: 2023-12-15T12:11:27.571279Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000039  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use locktest;
SET timestamp=1702642287;
# administrator command: Init DB;
# Time: 2023-12-15T12:11:27.573106Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000214  Lock_time: 0.000075 Rows_sent: 5  Rows_examined: 5
SET timestamp=1702642287;
show databases;
# Time: 2023-12-15T12:11:27.573360Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000081  Lock_time: 0.000029 Rows_sent: 4  Rows_examined: 4
SET timestamp=1702642287;
show tables;
# Time: 2023-12-15T12:11:27.573615Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000143  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642287;
;
# Time: 2023-12-15T12:11:27.573756Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000068  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642287;
;
# Time: 2023-12-15T12:11:27.573919Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000044  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642287;
;
# Time: 2023-12-15T12:11:27.573998Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000035  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1702642287;
;
# Time: 2023-12-15T12:11:32.483758Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000207  Lock_time: 0.000108 Rows_sent: 4  Rows_examined: 4
SET timestamp=1702642292;
show tables;
# Time: 2023-12-15T12:11:37.555298Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.000271  Lock_time: 0.000078 Rows_sent: 12  Rows_examined: 12
SET timestamp=1702642297;
select * from emp;

其中Query_time为查询时间,Lock_time为等待锁的阻塞时间,加起来是在Mysql中查询使用的时间。

参考文章:
[1],redis开发与运维,ISBN 978-7-111-55797-5

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

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

相关文章

Python Pandas 如何给DataFrame增加一行/多行 数据(第6讲)

Python Pandas 如何给DataFrame增加一行/多行 数据(第6讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】人脸识别

目录 前言 算法原理 网络压缩(network compression) 视觉问答(visual question answering)

读书笔记:《汽车构造与原理》

《透视汽车会跑的奥秘》《汽车为什么会跑:底盘图解》《汽车为什么会跑:图解汽车构造与原理》 一、心脏:发动机 活塞往复运动转化为曲轴的旋转运动 活塞:膝关节活塞连杆:小腿曲轴:自行车脚踏板 四冲程&…

GZ015 机器人系统集成应用技术样题2-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题2 选手须知: 本任务书共 25页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…

QT-坦克大战游戏

QT-坦克大战游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "score.h" Score::Score(){health30; maxHealthhealth;QLabel *label1 new QLabel(this);label1->setFrameStyle(QFrame::Plain | QFrame::Box);label1->setStyle…

将 Github token 添加至远程仓库

将 Github token 添加至远程仓库后便于每次 push 重复输入的麻烦 首先,将已生成的 token 记录(注:生成后的 token 确认后便无法查看只能重新生成)并找到对应的项目 git 本地文件路径下 其次,将其与项目所关联,按如下格式配置即可 token 格式类似于 ghp_CAxxxxxxxxxxxxxxxxxGx5j…

常见ORM 框架

特点MyBatisHibernateJPA (Java Persistence API)SQL 控制支持开发者编写和管理自己的 SQL 语句对 SQL 抽象程度更高,Hibernate 提供 HQL对 SQL 抽象程度高,定义更抽象的查询条件映射方式XML 或注解方式映射 SQL 查询结果到 Java 对象基于注解或 XML 配置…

竞赛保研 python+深度学习+opencv实现植物识别算法系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

Oracle日期加减

1.直接加减数字 SELECT SYSDATE "当前时间", SYSDATE 1 "加一天", SYSDATE (1 / 24) "加一小时", SYSDATE (1 / 24 / 60) "加一分钟", SYSDATE (1 / 24 / 60 / 60) "加一秒钟", SYS…

AI人工智能在建筑智能化工程设计的应用

AI人工智能在建筑智能化工程设计的应用 相关政策: 建筑智能化工程设计资质是为了合理设计各种智能化系统,让它们有机地结合成为有效的整体作用。在工程设计标准中,智能化资质设计全称为建筑智能化系统专项设计资质。企业一旦具备智能化设计资…

vue 使用 Echarts做地图及飞线效果

前言: 效果图 一. 项目中安装以及引入Echarts 1.1 npm 命令安装echarts库 npm install echarts --save 1.2 yarn命令安装echarts库 yarn add echarts 1.3 引用 a. 在使用页面上引入 在Vue组件的script标签中引入echarts库 使用 echarts import * as echarts f…

动态面板简介以及ERP原型图案列

动态面板简介以及ERP原型图案列 1.Axure动态面板简介2.使用Axure制作ERP登录界面3.使用Asure完成左侧菜单栏4.使用Axuer完成公告栏5.使用Axuer完成左边侧边栏 1.Axure动态面板简介 在Axure RP中,动态面板是一种强大的交互设计工具,它允许你创建可交互的…

【C#】Microsoft C# 之 LINQ 查询语法视频学习总结

1、LINQ - 限制操作符(Restriction Operators) The where clause of a LINQ query restricts the output sequence. Only the elements that match a condition are added to the output sequence.译文:LINQ查询的where子句限制了输出顺序。…

mysql数据库损坏后重装,数据库备份

重装 先卸载 sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 然后重新安装MySQL: sudo apt-get install mysql-server mysql-client 首先要先使用无密码登录数据库一定要使用 sudo mysql -uroo…

TOGAF—架构(Architecture)项目管理

一、简介 1.1概述 架构(Architecture)项目在本质上通常是复杂的。他们需要适当的项目管理来保持正轨并兑现承诺。本指南适用于负责规划和管理架构(Architecture)项目的人员。我们解释了如何用事实上的方法和标准(如PRINCE2或PMBOK)来补充TOGAF架构开发方法(ADM),以加…

跨站点分布式多活存储建设方案概述

1-伴随着私有云、海量非结构数据的爆炸性增长,软件定义存储已经成为用户构建“敏捷IT” 架构的数据基石,同时越来越多的关键业务接入“敏捷IT” 架构。在分布式软件定义存储的产品架构下,怎样既保证对爆炸数据量的平稳承接,又能对…

C#Winform菜鸟驿站管理系统-快递信息管理界面多条件查询实现方法

1&#xff0c;具体的页面设计如下&#xff0c; 2&#xff0c; 关于下拉框数据填充实现&#xff0c;站点选择代码实现如下&#xff0c;因为站点加载在很多界面需要用到&#xff0c;所以把加载站点的方法独立出来如下&#xff1b; /// <summary>/// 加载站点下拉框/// <…

SaaS行业分析

文章目录 什么是SaaS ?SaaS的标准定义什么是软件即服务&#xff1f;SaaS与传统软件的区别 &#xff1f; SaaS行业分析你知道最赚钱的行业是什么&#xff1f;互联网带给企业的变化 SaaS与PaaS、IaaS的区别&#xff1f;IaaS&#xff08;Infrastructure as a Service&#xff09;…

配置VRRP负载分担示例

一、组网需求&#xff1a; HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力&#xff0c;HostA以SwitchA为默认网关接入Internet&#xff0c;SwitchB作为备份网关&#xff1b;HostC以SwitchB为默认网关接入Internet&#xff0c;SwitchA作为…

【面试】Java最新面试题资深开发-Spring篇(1)

问题八&#xff1a;Spring原理 解释一下什么是Spring框架以及它的核心思想是什么&#xff1f;Spring中的IoC&#xff08;控制反转&#xff09;是什么&#xff0c;它如何实现&#xff1f;什么是DI&#xff08;依赖注入&#xff09;&#xff1f;Spring是如何支持依赖注入的&…