mysql dba系统学习(9)slow query log慢查询日志功能

简介:
                    慢查询日志(不包括获取锁的时间)

1,开启慢查询日志功能

    以前的版本中开启慢查询日志功能的参数是--log_slow_queries在my.cnf文件中指定,但是现在新的版本中用参数--slow_query_log和--slow_query_log_file来指定

slow_query_log=1
slow_query_log_file=/tmp/mysqlslow.log
 重新启动mysql

mysql> show variables like "%slow%";
+---------------------+--------------------+
| Variable_name       | Value              |
+---------------------+--------------------+
| log_slow_queries    | ON                 |
| slow_launch_time    | 2                  |
| slow_query_log      | ON                 |
| slow_query_log_file | /tmp/mysqlslow.log |
+---------------------+--------------------+
4 rows in set (0.00 sec)



2,慢查询相关的 参数long_query_time 

当查询超过long_query_time指定的时间,那么就会记录在慢查询日志文件中,默认是10秒

mysql> show variables like "%long%";
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| long_query_time    | 10.000000 |

我们来吧时间调短试试,看看什么变化

mysql> set session long_query_time=1;   调到1秒
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%long%";
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| long_query_time    | 1.000000 |
| max_long_data_size | 1048576  |
+--------------------+----------+
2 rows in set (0.00 sec)

mysql> use test;
Database changed
mysql> create table t as select * from information_schema.tables;
Query OK, 53 rows affected (0.12 sec)
Records: 53  Duplicates: 0  Warnings: 0
mysql> insert into t  select *  from t;
Query OK, 3392 rows affected (0.11 sec)
Records: 3392  Duplicates: 0  Warnings: 0


这个时候达到了1秒钟了所以就要记录sql语句
mysql> insert into t  select *  from t;
^[[AQuery OK, 6784 rows affected 
(1.15 sec)
Records: 6784  Duplicates: 0  Warnings: 0

mysql> system more /tmp/mysqlslow.log
/usr/local/mysql/libexec/mysqld, Version: 5.1.70-log (Source distribution). star
ted with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
# Time: 130903 18:46:28
# User@Host: root[root] @ localhost []
# Query_time: 1.150157  Lock_time: 0.000205 Rows_sent: 0  Rows_examined: 13568
use test;
SET timestamp=1378205188;
insert into t  select *  from t;

3,慢查询相关的 参数log_queries_not_using_indexes

如果log_queries_not_using_indexes为ON的话,当执行一个sql语句的时候,如果一个表没有索引就会把这个信息记录在慢查询文件中

mysql> show variables like "%log_queries_not%"
   -> ;
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)
我们来吧log_queries_not_using_indexes设置为ON的时候来试试吧

mysql> set global log_queries_not_using_indexes=on;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%log_queries_not%";
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON    |
+-------------------------------+-------+
1 row in set (0.01 sec)


mysql> show index from t;   表t没有索引
Empty set (0.00 sec)

mysql> select * from t where TABLE_NAME="xxxxxxxxxxx";
Empty set (0.11 sec)

这个时候慢日志文件记录下来了这个sql语句

mysql> system  tail /tmp/mysqlslow.log;
# User@Host: root[root] @ localhost []
# Query_time: 1.150157  Lock_time: 0.000205 Rows_sent: 0  Rows_examined: 13568
use test;
SET timestamp=1378205188;
insert into t  select *  from t;
# Time: 130903 18:58:17
# User@Host: root[root] @ localhost []
# Query_time: 0.100749  Lock_time: 0.057377 Rows_sent: 0  Rows_examined: 27136
SET timestamp=1378205897;
select * from t where TABLE_NAME="xxxxxxxxxxx";
mysql> 


4,工具mysqldumpslow用来分析sql语句慢查询


[root@test4 Desktop]# mysqldumpslow  -s t -t 2  /tmp/mysqlslow.log 

Reading mysql slow query log from /tmp/mysqlslow.log
Count: 1  Time=1.15s (1s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t  select *  from t

Count: 1  Time=0.04s (0s)  Lock=0.06s (0s)  Rows=0.0 (0), root[root]@localhost
 select * from t where TABLE_NAME="S"


本文转自陈仲阳0 51CTO博客,原文链接:http://blog.51cto.com/wolfword/1287992


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1507 55
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
1055 5
图解MySQL【日志】——Redo Log
|
缓存 Java 编译器
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
451 16
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
1903 13
|
SQL 缓存
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
311 4
|
SQL 存储 关系型数据库
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
2106 0
|
12月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
655 158

推荐镜像

更多