在日常的业务开发中,MySQL 出现慢查询是很常见的,要么说明你家产品的增长性很好,要么就是你的 SQL 写的太烂了。所以对慢查询 SQL 进行分析和优化很重要,其中 mysqldumpslow 是 MySQL 服务自带的一款很好的分析调优工具。

MySQL 慢查询日志
MySQL提供的一种慢查询日志记录,用来记录在MySQL查询中响应时间超过阀值的记录
具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中
查看慢查询设置情况
show variables like '%slow_query_log%';
* slow_query_log //是否开启,默认关闭,建议调优时才开启
* slow_query_log_file //慢查询日志存放目录

如何开启慢查询日志记录
3.1 命令开启
set global slow_query_log =1; //只对当前会话生效,重启失效
3.2 配置文件开启
vim my.cnf
在[mysqld]下添加:
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/zdj-slow.log
重启MySQL服务

哪些 SQL 会记录到慢查询日志
show variables like 'long_query_time%';//查看阀值(大于),默认10s

如何设置查询阀值
4.1 命令设置
set global long_query_time = 3 //设置慢查询阀值
备注:
另外开一个session或重新连接 才会看到变化

4.2 配置文件设置
vim my.cnf
在[mysqld]下添加:
long_query_time = 3
log_output = FILE
重启MySQL服务
如何把未使用索引的 SQL 记录写入慢查询日志
show variables like 'log_queries_not_using_indexes'; //查看设置,默认关闭
set global log_queries_not_using_indexes = on; //设置

模拟数据
select sleep(4);//睡眠4s再执行
show global status like '%Slow_queries%';//查看慢查询条数

日志分析工具:mysqldumpslow
mysqldumpslow [ OPTS... ] [ LOGS... ] //命令行格式
mysqldumpslow -h
Option h requires an argument
ERROR: bad option

Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

Parse and summarize the MySQL slow query log. Options are

--verbose verbose
--debug debug
--help write this text to standard output

-v verbose
-d debug
-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default
al: average lock time
ar: average rows sent
at: average query time
c: count
l: lock time
r: rows sent
t: query time
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don't subtract lock time from total time
-s 表示按照何种方式排序
c 访问次数
l 锁定时间
r 返回记录
t 查询时间
al 平均锁定时间
ar 平均返回记录数
at 平均查询时间
-t 返回前面多少条数据
-g 后边搭配一个正则匹配模式,大小写不敏感
几个常用命令
得到返回记录集最多的10条SQL:
mysqldumpslow -s r -t 10 /var/lib/mysql/695f5026f0f6-slow.log
得到访问次数最多的10条SQL:
mysqldumpslow -s r -t 10 /var/lib/mysql/695f5026f0f6-slow.log
得到按照时间排序的前10条里面含有左连接的SQL:
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/695f5026f0f6-slow.log
也支持管道符命令
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/695f5026f0f6-slow.log | more //分页显示
慢查询日志记录内容
cat /var/lib/mysql/695f5026f0f6-slow.log //查看慢查询日志
-- 执行SQL时间
# Time: 2019-12-31T05:54:23.893042Z
-- 执行SQL的主机信息
# User@Host: root[root] @ localhost [] Id: 40
-- SQL的执行信息
# Query_time: 4.013664 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1
-- SQL执行时间
SET timestamp=1577771659;
-- SQL内容
select sleep(4);

再结合 explain 关键字进一步分析优化

————————————————
原文作者:zhangdeTalk
转自链接:https://learnku.com/articles/39009
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

