mysql mysqldumpslow_慢日志分析工具—mysqldumpslow 和 mysqlsla

前提:分析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给研发去分析了。

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

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

相关文章

mysql分库分表面试_【53期】面试官:谈一下数据库分库分表之后,你是如何解决事务问题?...

点击上方“Java面试题精选”,关注公众号面试刷图,查缺补漏>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅。一、概述随着时间和业务的发展,数据库中表的数据量会…

圆管当量直径_截面相同时,正方型截面的当量直径大于圆管直径。( )。

“党在过渡时期的总路线的实质,截面就是使生产资料的社会主义公有制成为我们国家和社会的( )的经济基础。”根据小儿尿道特点,相同型截易患的疾病为正方直径直径泌尿系感染的致病菌最为常见的是当量大于汽车离合器踏板自由行程过小或没有行程, 将会引起(…

h710阵列卡支持最大硬盘_DELL服务器RAID磁盘阵列在线扩容(以H710P阵列卡为例)

DELL服务器RAID磁盘阵列在线扩容(以H710P阵列卡为例)分享到:作者来源: 未知 发布时间:2013-01-12简介我们可通过扩充容量和 / 或改变 RAID 级别的方式来重新配置联机虚拟磁盘。注: 跨接式虚拟磁盘 (如 RAID 10、 50 和 60)无法重新配置…

bash shell sed 获取第一行_老司机给出的关于 shell 脚本的8个建议,必收!

这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条。毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈…

springmvc与mysql实例_Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

摘要:本文主要讲了如何使用Maven来搭建SpringMybatisSpringMVCMySql的搭建实例,文章写得很详细,有代码有图片,最后也带有运行的效果。一、准备工作1. 首先创建一个表:CREATE TABLE t_user (USER_ID int(11) NOT NULL A…

dbm和mysql使用场景_mysql基本用法总结

1 下载安装官网下载:http://www.mysql.com/注意需要一个Oracle账号才能下载。2 启动mysql将mysql安装目录:设置为环境变量,并将:\bin目录加入环境变量中。启动命令行,输入:mysqld以启动mysql的守护进程。3 …

java违反唯一约束异常_Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)...

Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868).............................遇到这种问题解决方法1. 使用 约束条件查找包含的表明以及 表的字段select a.constraint_name,a.constraint_type,b.column_name,b.table_namefrom…

js中的if与Java中的if_JS直接if参数的用法JS中!和!!区别

经常在JS中见一些代码直接if(参数),然后参数调用的时候是将元素自己传下去。例如下面代码:functiontest1(obj){if(obj){alert($(obj).val());}else{alert("has not obj");}}我们分别点击上面的两个输入框显示如下:解释:实际上相当于java中的重载&#xff…

vs2019能写Java吗_Visual studio2019打包程序过程

要想打包visual studio中的程序我们需要用到setup用于自定义安装部署的项目方案。但是在VS2019中不见了,微软是有意废除安装项目的,合作了一个第三方的安装项目单独使用。我们可以从官网上把Visual Studio Installer 项目扩展下载下来。地址:…

java继承的终极奥义_java学习笔记12-继承

继承就是子类继承父类的特征和行为有时候单一划分某个类别并不能处理所有情况,某些类别下有明显不同的子类,这些子类虽然拥有类似的行为和属性,但是他们各自发生的这些行为的方式或者属性对某些结果的影响是不一样的,这就需要划分…

flink java 并行度_flink solt和并行度

简介Flink运行时主要角色有两个:JobManager和TaskManager,无论是standalone集群,flink on yarn都是要启动这两个角色。JobManager主要是负责接受客户端的job,调度job,协调checkpoint等。TaskManager执行具体的Task。Ta…

java 写传奇游戏吗,文字版传奇游戏

学习java中IO操作自己写的一个小文字游戏,写了一天半两千多行,有点low的,因为没有使用到数据库,所以数据存放在文本文档中,大部分代码都是在处理往文档中读写内容, 就显得有些繁琐,主要锻炼了自…

【Dart】P0 Win、Mac 使用与安装

Dart 使用与安装 Dart 下载安装Windows 版本MacOS版本处于境外安装 Dart 开发工具 Dart 下载安装 Windows 版本 安装网址: http://gekorm.com/dart-windows/ 安装后测试: dart --versionMacOS版本 首先安装 Homebrew: 终端输入&#xff…

php cachelock,巧用lock解决缓存击穿的解决方案

背景缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。解决方案1、设置热点数据永远不过期…

mysql 目录更改 php,Linux下更改MySQL目录

MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步: 1、home目录下建立da更改MySQL目录MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:1、home目录下建立data…

php扩展返回字符数组,PHP扩展之数组字符串处理

今天介绍一下PHP扩展来处理数组和字符串,附带一个对比原生PHP的处理效率:我的测试机是装的PHP5.6.12,实现下面这个功能:function phprandstr($a, $z, $n) {$b array();$max count($a);for ($i 0; $i $tmp "";for ($j 0; $j $z…

jsp源码oracle数据库,JSP与oracle数据库交互案例

本案例为咖啡销售情况录入查询系统一、数据输入系统:1. 设计输入信息页面代码如下:咖啡管理系统——录入系统欢迎来到录入系统vcm0gYWN0aW9uPQ"inputaction.jsp" method"post" name"form1" id"form1">咖啡名…

崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析

2013数据库大会:崔华-基于Oracle的SQL优化案例分析崔华的新书即将出版,其数据库大会上的演讲也非常精彩,他的新书十分值得期待。2013年中国数据库技术大会第二天的"Oracle架构与优化"专场中,来自中航信资深Oracle数据库工程师崔华为…

模板消息 php实例,PHP微信模板消息操作示例

本文实例讲述了PHP微信模板消息操作方法。分享给大家供大家参考,具体如下:微信SDK:class Oauth {//获得全局access_tokenpublic function get_token(){//如果已经存在直接返回access_token//if($_SESSION[access_token] && $_SESSION…

linux设置静态ip后端口不能上网,Centos7设置静态IP后无法上网的解决方法

在VMWare中安装的本地虚拟机CentOS7操作系统,动态IP地址会经常变化,设置成静态IP地址后,本地局域网可以互相访问,但CentOS7系统无法访问互联网,按以下步骤解决这个问题。1、以系统管理员打开VMWare2、选择虚拟网络编辑…