慢查询日志分析脚本Mysql_slow_log_parser

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:  Mysql_slow_log_parser.txt  txt脚本的名字要改名为pl使用方式:./Mysql_slow_log_parser.pl /data/mysqldata/3306/data/zsd-slow.
text.gif Mysql_slow_log_parser.txt 
txt脚本的名字要改名为pl

使用方式:

./Mysql_slow_log_parser.pl /data/mysqldata/3306/data/zsd-slow.log

之前zsd-slow.log的内容:

/usr/local/mysql55/bin/mysqld, Version: 5.5.25-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /data/mysqldata/3306/mysql.sock
Time                 Id Command    Argument
# Time: 120702 12:10:27
# User@Host: root[root] @ localhost []
# Query_time: 1.558936  Lock_time: 0.000077 Rows_sent: 0  Rows_examined: 262144
use test;
SET timestamp=1341245427;
insert into t1 select * From t1;
# Time: 120702 12:10:31
# User@Host: root[root] @ localhost []
# Query_time: 3.077640  Lock_time: 0.000083 Rows_sent: 0  Rows_examined: 524288
SET timestamp=1341245431;
insert into t1 select * From t1;
# Time: 120702 12:10:38
# User@Host: root[root] @ localhost []
# Query_time: 6.081219  Lock_time: 0.000075 Rows_sent: 0  Rows_examined: 1048576
SET timestamp=1341245438;
insert into t1 select * From t1;
# Time: 120702 12:10:58
# User@Host: root[root] @ localhost []
# Query_time: 2.402953  Lock_time: 0.000152 Rows_sent: 1048576  Rows_examined: 2097152
SET timestamp=1341245458;
select * from t1 order by name;
# Time: 120702 12:13:18
# User@Host: root[root] @ localhost []
# Query_time: 13.259154  Lock_time: 0.000144 Rows_sent: 0  Rows_examined: 2097152
SET timestamp=1341245598;
insert into t1 select * From t1;
# Time: 120702 12:16:03
# User@Host: root[root] @ localhost []
# Query_time: 25.903786  Lock_time: 0.000089 Rows_sent: 0  Rows_examined: 4194304
SET timestamp=1341245763;
insert into t1 select * From t1;

之后输出的内容:

 Starting...
### 3 Queries
### Total time: 22.418013, Average time: 7.472671
### Taking 3.077640 , 6.081219 , 13.259154  seconds to complete
### Rows analyzed 524288, 1048576 and 2097152
SET timestamp=XXX;
insert into tXXX select * From tXXX;

SET timestamp=1341245598;
insert into t1 select * From t1;


### 1 Query
### Total time: 2.402953, Average time: 2.402953
### Taking 2.402953  seconds to complete
### Rows analyzed 2097152
SET timestamp=XXX;
select * from tXXX order by name;

SET timestamp=1341245458;
select * from t1 order by name;


### 1 Query
### Total time: 1.558936, Average time: 1.558936
### Taking 1.558936  seconds to complete
### Rows analyzed 262144
use test;
SET timestamp=XXX;
insert into tXXX select * From tXXX;

use test;
SET timestamp=1341245427;
insert into t1 select * From t1;


这个脚本可以很好的汇总和分析慢查询日志,晚上写个定时的脚本,输出发送邮件给自己,可以很好的查看,Mysql服务器慢查询的问题。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
10
分享
相关文章
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
17 5
图解MySQL【日志】——Redo Log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
图解MySQL【日志】——两阶段提交
两阶段提交是为了解决Redo Log和Binlog日志在事务提交时可能出现的半成功状态,确保两者的一致性。它分为准备阶段和提交阶段,通过协调者和参与者协作完成。准备阶段中,协调者向所有参与者发送准备请求,参与者执行事务并回复是否同意提交;提交阶段中,若所有参与者同意,则协调者发送提交请求,否则发送回滚请求。MySQL通过这种方式保证了分布式事务的一致性,并引入组提交机制减少磁盘I/O次数,提升性能。
17 4
图解MySQL【日志】——两阶段提交
MySQL原理简介—7.redo日志的底层原理
本文介绍了MySQL中redo日志和undo日志的主要内容: 1. redo日志的意义:确保事务提交后数据不丢失,通过记录修改操作并在系统宕机后重做日志恢复数据。 2. redo日志文件构成:记录表空间号、数据页号、偏移量及修改内容。 3. redo日志写入机制:redo日志先写入Redo Log Buffer,再批量刷入磁盘文件,减少随机写以提高性能。 4. Redo Log Buffer解析:描述Redo Log Buffer的内存结构及刷盘时机,如事务提交、Buffer过半或后台线程定时刷新。 5. undo日志原理:用于事务回滚,记录插入、删除和更新前的数据状态,确保事务可完整回滚。
MySQL日志
本文介绍了MySQL中三个重要的日志:binlog、redolog和undolog。binlog记录数据库更改操作,支持数据恢复、复制和审计;redolog保证事务的原子性和持久性,实现crash-safe;undolog用于事务回滚及MVCC的实现。每个日志都有其独特的作用和应用场景,确保数据库的稳定性和数据一致性。
图解MySQL【日志】——磁盘 I/O 次数过高时优化的办法
当 MySQL 磁盘 I/O 次数过高时,可通过调整参数优化。控制刷盘时机以降低频率:组提交参数 `binlog_group_commit_sync_delay` 和 `binlog_group_commit_sync_no_delay_count` 调整等待时间和事务数量;`sync_binlog=N` 设置 write 和 fsync 频率,`innodb_flush_log_at_trx_commit=2` 使提交时只写入 Redo Log 文件,由 OS 择机持久化,但两者在 OS 崩溃时有丢失数据风险。
14 3
图解MySQL【日志】——Buffer Pool
Buffer Pool 是数据库管理系统(DBMS)中用于缓存磁盘数据页的内存区域,主要包含数据页、索引页、undo 页等。它通过减少磁盘 I/O 提升性能,特别是在处理大型数据库时效果显著。查询时,整个数据页而非单条记录会被加载到 Buffer Pool 中,以提高访问效率。
16 0
图解MySQL【日志】——Buffer Pool
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
222 15
Mysql、Oracle审计日志的开启
通过上述步骤,可以在 MySQL 和 Oracle 数据库中启用和配置审计日志。这些日志对于监控数据库操作、提高安全性和满足合规性要求非常重要。确保正确配置审计参数和策略,定期查看和分析审计日志,有助于及时发现并处理潜在的安全问题。
58 11
图解MySQL【日志】——Undo Log
Undo Log(回滚日志)是 MySQL 中用于实现事务原子性和一致性的关键机制。在默认的自动提交模式下,MySQL 隐式开启事务,每条增删改语句都会记录到 Undo Log 中。其主要作用包括:
18 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等