mysql -结合例子进行 日志 分析以及 mysqldumpslow 监控分析-04

一、设计脚本

1、设计一个Jmeter脚本,调用接口查询数据,数据库表数据量大且未加索引,压测结果TPS低,响应时间长

2、 执行Jmeter 脚本

[root@demo testdemo]# /usr/local/apache-jmeter-5.1.1/bin/jmeter -n -t tomcat-2.jmx

 

3、服务器 top 命名 查看哪个应用CPU高

 

 

二、日志分析

1、命令行查看慢日志

(补充 如果rm -f删除了slow.log文件,需要重启应用和mysql服务,然后才会重新生成slow.log文件,如果slow.log 没有生成,则重启应用和mysql 服务)

[root@demo ~]# tail -f /mysql/logs/slow.log

 

三、mysqldumpslow 监控分析

1、查看   mysqldumpslow 帮助文档

mysqldumpslow 参数详解表

参数缩写含义使用示例适用场景
--verbose -v 显示详细解析过程 mysqldumpslow -v /var/log/mysql-slow.log 调试时查看工具如何处理日志
--debug -d 启用调试模式(输出更详细的信息) mysqldumpslow -d /var/log/mysql-slow.log 排查工具解析异常时使用
--help 显示帮助信息 mysqldumpslow --help 快速查阅参数列表
-s ORDER 指定排序规则:
al: 平均锁时间
ar: 平均返回行数
at: 平均查询时间(默认)
c: 出现次数
l: 总锁时间
r: 总返回行数
t: 总查询时间
mysqldumpslow -s c /var/log/mysql-slow.log 按频率排序找出高频慢查询
-r 反转排序结果(默认降序,-r改为升序) mysqldumpslow -s t -r /var/log/mysql-slow.log 查看耗时最短的查询
-t NUM 仅显示前 NUM 条结果 mysqldumpslow -t 10 /var/log/mysql-slow.log 快速定位 Top N 慢查询
-a 不抽象化数字(默认将数字替换为 N,字符串替换为 S mysqldumpslow -a /var/log/mysql-slow.log 需查看具体数值时(如 WHERE id=100)
-n NUM 抽象化数字时至少保留 NUM 位(默认全部抽象) mysqldumpslow -n 5 /var/log/mysql-slow.log 保留长数字的部分特征(如 user_id=12345 显示为 user_id=N2345
-g PATTERN 仅分析包含指定关键词的查询 mysqldumpslow -g "ORDER BY" /var/log/mysql-slow.log 筛选特定类型的慢查询(如排序、连接操作)
-h HOSTNAME 匹配日志文件名中的主机名(支持通配符 * mysqldumpslow -h "db-server-*" /var/log/mysql-slow.log 多主机日志合并时按主机名过滤
-i NAME 匹配实例名(适用于多实例环境) mysqldumpslow -i "instance1" /var/log/mysql-slow.log MySQL 多实例部署时区分日志
-l 不从总时间中减去锁时间(默认会减去) mysqldumpslow -l /var/log/mysql-slow.log 需单独分析锁等待时间时

 

返回记录最多的10条:mysqldumpslow -s r -t 10 /mysql/logs/slow.log

访问次数最多的10条:mysqldumpslow -s c -t 10 /mysql/logs/slow.log
返回记录最多的、包含select的10条: mysqldumpslow -s r -t 10 -g 'select' /mysql/logs/slow.log

 查询出来的结果分析解释:

count:sql出现次数

Time:sql执行时间 (750次总的时长)
Lock : 锁时间
Rows:结果返回行数
root: 执行用户
select id,username,job,from users where id -N :  执行的sql

posted @ 2025-06-10 21:31  Shafir莎菲尔  阅读(31)  评论(0)    收藏  举报