mysql mysqldumpslow_慢日志分析工具—mysqldumpslow 和 mysqlsla-程序员宅基地

技术标签: mysql mysqldumpslow  

前提:分析mysql性能的时候会查看数据库的哪些sql语句有问题,效率低。这就用到了数据库的慢查询,作用就是: 它能记录下所有执行超过long_query_time时间的SQL语句,帮你找到执行慢的SQL,方便我们对这些SQL进行优化。

1.配置慢查询

在mysql客户端执行

mysql> show variables like "%query%" ;

得到结果:

3c829890d9ed

设置慢查询.png

涉及参数解释:

slow_query_log :是否开启慢查询,ON 开启,OFF关闭

修改参数使用命令:

set global slow_query_log=ON; #开启MySQL慢查询功能

long_query_time :慢查询时间设置,默认是10秒

slow_query_log_file :慢查询日志存放路径

还可以通过修改MySQL配置文件参数,开启MySQL慢查询。vi /etc/my.cnf ,在[mysqld]段添加以下代码:

slow-query-log = on #开启MySQL慢查询功能

slow_query_log_file = /data/mysql/127-slow.log #设置MySQL慢查询日志路径

long_query_time = 5 #修改为记录5秒内的查询,默认不设置此参数为记录10秒内的查询

log-queries-not-using-indexes = on #记录未使用索引的查询

:wq! #保存退出

service mysqld restart #重启MySQL服务

2.查看慢查询日志

执行sql后就可以看到配置的路径下面有日志生成了,对于得到的日志有2中方式可以对其分析,一是mysql自带的 mysqldumpslow,另外一个是要独自安装的 mysqlsla,下面分别介绍一下。

2.1 mysqldumpslow 分析慢查询日志

执行命令:

[root@chances126 /]# mysqldumpslow /var/lib/mysql/mysql-slow.log

得到的信息解释:

主要功能是, 统计不同慢sql的

出现次数(Count),

执行最长时间(Time),

累计总耗费时间(Time),

等待锁的时间(Lock),

发送给客户端的行总数(Rows),

扫描的行总数(Rows),

用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

对我而言,看到返回的这一对信息,我是崩溃的,也没有提示是哪个数据库报的,一般一台服务器有很多数据库,这样根本看不出来啊。我不偏爱这个工具,虽然他是不用安装的。

2.2 mysqlsla 分析慢查询日志

这个工具需要安装,看下如何安装吧。Linux如何安装 mysqlsla

安装好后,接下来就是使用了:

#查询记录最多的10条,可以指定具体的数据库

mysqlsla -lt slow -sort t_sum -sf "+select,update,INSERT" -db hunaniptv -top 10 /var/lib/mysql/mysqld_slow.log

#查询记录最多的20个sql语句,并写到select.log中去

mysqlsla -lt slow --sort t_sum --top 20 /data/mysql/127-slow.log >/tmp/select.log

#统计慢查询文件为/data/mysql/127-slow.log的所有select的慢查询sql,并显示执行时间最长的100条sql,并写到sql_select.log中去

mysqlsla -lt slow -sf "+select" -top 100 /data/mysql/127-slow.log >/tmp/sql_select.log

#统计慢查询文件为/data/mysql/127-slow.log的数据库为mydata的所有select和update的慢查询sql,并查询次数最多的100条sql,并写到sql_num.sql中去

mysqlsla -lt slow -sf "+select,update" -top 100 -sort c_sum -db mydata /data/mysql/127-slow.log >/tmp/sql_num.log

得到的信息大概是这种样子:

3c829890d9ed

mysqlsla分析慢查询.png

返回参数解释:

Count, sql的执行次数及占总的slow log数量的百分比.

Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.

95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.

Lock Time, 等待锁的时间.95% of Lock , 95%的慢sql等待锁时间.Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.

Rows examined, 扫描的行数量.

Database, 属于哪个[数据库]

Users, 哪个用户,IP, 占到所有用户执行的sql百分比

Query abstract, 抽象后的sql语句

Query sample, sql语句

