MySQL慢查询日志分析(慢查询日志)

一、背景

      MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。
  慢查询日志一般用于性能分析时开启,收集慢SQL然后通过explain进行全面分析,一般来说,生产是不会开启的,收集慢查询语句是十分耗性能的,但是我们在测试环境是可以模拟分析的,优化SQL语句,接下来就通过实战,讲解如何开启慢日志查询以及如何分析。

查看慢查询日志是否开启

show variables like 'slow%';

在这里插入图片描述

可以看到默认慢日志的保存文件以及状态 ,OFF说明没有开启

查看默认慢查询sql默认时间,大于10秒,没有等于

select @@global.long_query_time;
-- 或者
show VARIABLES like 'long_query_time%'

在这里插入图片描述

二、慢查询日志开启

方式打开(重启后失效)

-- 开启慢日志
set @@global.slow_query_log=1;
-- 设置sql查询超时时间
set @@global.long_query_time=2;
-- 或者
-- 开启慢日志
set GLOBAL slow_query_log=1;
-- 设置sql查询超时时间
set GLOBAL long_query_time=2;

配置文件方式打开(永久), 重启有效

linux :vi /etc/my.cnf

windows:
在这里插入图片描述
在这里插入图片描述

[mysqld]
slow_query_log=1
long_query_time=2

客户端模拟,查询超时,睡眠4秒,由于我们上面设置了查询超过2s保存慢日志

select sleep(4);

只要是超过long_query_time的sql都会被记录
在这里插入图片描述
查看当前数据有多少条慢sql

show GLOBAL  STATUS like '%slow_queries%'

慢日志分析工具:mysqldumpslow,这个大家有兴趣的可以去详细了解如何使用。

指定日志文件,查看记录集中最多的sql
linux

mysqldumpslow -s r -t 10 /var/lib/mysql/dca928abb464-slow.log

windows

先下载mysqldumpslow.pl文件

再下载运行工具Perl

之后可以使用cmd根据perl工具调用mysqldumpslow.pl中的命令运行mysqldumpslow

运行格式:

perl mysqldumpslow.pl文件路径 mysqldumpslow命令 慢日志文件路径

例如:

D:\environment>perl D:\mysql\bin\mysqldumpslow.pl mysqldumpslow --help
使用方法:mysqldumpslow [ 选项... ] [ 日志文件... ]解析并总结 MySQL 慢查询日志。可用的选项有:--verbose    详细模式--debug      调试模式--help       输出此文本到标准输出-v           详细模式-d           调试模式-s ORDER     排序方式(al, at, ar, c, l, r, t),默认为 'at'al: 平均锁定时间ar: 平均发送行数at: 平均查询时间c: 查询计数l: 锁定时间r: 发送行数t: 查询时间-r           反转排序顺序(从最大到最小,而非最小到最大)-t NUM       仅显示前 n 条查询-a           不将所有数字抽象为 N,字符串抽象为 'S'-n NUM       在名称中抽象至少具有 n 位数字的数字-g PATTERN   grep:仅考虑包含此字符串的语句-h HOSTNAME  数据库服务器的主机名,用于匹配 *-slow.log 文件名(可以使用通配符),默认为 '*',即匹配所有-i NAME      服务器实例名称(如果使用 mysql.server 启动脚本)-l           不从总时间中减去锁定时间

mysqldumpslow命令使用例子:
得到返回记录集最多的10个SQL

mysqldumpslow -s r -t 10 var/lib/mysql/zhubayi-computer-slow.log

得到访问次数最多的10个SQL

mysqldumpslow -s c -t 10 /var/lib/mysql/zhubayi-computer-slow.log

得到按照时间排序的前10条里面含有左连接的查询语句

mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/zhubayi-computer-slow.log

另外建议在使用这些命令时结合|和more 使用 ,否则有可能出现爆屏情况

mysqldumpslow -s r -t 10 var/lib/mysql/zhubayi-computer-slow.log.log  more

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

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

相关文章

AI:112-基于卷积神经网络的美食图片识别与菜谱推荐

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队

一、前言 性能测试之于软件系统,是保障其业务承载能力及稳定性的关键措施。以软件系统的能力建设为主线,系统能力设计工作与性能测试工作,既有先后之顺序,亦有相互之影响。以上,在性能测试的场景决策,架构…

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1) 实现查看图片的放大镜,放大镜随着手指在屏幕上的移动,放大镜里面展示手指触点为中心、半径长度的圆形放大后的图片。 剪切出一块圆形Path…

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库,打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作,而管理员和超级管理员则可通过后台管理系统对停车…

13.Go 异常

1、宕机 Go语言的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,如数组访问越界、空指针引用等,这些运行时错误会引起宕机。 一般而言,当宕机发生时,程序会中断运行,并立即执行在该gorouti…

Vue2 - diff 原理(动图演示)

目录 1,diffdiff 的时间点 2,_update 函数3,_patch 函数(进行 diff)3.1,根节点比较3.2,子节点比较 4,key的问题举例1举例2 1,diff 解释:对比新旧虚拟DOM树&a…

