mysql 慢查询日志分析

mysql慢查询:

慢查询相关的变量

slow_query_log:该参数控制着慢查询的状态, 1表示开启状态 ,0 表示关闭状态

slow_query_log_file:慢查询日志路径

long_query_time:最大查询阀值,查询的时间超过这个值就视为慢查询并且将其记录到慢查询日志中,慢查询日志路径

通过slow_query_log_file 这个变量设置

log_queries_not_using_indexes:没有使用到索引的查询语句是否记录到慢查询日志中。

log_slow_slave_statements:

log_slow_admin_statements:

与慢查询相关的状态变量:

Slow_queries:慢查询日志文件中查询语句的条数

慢查询日志格式:

# Time: 140919  4:34:28  sql语句执行的时间

# [email protected]: root[root] @  [192.168.57.108]  Id: 19260444 用户名 和服务器Ip 执行线程Id

# Query_time: 9.556629  Lock_time: 0.000035 Rows_sent: 2606718  Rows_examined: 2606718

查询时间                等待锁的时间            查询到的记录数       索引扫描或表扫描数

SET timestamp=1411072468;   #  写入慢查询日志的时间

SELECT /*!40001 SQL_NO_CACHE */ * FROM `cm_players`; #  sql 语句

慢查询日志分析:

系统自带的日志分析工具: mysqldumpslow

[[email protected] mysql]# 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  ,-t  , -g

-s: 表示排序.可以根据sql的执行次数 c,总的耗时 t,总的锁等待时间 l ,总的返回行数 r ,

默认为降序(c,t,l,r),前面加个一个a就表示升序排序(ac,at,al,ar)

-t:显示前几行

-g:类似于模糊查询

查找包含left  join 的sql并且按照总的执行次数排序显示前2条sql语句

[[email protected] mysql]# mysqldumpslow  -s c  -t  2  -g left join   ldap-slow.log

Reading mysql slow query log from join ldap-slow.log

Can‘t open join: No such file or directory at /usr/bin/mysqldumpslow line 91.

Count: 11294  Time=4.51s (50925s)  Lock=0.15s (1659s)  Rows=11.1 (125610), EventDev[EventDev]@2hosts

select A.*,AES_DECRYPT(B.playerMobile ,"S") as playerMobile,B.submitBy,B.gameAccount,AES_DECRYPT(B.playerRealName,"S") as playerRealName,B.isVIP,B.gameId,B.gameAreaId,B.gameServerId from cm_sms_send_log A left join cm_events B using(eventId) where A.IsSend=N and A.SmsType !=N order by A.SendId limit N

Count: 858  Time=14.66s (12579s)  Lock=0.00s (0s)  Rows=26.9 (23072), EventDev[EventDev]@[192.168.119.45]

select a.*,b.cateName,c.tagName,

(select count(*) from cm_event_reasons aa where aa.isDelete=N and aa.ccId like concat(a.ccId,‘S‘)) as subCnt

from cm_event_reasons a left join cm_event_cates b on a.cateId=b.cateId

left join cm_event_tags c on a.tagId=c.tagId

where a.isDelete=N  and  N  order by reasonId  limit N,N

参考链接:

http://www.ccvita.com/410.html

http://blog.sina.com.cn/s/blog_53b13d950100vmc5.html

多种慢查询分析工具:

http://blog.csdn.net/jkh753/article/details/11590273

时间: 2024-10-02 18:41:11

mysql 慢查询日志分析的相关文章

记一次mysql慢查询日志分析

MySQL慢查询日志分析 分析工具mysqlsla的安装以及使用,mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等. 在CentOS下安装mysqlsla yum install perl-DBI perl-DBD-MySQL perl-devel -y #安装依赖包 wget ftp://ftp.tw.freebsd.org/pub/distfiles/mysqlsla-

mysql慢查询日志分析工具mysqlsla

一.介绍    mysqlsla是一个分析mysql慢日志的工具,可以分析出慢查询的原因,包括执行某条sql出现的次数及在slow log数据的百分比.执行时间.等待销的时间等. 公司的数据库有很多慢查询日志,导致的系统的负载很高,而mysql慢查询日志文件内容格式不太好看,经推荐使用mysqlsla:使用方便,操作简单. 二.安装mysqlsla 系统环境 CentOS release 6.6 (Final) 2.6.32-504.el6.x86_64 官网已经不能下载,所需要的文件已在百度云

mysql慢查询日志分析工具 mysqlsla(转)

mysql数据库的慢查询日志是非常重要的一项调优辅助日志,但是mysql默认记录的日志格式阅读时不够友好,这是由mysql日志记录规则所决定的,捕获一条就记录一条,虽说记录的信息足够详尽,但如果将浏览慢查询日志做为一项日常工作,直接阅读mysql生成的慢查询日志就有可能比较低效了. 除了操作系统命令直接查看slowlog外,mysql自己也提供了一个阅读slowlog的命令行工具:mysqldumpslow,该命令行提供了一定的分析汇总功能,可以将多个类似的SQL语句抽象显示成一个,不过功能还是

mysql慢查询日志分析工具使用

参考:  5种mysql日志分析工具比拼 http://blog.csdn.net/gzh0222/article/details/10384475 1.mysql-log-filter工具脚本使用说明: google code上找到的一个分析工具.提供了 python 和 php 两种可执行的脚本.http://code.google.com/p/mysql-log-filter/ (需要搬梯子爬墙),51cto下载链接: 使用方法:(这里只介绍python的使用方法) python mysq

mysql慢查询日志分析

如何开启慢查询日志? 在mysql配置文件my.cnf中增加 log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)long_query_time=2 (记录超过的时间,默认为10s)log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)log-long-format (如果设置了,所有没有使用索

ELK-Logstash MySQL 慢查询日志分析

#mysql_slow.conf input {   file {     type => "mysql-slow"     path => "/var/log/mysql_slow_log.log"     } }   filter { if [type] == "mysql-slow" { #grep { # ignore '# Time:' as we use the SET timestamp to get the time.

Mysql慢查询日志过程

原创地址 :http://itlab.idcquan.com/linux/MYSQL/922126.html mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考.本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步. 1.mysql慢查询日志 打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加

mysql慢查询日志切割,日志分析

#!/usr/bin/env python #coding:utf8 import os,sys import datetime,shutil,subprocess from config.config import slow_config class cut_mysql(object): mysql_user,mysql_pass,date_day,slow_log_name,slow_log_path,mysqlsla_log_name,mysqldumpslow_log_name,new_

mysql慢查询日志进行按库切割重写文件然后分析

需求: 把每天的慢查询日志进行按库切割 对每个库的慢查询日志进行分析 思路: 工具/功能 一般统计信息 高级统计信息 脚本 优势 mysqldumpslow 支持 不支持 perl mysql官方自带 mysqlsla 支持 支持 perl 功能强大,数据报表齐全,定制化能力强. mysql-explain-slow-log 支持 不支持 perl 无 mysql-log-filter 支持 部分支持 python or php 不失功能的前提下,保持输出简洁 myprofi 支持 不支持 ph