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 
相关文章
|
9月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
930 6
|
10月前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
187 1
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
204 0
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
278 0
|
10月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
599 158
|
10月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1598 152
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1107 156
|
10月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
643 156
|
10月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
761 161

推荐镜像

更多