mysqlsla分析MySQL数据库慢查询日志

默北 MySQL210,689字数 2103阅读7分0秒阅读模式

mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等。

一、使用文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

# mysqlsla -lt slow mysql-slow.log

或者文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

# mysqlsla -lt slow mysql-slow.log -sf “+SELECT” -db dbName -top 10 -sort t_sum

参数说明:
lt:表示日志类型,有slow, general, binary, msl, udl。
sf:[+-][TYPE],[TYPE]有SELECT, CREATE, DROP, UPDATE, INSERT,例如”+SELECT,INSERT”,不出现的默认是-,即不包括。
db:要处理哪个库的日志。
top:表示取按规则排序的前多少条。
sort:按某种规则排序,t_sum按总时间排序, c_sum按总次数排序。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

二、分析结果
总查询次数 (queries total), 去重后的sql数量 (unique)
输出报表的内容排序(sorted by)
最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.
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语句文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

三、安装文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
# tar zxvf mysqlsla-2.03.tar.gz
# cp mysqlsla-2.03/bin/mysqlsla /usr/local/bin

如果提示“Can’t locate DBI.pm”,执行以下命令文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

# yum install perl-DBI perl-DBD-MySQL -y
# mysqlsla -lt slow slow.log

四、实例文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

# mysqlsla /tmp/mysqlslow.log | less

Auto-detected logs as slow logs
Report for slow logs: /tmp/mysqlslow.log
6 queries total, 6 unique
Sorted by ‘t_sum’
Grand Totals: Time 0 s, Lock 0 s, Rows sent 13, Rows Examined 13
______________________________________________________________________ 001 ___
Count : 1 (16.67%)
Time : 2.321 ms total, 2.321 ms avg, 2.321 ms to 2.321 ms max (47.20%)
Lock Time (s) : 629 ?s total, 629 ?s avg, 629 ?s to 629 ?s max (77.75%)
Rows sent : 8 avg, 8 to 8 max (61.54%)
Rows examined : 8 avg, 8 to 8 max (61.54%)
Database :
Users :
root@ 192.168.1.100 : 100.00% (1) of query, 100.00% (6) of all users文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

Query abstract:
SET timestamp=N; SHOW variables LIKE ‘S’;文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

Query sample:
SET timestamp=1252395365;
show variables like ‘%character%’;
……
格式说明如下:
总查询次数 (queries total), 去重后的sql数量 (unique)
输出报表的内容排序(sorted by)
最重大的慢sql统计信息, 包括平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

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百分比文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

Query abstract, 抽象后的sql语句
Query sample, sql语句文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

除了以上的输出, 官方还提供了很多定制化参数, 是一款不可多得的好工具.
官方网站:http://hackmysql.com/mysqlsla文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/ 文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 22/01/2014 06:52:09
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/mysqlsla_analysis_of_mysql_database_slow_query_log/
评论  2  访客  2
    • 让爱拥抱明天
      让爱拥抱明天 9

      不错

    评论已关闭!