首页 > 数据库 >mysql慢查询分析

mysql慢查询分析

时间:2024-08-08 10:52:22浏览次数:6  
标签:分析 mysqlsla slow log 10 -- 查询 mysqldumpslow mysql

MySQL 慢查询分析

一、mysqldumpslow 分析工具

mysql源码包scripts目录下

mysqldumpslow 命令使用
[root@om scripts]# ./mysqldumpslow --help
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 指定排序的方法:默认at
        al  平均锁时间
        ar  平均多少行数据
        at  平均查询时间
        c   查询次数
        r   返回行数
        l   锁时间
        t   时间
  -r    倒序
  -t    数量
  -g    正则匹配
  -h    主机
  
  
  
 ### 查询结果分析
 Count: 734  Time=14.14s (10380s)  Lock=0.00s (0s)  Rows=24.6 (18072), zbxuser[zbxuser]@[127.0.0.1]

Count:执行了 734次
Time:最大执行时间是14.14秒 ,总共执行了10380秒
Lock:最大锁时间是0秒,总共执行了0秒
Rows:最大


### 示例
# 查看前10条平均锁时间最长的
./mysqldumpslow -s al -t 10  /data/logs/services/mysql/slow.log

# 查看前10条锁时间最长的
./mysqldumpslow -s l -t 10 /data/logs/services/mysql/slow.log 

# 查看前10条平均查询时间最长的(默认)
./mysqldumpslow -s at -t 10 /data/logs/services/mysql/slow.log 

# 查询前10条查询时间最长的
./mysqldumpslow -s l -t 10 /data/logs/services/mysql/slow.log 

# 查询前10条次数最多的
./mysqldumpslow -s c -t 10 /data/logs/services/mysql/slow.log 

# 查询前十条查询平均结果行数最多的
./mysqldumpslow -s ar -t 10 /data/logs/services/mysql/slow.log

# 查询前十条查询结果行数最多的
 ./mysqldumpslow -s ar -t 10 /data/logs/services/mysql/slow.log
 
 

二、mysqlsla慢查询分析工具

### 安装mysqlsla
安装依赖包
yum -y install wget perl perl-DBI perl-DBD-MySQL

yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker  perl-Time-HiRes

git clone https://github.com/daniel-nichter/hackmysql.com.git
cd hackmysql.com/mysqlsla
perl Makefile.PL 
make && make install 



### 查看帮助信息
NAME
   mysqlsla - Parse, filter, analyze and sort MySQL slow, general and binary logs

SYNOPSIS
       # Basic operation: parse a MySQL slow or general log
       mysqlsla --log-type slow LOG
       mysqlsla --log-type general LOG

       # Parse output from mysqlbinlog
       # mysqlsla cannot directly parse binary logs
       mysqlbinlog LOG | mysqlsla --log-type binary -

       # Parse a microslow patched slow log
       mysqlsla --log-type msl LOG

       # Replay a replay file
       mysqlsla --replay FILE

       # Parse a user-defined log specify its format
       mysqlsla --log-type udl --udl-format FILE

       # Let mysqlsla automatically determine the log type
       mysqlsla LOG

       ============================================================================================
       --log-type 日志类型,slow,general,binary,msl,udl

       --sort 指定排序规则,默认t_sum排序,t_sum 按总时间排序 c_sum 按总次数排序

       --statement-filter(-sf)[+-][TYPE]   过滤sql语句的类型,比如。select,update,drop,create,insert,例如“+select,insert”,不出现的默认是-,即不包括

       --databases db   指定数据库
       
       
       
  ###  查询结果分析
  Count         : 5.83k  (5.10%)
Time          : 93864.330161 s total, 16.114048 s avg, 10.001136 s to 60.819952 s max  (2.27%)
  95% of Time : 84733.609577 s total, 15.314225 s avg, 10.001136 s to 26.904785 s max
Lock Time (s) : 498.24 ms total, 86 µs avg, 53 µs to 372 µs max  (0.17%)
  95% of Lock : 449.529 ms total, 81 µs avg, 53 µs to 139 µs max
Rows sent     : 438 avg, 0 to 1.78k max  (0.25%)
Rows examined : 3.19k avg, 0 to 55.39k max  (0.02%)
Database      : 
Users         : 
    zbxuser@ 127.0.0.1 : 100.00% (5825) of query, 99.99% (114151) of all users

Query abstract:
SET timestamp=N; SELECT itemid,ROUND(N* MOD(cast(clock AS UNSIGNED)+N,N)/(N),N) AS i,COUNT(*) AS COUNT,avg(value) AS avg,MIN(value) AS MIN,MAX(value) AS MAX,MAX(clock) AS clock FROM history WHERE itemid='S' AND clock>='S' AND clock<='S' GROUP BY itemid,ROUND(N* MOD(cast(clock AS UNSIGNED)+N,N)/(N),N);

Query sample:
SET timestamp=1488943323;
SELECT itemid,round(600* MOD(CAST(clock AS UNSIGNED)+2287,7200)/(7200),0) AS i,COUNT(*) AS count,AVG(value) AS avg,MIN(value) AS min,MAX(value) AS max,MAX(clock) AS clock FROM history WHERE itemid='33195' AND clock>='1488936113' AND clock<='1488943313' GROUP BY itemid,round(600* MOD(CAST(clock AS UNSIGNED)+2287,7200)/(7200),0);