对于得到这个信息还可以进一步分析,就是登陆到mysql 的客户端,登陆数据库,执行 EXPLAIN查看sql具体的 type 信息。

[root@chances126 /]# mysql -uroot -pchances

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 141058

Server version: 5.1.73-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use sc_epg_release4

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> EXPLAIN select distinct a.* from EPG_CONTENT_SERIES a join EPG_CATEGORY_ITEM b on a.CONTENT_CODE = b.ITEM_CODE where a.ENABLE_STATUS=1 and b.STATUS=0 and a.EXTERNAL_CODE = '2000000200000010042000000006088';

+----+-------------+-------+------+---------------+-------------+---------+-----------------------------+-------+------------------------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+------+---------------+-------------+---------+-----------------------------+-------+------------------------------+

| 1 | SIMPLE | b | ALL | NULL | NULL | NULL | NULL | 28504 | Using where; Using temporary |

| 1 | SIMPLE | a | ref | seriesIndex | seriesIndex | 387 | sc_epg_release4.b.ITEM_CODE | 1 | Using where |

+----+-------------+-------+------+---------------+-------------+---------+-----------------------------+-------+------------------------------+

2 rows in set (0.00 sec)

mysql>

可以看出 a 表是全表查询,b表级别是 ref ,可以进一步分析 sql 了。

性能从最好到最差:system、const、eq_reg、ref、range、index和ALL

如果看到性能不好,就可以把sql给研发去分析了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36325338/article/details/113432468

智能推荐

Pytroch同一个优化器优化多个模型的参数并且保存优化后的参数_pytorch加载多个模型-程序员宅基地

文章浏览阅读4.5k次,点赞7次,收藏26次。在进行深度学习过程中会遇到几个模型进行串联,这几个模型需要使用同一个优化器,但每个模型的学习率或者动量等其他参数不一样这种情况。一种解决方法是新建一个模型将这几个模型进行串联,另一种解决方法便是往优化器里面传入这几个模型的参数。..._pytorch加载多个模型

计算机软考中级合格标准,中级软考多少分及格-程序员宅基地

文章浏览阅读1.4k次。原标题:中级软考多少分及格盛泰鼎盛 对于第一次报名软考的朋友,可能对于考试合格分数线不太了解,软考分为初、中、高三个级别,那么软考中级多少分及格呢?软考中级合格标准根据往年的软考合格分数线来看,各级别的合格标准基本上统一的。2019年上半年计算机技术与软件专业技术资格(水平)考试各级别各专业各科目合格标准均为45分(总分75分)。而2016下半年计算机技术与软件专业技术资格(水平)考试除了信息系统..._计算机程序设计员中级考试内容及合格标准

爬虫相关-程序员宅基地

文章浏览阅读50次。2019独角兽企业重金招聘Python工程师标准>>> ..._爬虫考虑安全法律因素

ASP.NET Identity 的“多重”身份验证-程序员宅基地

文章浏览阅读263次。本章主要内容有:  ● 实现基于微软账户的第三方身份验证  ● 实现双因子身份验证  ● 验证码机制实现基于微软账户的第三方身份验证  在微软提供的ASP.NET MVC模板代码中,默认添加了微软、Google、twitter以及Facebook的账户登录代码(虽然被注释了),另外针对国内的一些社交账户提供了相应的组件,所有组件都可以通过Nuget包管理器安装:    从..._identity 二次登录

2018年秋季学期课表-程序员宅基地

文章浏览阅读241次。李理论基础I、II课程编码:011D9101Z﹡ 课时:80 学分:4.00 课程属性:其它 主讲教师:聂思安 教学目的要求李群和李代数(Lie group and Lie algebra)是在1874年由挪威数学家SophusLie为研究微分方程的对称性而引进的。后经过E. Cartan 和H. Weyl等人的努力,李的理论已成了微分几何的重要研究工具并发展成完整的代数理论。上世纪..._层的上同调

iOS多线程-03-NSOperation与NSOperationQueue-程序员宅基地

