您的位置:首页 > 数据库 > MySQL

慢查询日志及分析工具

2016-05-26 17:45 513 查看
环境: ubuntu14.04 mysql5.7

当查询超过一定时间没有返回结果的时候,才会记录慢查询日志

慢查询日志可以找到执行效率缓慢的sql语句,为数据库优化做提供帮助

慢查询日志默认不开启也不必一直开启,需要进行采样分析时手动开启

相关参数
slow-querg-log=on/off
-- 是否开启慢查询日志
slow_query_log_file=filename
指定慢查询日志保存路径及文件名,默认存放/usr/local/mysql/data/hostname-slow.log
long_query_time=2
-- 指定2秒后未返回结果的的查询语句属于慢查询
long-queries-not-using-indexes
-- 记录所有没有使用到索引的查询语句
min_examined_row_limit=1000
-- 记录那些由于查找了多余1000次而引发的慢查询
log-slow-admin-statements
-- 记录那些慢的OPTIMIZE TABLE,ANAKYZE TABLE和ALTER TABLE语句
log-slow-slave-statements
-- 记录由slave所产生的慢查询


一、启动
-参数中写入my.cnf文件中,需重启
-不重启修改慢查询配置
SET global.slow_query_log=1            开启慢查询日志
SET global.long_query_time=3           3秒后未返回结果的的查询语句属于慢查询
其他命令可以通过以下命令查阅
> show variables like '%slow%';


二、慢查询日志分析工具
1.mysqldumpslow

mysql自带分析工具,不宜看出,只做简单统计

2.mysqlsla

backmysql.com 出品的分析工具

·下载
官网下载或在系统提示符下下载

# wget http://backmysql.com/scripts/mysqlsla-2.03.tar.gz[/code]       ·解压
# tar zxvf mysqlsla-2.03.tar.gz
mysqlsla-2.03/
mysqlsla-2.03/Changes
mysqlsla-2.03/INSTALL
mysqlsla-2.03/README
mysqlsla-2.03/Makefile.PL
mysqlsla-2.03/bin/
mysqlsla-2.03/bin/mysqlsla
mysqlsla-2.03/META.yml
mysqlsla-2.03/lib/
mysqlsla-2.03/lib/mysqlsla.pm
mysqlsla-2.03/MANIFEST
# cd mysqlsla-2.03/                              //进入安装目录//
·执行perl脚本检查包依赖关系
# perl Makefile.PL                               //配置//
·编译 安装

# make
# make install
使用方法

# mysqlsla -lt slow nengjian-slow.log
Report for slow logs: nengjian-slow.log
2 queries total, 1 unique
Sorted by 't_sum'
Grand Totals: Time 7 s, Lock 0 s, Rows sent 2, Rows Examined 0
______________________________________________________________________ 001
Count         : 2  (100.00%)
Time          : 7.001213 s total, 3.500606 s avg, 3.000447 s to 4.000766 s max  (100.00%)
Lock Time (s) : 0 total, 0 avg, 0 to 0 max  (0.00%)
Rows sent     : 1 avg, 1 to 1 max  (100.00%)
Rows examined : 0 avg, 0 to 0 max  (0.00%)
Database      :
Users         :
root@localhost  : 100.00% (2) of query, 100.00% (2) of all users
Query abstract:
SET timestamp=N; SELECT sleep(N);
Query sample:
SET timestamp=1464159700;
select sleep(3);


3.percona-toolkit (未)

依赖包

percona-toolkit
perl-IO-Socket-SSL

perl-Net-libIDN

perl-Net-SSLesy

三、删除慢查询日志
慢查询日志会不断的增长。因此只在做采样分析这样的特别工作时才开启,其他时候则是关闭的,无用的慢查询日志要及时删除。

1.关闭慢查询日志

注释掉my.cnf 配置文件中关于慢查询日志的参数

2.删除日志文件

# rm -f /usr/local/mysql/data/hostname-slow.log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息