慢查询分析调优工具~mysqldumpslow的更多相关文章

  1. mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具

    本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多  主要的性能指标: 访问频度, 并发连接量, ...

  2. Linux性能分析调优工具介绍

    1.常用性能分析工具 1)CPU性能分析工具 vmstat ps sar time strace pstree top 2)Memory性能分析工具 vmstat strace top ipcs ip ...

  3. 18.jvm调优工具及案例分析

    目标: Jmap.Jstack.Jinfo详解 JvisualVm调优工具实战 JVM内存或CPU飙高如何定位 JState命令预估JVM运行情况 系统频繁Full GC导致系统卡顿实战调优 内存泄漏 ...

  4. Oracle第二话之调优工具

    Oracle第二话之调优工具 原创if 0 = -I can 发布于2019-04-09 19:53:12 阅读数 172  收藏 展开 目录 1.告警日志 2.用户进程trace文件 3.动态性能视 ...

  5. JVM性能调优(4) —— 性能调优工具

    前序文章: JVM性能调优(1) -- JVM内存模型和类加载运行机制 JVM性能调优(2) -- 垃圾回收器和回收策略 JVM性能调优(3) -- 内存分配和垃圾回收调优 一.JDK工具 先来看看有 ...

  6. JVM调优工具锦囊

    Arthas线上 分析诊断调优工具 以前我们要排查线上问题,通常使用的是jdk自带的调优工具和命令.最常见的就是dump线上日志,然后下载到本地,导入到jvisualvm工具中.这样操作有诸多不变,现 ...

  7. java性能调优工具

    windows调优工具: 任务管理器(ctrl+alt+delete或).资源管理器(任务管理器->性能进入或运行resmon.exe):JVM分析工具Jconsole,jProfile,Vis ...

  8. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  9. 【Java/Android性能优2】Android性能调优工具TraceView介绍

    本文参考:http://www.trinea.cn/android/android-traceview/ Android自带的TraceView堪比java的性能调优工具visualvm线程视图,可以 ...

  10. jvm系列(七):jvm调优-工具篇

    16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...

随机推荐

  1. Grafana监控指标、日志与链路追踪数据采集到GreptimeDB的完整实践指南

    以下是将Grafana监控指标.日志与链路追踪数据采集到GreptimeDB的完整实践指南,涵盖部署.运维.安全及扩展的全流程: 一.整体架构 图表 二.数据采集配置 1. 指标采集(Promethe ...

  2. solana杂谈(1)

    solana杂谈(1) 本文适用于"只需大致了解 Solana"的读者,部分说法可能不够准确或不够深入.如需详细了解,建议阅读 Solana 的官方文档:https://solan ...

  3. MKL库线性方程组求解(LAPACKE_?gesv)

    LAPACK(Linear Algebra PACKage)库,是用Fortran语言编写的线性代数计算库,包含线性方程组求解(\(AX=B\)).矩阵分解.矩阵求逆.求矩阵特征值.奇异值等.该库用B ...

  4. VBA使用Outlook自动发送邮件

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 基础版本–能自动发送就是成功 利用VBA使用Outlook自动发送邮件,代码及注释如下: Sub send_mail() Dim ...

  5. pdfjs-dist v3.x渲染pdf

    import './App.css' import * as pdfjsLib from "pdfjs-dist"; import { useEffect, useRef, use ...

  6. C++线程池 基于C的实现 学习1

    简介 线程池是什么? 打饭的阿姨们 前去吃饭的人们,任务 管理组件 线程池由三部分组成 执行队列,线程s 任务队列,任务s 管理组件 类似于 银行营业厅 食堂打饭 每个打饭的人都是一个线程 管理制度 ...

  7. SciTech-EECS-Circuits-Power Electrics(功率器件): 等离子体(电弧:大功率)效应(正负极+数控脉冲放电时间 实现 等离子切割机(逆变式 + 高压引弧式)电解/电镀/电子显微、显像/电火花线切割/特斯拉线圈 ) + WEDM(电火花线切割数控加工)

    SciTech-EECS-Circuits-Power Electrics(功率器件): 特斯拉线圈 : 电(弧)离效应(正负极+数控脉冲放电时间 实现 电解/电镀/电子显微.显像/电火花线切割) + ...

  8. Practice Infinity: Set Theory: Cardinality + Infinity comparation

    Practice Infinity Course description Reckoning with infinity is one of the major accomplishments of ...

  9. oracle通过dblink连接mysql配置详解-九五小庞

    oracle通过dblink连接mysql配置详解

  10. vue和elementui是什么关系 -九五小庞

    介绍 要想知道vue和elementui之间有啥关系,首先我们必须了解vue和elementui,只有对它们有所认识,才能更好的理解它们之间的关系.本文主要针对它们之间的关系做个简短的介绍. 1.vu ...