文章浏览阅读33次。简介通过NSOperation与NSOperationQueue的组合也能实现多线程通常将任务封装成NSOperation对象,并将对象添加到NSOperationQueue中实现NSOperationNSOperation是一个抽象类,不能用来直接封装操作,通常使用它的子类来封装操作若不将NSOperation对象添加到NSOperationQueue中,操作只会在当前线程执...

随便推点

数据驱动的产品研发:如何利用数据驱动提高产品安全性-程序员宅基地

文章浏览阅读867次,点赞11次,收藏20次。1.背景介绍在当今的数字时代,数据已经成为企业和组织中最宝贵的资产之一。随着数据的增长和复杂性,数据驱动的决策变得越来越重要。数据驱动的产品研发是一种新兴的方法,它利用数据来优化产品的设计、开发和运营。这种方法可以帮助企业更有效地利用数据,提高产品的安全性和质量。在这篇文章中,我们将探讨数据驱动的产品研发的核心概念、算法原理、实例和未来发展趋势。我们将涉及到以下几个方面:背景介绍核...

基础类的DSP/BIOS API调用_clk_gethtime 返回值-程序员宅基地

文章浏览阅读1.3k次。转载自:http://blog.sina.com.cn/s/blog_48b82df90100bpfj.html基础类的DSP/BIOS API调用一、时钟管理CLK(1)Uns ncounts = CLK_countspms(void) 返回每毫秒的定时器高分辨率时钟的计数值(2)LgUns currtime = CLK_gethtime(void) _clk_gethtime 返回值

Appium环境搭建及“fn must be a function”问题解决-程序员宅基地

文章浏览阅读38次。由于appium在线安装比较困难,大多数应该是由于FQ造成的吧,索性直接下载appium安装包:http://pan.baidu.com/s/1bpfrvjDnodejs下载也很缓慢,现提供nodejs4.4.4下载地址:http://pan.baidu.com/s/1bIsS02环境搭建步骤可以参考:http://www.cnblogs.com/tobecrazy/p/4562199.h..._启动appium fn must be a function

基于单片机的语音存储与回放系统设计-程序员宅基地

文章浏览阅读1.3k次,点赞28次,收藏27次。在人类的历史长河中,语言的作用尤为重要,人们一直在思考一个问题,那就是如何把语言完全不差的记录下来。通过单片机控制语音芯片完成的语音存储与回访系统的电路比较大,而且回涉及到很多的模块电路,比如会涉及到单片机的最小系统、时钟电路、液晶显示模块等等,所以在焊接时要十分注意,涉及到多种模块的这种电路,哪怕只要存在一处的焊接错误,就会导致整个系统的检测无法完成,因为电路中交叉的线路非常多,所以在焊接过程中避免焊接错误和短路现象,如果电路连接错误,将给检测带来极大的不便,并且该电路具有更多的交叉线。_基于单片机的语音存储与回放系统设计

转载《一个射频工程师的职场日记》_射频工程师中年危机-程序员宅基地

文章浏览阅读3.7k次,点赞10次,收藏37次。本文转载自电子发烧友论坛http://bbs.elecfans.com/jishu_1674416_1_1.html转载此文章为了让更多刚毕业或者快要毕业的电子专业的同学,对于自己的未来工作学习能有些帮助,相信很多人快毕业的时候估计和我一样都不太清楚自己未来应该做些什么,读完这篇文章让我获益匪浅。以前大学毕业找工作的时候,就很希望有以前的同专业的师兄姐们写点面经什么的。但等到自己毕业了,从来就没有想过要把自己的求职经历和别人分享一下,给后来人做个参考。人人为我,我为人人。前人栽树后人乘凉。现在正准备跳_射频工程师中年危机

IntelliJ IDEA2020安装教程-程序员宅基地

文章浏览阅读6.8k次,点赞16次,收藏99次。IntelliJ IDEA2020安装教程[软件名称]:IntelliJ IDEA2020[软件语言]:中文 /英文[软件大小]:643.31MB[安装环境]:Win10/Win8/Win7[64位下载链接]:下载地址[提取码]:y3bu软件简介IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、_intellij idea2020安装

推荐文章

热门文章

相关标签