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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
                    慢查询日志(不包括获取锁的时间)

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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
9天前
|
SQL 缓存 关系型数据库
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置
75 0
|
1月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
|
2月前
|
SQL 关系型数据库 MySQL
MySQL - 慢查询优化
MySQL - 慢查询优化
|
2月前
|
存储 监控 关系型数据库
MySQL Redo Log解密:事务故事的幕后英雄
MySQL Redo Log解密:事务故事的幕后英雄
25 0
|
2月前
|
存储 缓存 关系型数据库
Mysql专栏 - redo log日志细节
Mysql专栏 - redo log日志细节
63 0
|
3月前
|
存储 缓存 关系型数据库
MySQL update执行流程到 redo log深入理解
MySQL update执行流程到 redo log深入理解
46 0
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL企业版与标准版功能对比:如何选择适合您的版本?
随着数字化时代的到来,企业对于数据处理的需求越来越高,而数据库作为数据处理的核心,其性能和成本成为了企业关注的焦点。阿里云全新推出的PolarDB MySQL企业版和标准版,以全新的架构和优化,为企业提供了高性能、低成本的数据库解决方案。但在功能上,这两个版本有很多差异,我们该如何选择呢?
55 2
|
3月前
|
SQL 关系型数据库 MySQL
MySQL SQL性能分析 慢查询日志、explain使用
MySQL SQL性能分析 慢查询日志、explain使用
87 0
|
3月前
|
存储 SQL 缓存
MySQL `innodb_flush_log_at_trx_commit` 参数
MySQL `innodb_flush_log_at_trx_commit` 参数