【MySql】 慢日志查询工具之mysqlsla

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
mysqlsla 是一款由hackmysql.com推出的一款日志分析工具,功能非常强大. 图形输出数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等!
1 安装
[root@rac3 software]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
[root@rac3 software]# tar zvxf mysqlsla-2.03.tar.gz
[root@rac3 software]# mv mysqlsla-2.03 mysqlsla
[root@rac3 software]# cd mysqlsla
[root@rac3 mysqlsla]# ls
bin  Changes  INSTALL  lib  Makefile.PL  MANIFEST  META.yml  README
Makefile.PL  MANIFEST     META.yml    
[root@rac3 mysqlsla]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for mysqlsla
[root@rac3 mysqlsla]#
[root@rac3 mysqlsla]# make && make install
cp lib/mysqlsla.pm blib/lib/mysqlsla.pm
cp bin/mysqlsla blib/script/mysqlsla
/usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/mysqlsla
Manifying blib/man3/mysqlsla.3pm
Installing /usr/lib/perl5/site_perl/5.8.8/mysqlsla.pm
Installing /usr/share/man/man3/mysqlsla.3pm
Installing /usr/bin/mysqlsla
Writing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/mysqlsla/.packlist
Appending installation info to /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
2 使用
在mysql中执行查询语句,之后使用mysqlsla 工具查询
[root@rac3 bin]# mysqlsla /opt/mysql/data/slowquery.log 
Auto-detected logs as slow logs
Report for slow logs: /opt/mysql/data/slowquery.log
3 queries total, 3 unique
Sorted by 't_sum'
Grand Totals: Time 1 s, Lock 0 s, Rows sent 2, Rows Examined 1.00M
______________________________________________________________________ 001 ___
Count         : 1  (50.00%)
Time          : 634.32 ms total, 634.32 ms avg, 634.32 ms to 634.32 ms max  (98.09%)
Lock Time (s) : 107.011 ms total, 107.011 ms avg, 107.011 ms to 107.011 ms max  (98.71%)
Rows sent     : 1 avg, 1 to 1 max  (50.00%)
Rows examined : 1.00M avg, 1.00M to 1.00M max  (99.80%)
Database      : test
Users         : 
        root@localhost  : 100.00% (1) of query, 100.00% (2) of all users
Query abstract:
SET timestamp=N; SELECT COUNT(N) FROM sbtest;
Query sample:
SET timestamp=1329572756;
select count(1) from sbtest;
______________________________________________________________________ 002 ___
Count         : 1  (50.00%)
Time          : 12.356 ms total, 12.356 ms avg, 12.356 ms to 12.356 ms max  (1.91%)
Lock Time (s) : 1.403 ms total, 1.403 ms avg, 1.403 ms to 1.403 ms max  (1.29%)
Rows sent     : 1 avg, 1 to 1 max  (50.00%)
Rows examined : 2.00k avg, 2.00k to 2.00k max  (0.20%)
Database      : 
Users         : 
        root@localhost  : 100.00% (1) of query, 100.00% (2) of all users
Query abstract:
SET timestamp=N; SELECT COUNT(N) FROM sbtest ,t1 WHERE t1.id=sbtest.id;
Query sample:
SET timestamp=1329572815;
select count(1) from sbtest ,t1 where t1.id=sbtest.id;
______________________________________________________________________ 003 ___
Count         : 1  (33.33%)
Time          : 12.356 ms total, 12.356 ms avg, 12.356 ms to 12.356 ms max  (0.00%)
Lock Time (s) : 1.403 ms total, 1.403 ms avg, 1.403 ms to 1.403 ms max  (1.29%)
Rows sent     : 1 avg, 1 to 1 max  (33.33%)
Rows examined : 2.00k avg, 2.00k to 2.00k max  (0.20%)
Database      : 
Users         : 
        root@localhost  : 100.00% (1) of query, 100.00% (3) of all users