软件测试基础理论学习-软件测试方法论

软件测试方法论 软件测试的方法应该建立在不同的软件测试类型上,不同的测试类型会存在不同的方法。本文以软件测试中常见的黑盒测试为例,简述常见软件测试方法。 黑盒测试用例设计方法包括等价类划分法、边界值分析法、因果图法、判定表驱动法、正交试…

神经网络:经典模型热门模型

在这里插入代码片【一】目标检测中IOU的相关概念与计算 IoU(Intersection over Union)即交并比,是目标检测任务中一个重要的模块,其是GT bbox与pred bbox交集的面积 / 二者并集的面积。 下面我们用坐标(top&#xff0…

数据结构与算法之美学习笔记:44 | 最短路径:地图软件是如何计算出最优出行路径的?

目录 前言算法解析总结引申 前言 本节课程思维导图: 我们学习了图的两种搜索算法,深度优先搜索和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图,也就是图中的每条边都有一个权重,我们该如何计算两点之间的最短…

Docker安装Elasticsearch,kibana,ik分词器

安装elasticsearch 下载elasticsearch,查看版本:Elasticsearch Guide [8.11] | Elastic docker pull elasticsearch:7.17.16 查看镜像是否下载成功 docker images 创建网络,因为需要部署kibana容器,要让es和kibana容器互联 …

Spring——Spring基于注解的IOC配置

基于注解的IOC配置 学习基于注解的IOC配置&#xff0c;大家脑海里首先得有一个认知&#xff0c;即注解配置和xml配置要实现的功能都是一样的&#xff0c;都是要降低程序间的耦合。只是配置的形式不一样。 1.创建工程 1.1 pom.xml <?xml version"1.0" encoding…

2024 AIGC 应用层十大趋势;iPhone 遭史上最复杂攻击!丨 RTE 开发者日报 Vol.119

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

数据库分区分表

分区分表 为什么要分库分表 软件时代&#xff0c;传统应用都有这样一个特点&#xff1a;访问量、数据量都比较小&#xff0c;单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大&#xff0c;对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问…

【 RF 射频 电缆】 MIL-C-17F 标准 规格

第〇、&#xff1f;&#xff1f; RGXXXXX 第一、应用场景 标准号应用场景–&#xff08;–&#xff09;RG-8 RG-9 RG-11粗缆以太网–RG-58细缆以太网–RG-59 RG-75电视系统–RG-62ARCnet网络和IBM 3270网络–RG142电信设备之间的互连 航空电子机架 雷达 GPS 医疗–RG178通信…

Spring常用注解及模拟用户登录流程示例

注解 Resource注解实现自动注入 (反射)代码块xml配置文件 Autowired注解实现自动化注入代码块xml配置文件 扫描器-四个注解Dao层-RepositoryService层-ServiceController层-Controller测试任意类-Component 常用注解示例-模拟用户登录配置自动扫描的xml文件实体类Userdao层消息…

几个有趣的go服务框架

开篇先吐槽几句&#xff5e; 我个人有一些习惯&#xff0c; 比如在服务设计时会考虑的比较长远&#xff0c;会考虑到到未来的扩展等等…然后程序设计的抽象成度就会比较高&#xff0c;各个模块之间解耦&#xff0c;但这样往往就会带来程序的复杂度提升。 这其实在一些公司里面…

微信小程序 ---- 通过 URLScheme 或 URLLink 从短信、邮件、微信外网页等场景打开小程序

1. 用于短信、邮件、网页、微信内等拉起小程序的方法 《URL Scheme 拉起小程序》《URL Link 拉起小程序》 2. 功能描述 URL Scheme: 该接口用于获取小程序 scheme 码&#xff0c;适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。目前仅针对国内非个人主体的小程…

奇技淫巧:如何给项目中的RabbitMQ添加总开关

本文主要分享了如何给项目中的RabbitMQ添加总开关&#xff0c;通过简单配置开/关RabbitMQ。 一、需求背景 SpringBoot项目里使用了RabbitMQ&#xff0c;但某些场景下&#xff0c;不希望项目启动时自动检查RabbitMQ连接 例如&#xff1a; 在开发不需要RabbitMQ的功能过程中&…

WEB:探索开源PDF.js技术应用

1、简述 PDF.js 是一个由 Mozilla 开发的开源 JavaScript 库&#xff0c;用于在浏览器中渲染 PDF 文档。它的目标是提供一个纯粹的前端解决方案&#xff0c;摆脱了依赖插件或外部程序的束缚&#xff0c;使得在任何支持 JavaScript 的浏览器中都可以轻松地显示 PDF 文档。 2、…

C语言中指针变量如何使用

一、指针变量的定义与声明 1.1 定义 指针变量是用来存储另一个变量的内存地址的变量。在C语言中&#xff0c;指针变量的类型是指向某个类型的指针。例如&#xff0c;int *p; 表示一个整型指针变量p。 1.2 声明 指针变量的声明分为两种形式&#xff0c;一种是直接声明&#…