===========================================================================================
Count:sql的执行次数及占总的slow log数量的百分比
Time:执行时间,包括总时间,平均时间,最小,最大时间,时间占到总慢sql的时间的百分比,
    95% of Time:去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.  
Lock Time(s):等待锁的总共时间,平均时间,最小到最大时间。所占百分比
    95% of Lock:95%的慢sql等待锁时间.  
Rows sent:平均行数,最小到最大行数,所占所有百分比
Rows examined: 扫描的行数量
Database:   数据库
Users:      用户
Query abstract: 抽象后的sql
Query sample:   sql语句



### 实例
使用默认分析
mysqlsla --log-type slow slow.log

查询select的top 10
mysqlsla --log-type slow  --statement-filter "+select" -top 10  slow.log

查询指定数据库
mysqlsla --log-type slow  --database mysql -top 10 slow.log

按次数排序
mysqlsla --log-type slow  --database mysql -top 10 --sort c_sum slow.log

标签:分析,mysqlsla,slow,log,10,--,查询,mysqldumpslow,mysql
From: https://www.cnblogs.com/kkit/p/18348480

相关文章

  • 记一次 .NET某智慧出行系统 CPU爆高分析
    一:背景1.讲故事前些天有位朋友找到我,说他们的系统出现了CPU100%的情况,让你帮忙看一下怎么回事?dump也拿到了,本想着这种情况让他多抓几个,既然有了就拿现有的分析吧。二:WinDbg分析1.为什么会爆高既然说是100%,作为调试者得拿数据说话,可以使用!tp来观测一下。0:000:x86>......
  • MySQL线上查询性能调优:深入解析与实战策略
    MySQL线上查询性能调优:深入解析与实战策略在数据库管理的日常工作中,确保MySQL线上查询的高效执行是至关重要的。随着数据量的不断增长和查询复杂度的提升,性能调优成为了数据库管理员(DBA)和开发人员必须掌握的技能。本文将从多个维度深入解析MySQL线上查询性能调优的策略和技......
  • 如何用ai来完成数据库分析(2)
    一样的前言因一些课程设计要写长篇分析报告,这里借用ai做一篇指导教程,分上下两篇。这篇也会教如何让ai给你你想要的答案,众所周知,现在的ai并不智能,不针对各类厂家,但是放出来的确实表象如此。但其实问法决定了我们很多时候无法解锁其100%的功能,错误的问答方式甚至让回复比1.0......
  • 如何用ai来完成数据库分析(1)
    前言因一些课程设计要写长篇分析报告,这里借用ai做一篇指导教程,分上下两篇。这篇也会教如何让ai给你你想要的答案,众所周知,现在的ai并不智能,不针对各类厂家,但是放出来的确实表象如此。但其实问法决定了我们很多时候无法解锁其100%的功能,错误的问答方式甚至让回复比1.0的版本......
  • MySQL数据库安装及配置
    简介:MySQL版本:MySQLCommunityServer社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。MySQLEnterpriseEdition企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。M......
  • 山东大学计算机组成原理实验13控制器实验(含原理图,实验结果实物图,结论分析)
    实验内容及说明  目前控制器设计大都采用微程序设计方法,又称存储逻辑控制器。微程序控制器电路结构如图13-1所示。它由控制存储器CROM、微程序μPC计数器和微指令寄存器μIR构成。  其中,微程序计数μPC向控制存储器提供8位微地址,在控存读信号μRD‘的作用下,读出一条......
  • 详细分析帆软后台单点登录的配置事项(图文分析)
    目录前言1.插件安装2.模版认证3.单点登录以及加密4.测试前言帆软的文档,推荐阅读:帆软官网文档-单点阅读更多的知识点从帆软学习,以下文章只是做一个踩坑排查,以图文更好的展示为了保证安全,后端做用户的加密是最好的方式,从而实现无感登录与自身第三方平台......
  • 掌握MySQL查询优化:理论与实践全解析
    1.MySQL查询优化器概述MySQL查询优化器的主要功能是优化和执行SELECT语句,确保在正确执行的前提下提升执行效率。它利用关系代数、启发式规则和代价估算模型等技术进行优化,主要针对SPJ(选择-投影-连接)类型和非SPJ类型的查询语句进行优化。1.1主要功能关系代数:将SQL语......
  • MySQL优化攻略:利用常量表提升数据库性能
    1.常量表概述常量表在MySQL中的意义与编程语言中的常量不同。在MySQL中,常量表指的是那些读取表时行数明确为零或一行的数据表。常量表可以分为以下两种类型:1.1System表定义:System表是只包含一行数据的表。特点:这种表通常用于优化查询,因为其数据是固定的,因此对查......
  • 【视频讲解】Python灰色关联度分析直播带货效用、神经退行性疾病数据
    原文链接:https://tecdat.cn/?p=37273原文出处:拓端数据部落公众号 分析师:JiayiDeng 本文展示如何用灰色关联度分析的直播带货效用及作用机制研究,并结合一个分析神经退行性疾病数据实例的代码数据,为读者提供一套完整的实践数据分析流程。一、研究难点直播带货作为新兴产业,缺......