Query abstract:
SET timestamp=N; SELECT COUNT(N) FROM sbtest ,t1 WHERE t1.id=sbtest.id;
Query sample:
SET timestamp=1329572815;
select count(1) from sbtest ,t1 where t1.id=sbtest.id;
输出解释:
queries total  总查询次数
unique           去除重复后的 sql 数量.
Sorted by       输出报表的内容排序.
Grand Totals slow sql 统计信息包括: 总执行时间, 等待锁时间, 结果行总数, 扫描行总数.
Count slow sql 的执行次数及占总的 slow log 数量的百分比.
Time 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总 slow sql 时间的百分比.
Lock Time 等待锁的时间.
Rows sent 结果行统计数量, 包括平均, 最小, 最大数量.
Rows examined 扫描的行数量.
Database 属于哪个数据库
Users username@hostname  执行sql的用户
Query abstract 精简后的sql语句
几个常用OPTION, 其他可查看官网文档
--log-type=type logs or -lt type logs
其中type logs 可为 slow, general, binary, msl or udl. 官方文档说是没有指定时, 会根据给定的日志文件自动检测, 但测试时失败, so, 最好指定该参数.
msl 是指 microslow patched 的慢日志.
udl 用户自定义的日志.
binary 因为 mysqlsla 不能直接解析 MySQL 的 binary log, 所以需先用 mysqlbinlog命令将其解析为文本. mysqlbinlog带有--short-form参数时, 则 LOG TYPE 需指定为 udl. 命令可类似于如下:
mysqlbinlog /opt/mysql/data/mysql-bin.000001 | mysqlsla -lt binary -
mysqlbinlog --short-form. /opt/mysql/data/mysql-bin.000001 | mysqlsla -lt udl -
--explain or -ex explain 每句 SQL, 默认没有启用
--databases=dbname1,dbnam2[,...] or -db dbname1,dbnam2[,...] or -D dbname1,dbnam2[,...]用于 --explain
--flush-qc 强制刷新查询缓存, 默认没有启用
--grep="PATTERN" 只解析满足条件的 SQL
--meta-filter="CONDTIONS" or -mf "CONDTIONS" CONDITIONS 格式为[meta][op][value],多个条件时, 中间以,分割.
[meta] 查看这里
[op] >, < r =. 当 [meta] 是基于字符串时, [op] 只能是 =.
[value] 数字 or 字符串.
--reports=REPORTS or -R REPORTS, 默认是 standard, REPORTS 可以是以,为分割的列表. 可选选项:standard, time-all, print-unique, print-all, dump
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
SQL 缓存 监控
MySQL缓存机制:查询缓存与缓冲池优化
MySQL缓存机制是提升数据库性能的关键。本文深入解析了MySQL的缓存体系,包括已弃用的查询缓存和核心的InnoDB缓冲池,帮助理解缓存优化原理。通过合理配置,可显著提升数据库性能,甚至达到10倍以上的效果。
|
2月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
4月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
260 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
218 14
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
100 15
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
2月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
121 6
|
2月前
|
SQL 关系型数据库 MySQL
MySQL入门指南:从安装到第一个查询
本文为MySQL数据库入门指南,内容涵盖从安装配置到基础操作与SQL语法的详细教程。文章首先介绍在Windows、macOS和Linux系统中安装MySQL的步骤,并指导进行初始配置和安全设置。随后讲解数据库和表的创建与管理,包括表结构设计、字段定义和约束设置。接着系统介绍SQL语句的基本操作,如插入、查询、更新和删除数据。此外,文章还涉及高级查询技巧,包括多表连接、聚合函数和子查询的应用。通过实战案例,帮助读者掌握复杂查询与数据修改。最后附有常见问题解答和实用技巧,如数据导入导出和常用函数使用。适合初学者快速入门MySQL数据库,助力数据库技能提升。
|
3月前
|
存储 关系型数据库 MySQL
使用命令行cmd查询MySQL表结构信息技巧分享。
掌握了这些命令和技巧,您就能快速并有效地从命令行中查询MySQL表的结构信息,进而支持数据库维护、架构审查和优化等工作。
373 9
|
2月前
|
SQL 监控 关系型数据库
MySQL高级查询技巧:子查询、联接与集合操作
本文深入解析了MySQL高级查询的核心技术,包括子查询、联接和集合操作,通过实际业务场景展示了其语法、性能差异和适用场景,并提供大量可复用的代码示例,助你从SQL新手进阶为数据操作高手。

推荐镜像

更多