两个慢查询日志得存储路径及配置项含义

MySQL慢查询

sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询日期范围_sql语句查询范围

什么是慢查询

慢查询日志,顾名思义,就是查询慢的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。

慢查询配置慢查询基本配置配置项含义

slow_query_log

启动停止技术慢查询日志

slow_query_log_file

指定慢查询日志得存储路径及文件(默认和数据文件放一起

long_query_time

指定记录慢查询日志SQL执行时间得伐值(单位:秒,默认10秒)

log_queries_not_using_indexes

是否记录未使用索引的SQL

log_output

日志存放地方【TABLE】【FILE】【FILE,TABLE】

适用范围

配置了慢查询后,它会记录符合条件的SQLsql语句查询范围,包括:

示例

通过下面命令查看下上面的配置

sql语句查询日期范围_sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询范围

慢查询日志状态

1

COPY

show VARIABLES like '%slow_query_log%';

1
2
3
4
5
6
7
8

COPY

mysql> show VARIABLES like '%slow_query_log%';
+---------------------+------------------------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | D:Program FilesMySqldataDESKTOP-0VIUDQU-slow.log |
+---------------------+------------------------------------------------------+
2 rows in set, 1 warning (0.00 sec)

慢查询日志得存储路径

1

COPY

show VARIABLES like '%slow_query_log_file%';

1
2
3
4
5
6
7

COPY

mysql> show VARIABLES like '%slow_query_log_file%';
+---------------------+------------------------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------------------------+
| slow_query_log_file | D:Program FilesMySqldataDESKTOP-0VIUDQU-slow.log |
+---------------------+------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

慢查询日志SQL执行时间得伐值

1

COPY

show VARIABLES like '%long_query_time%';

sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询日期范围_sql语句查询范围

1
2
3
4
5
6
7

COPY

mysql> show VARIABLES like '%long_query_time%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set, 1 warning (0.00 sec)

是否记录未使用索引的SQL

1

COPY

show VARIABLES like '%log_queries_not_using_indexes%';

1
2
3
4
5
6
7

COPY

mysql> show VARIABLES like '%log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
1 row in set, 1 warning (0.00 sec)

日志存放的地方

1

COPY

show VARIABLES like 'log_output';

1
2
3
4
5
6
7

COPY

mysql> show VARIABLES like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
1 row in set, 1 warning (0.00 sec)

设置参数

sql语句查询日期范围_sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询范围

1
2
3
4
5

COPY

set global long_query_time=0;   --- 默认10秒,这里为了演示方便设置为0

set GLOBAL slow_query_log=1;   -- 开启慢查询日志

set global log_output='FILE,TABLE';  -- 项目开发中日志只能记录在日志文件中,不能记表中

注意:这些设置需要重新连接后才会生效

设置完成后,查询一些列表可以发现慢查询的日志文件里面有数据了。

1
2
3

COPY

cat /data1/localhost-slow.log  -- 多实例

cat /usr/local/mysql/data/localhost-slow.log  -- 单实例

因为在window系统做测试 所以使用gitbash测试

1

COPY

tail -f DESKTOP-0VIUDQU-slow.log

sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询日期范围_sql语句查询范围

慢查询解读

从慢查询日志里面摘选一条慢查询日志,数据组成如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14

COPY

#查询的执行时间
# Time: 2019-12-25T08:05:13.896259Z

#SQL执行的主机信息
# User@Host: root[root] @ localhost [::1] Id: 89

#SQL的执行信息,查询执行时间 锁定时间 发送的行数和扫描的行数
# Query_time: 0.000320 Lock_time: 0.000114 Rows_sent: 0 Rows_examined: 1

# SQL执行时间
SET timestamp=1577261113;

# 执行的SQL内容
UPDATE `account` SET balance = 100 WHERE id = 31;

sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询范围_sql语句查询日期范围

慢查询分析

慢查询的日志记录非常多,要从里面找寻一条查询慢的日志并不是容易事情sql语句查询范围一般来说都需要一些工具辅助才能快速定位到需要优化的SQL语句,下面介绍两个慢查询辅助工具

Mysqldumpslow

常用的慢查询日志分析工具,汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出。

语法

mysqldumpslow -s r -t 10 slocalhost-slow.log

1

COPY

mysqldumpslow -s t -t 10 /usr/local/mysql/data/mysql-slow.log 

sql语句查询日期范围_sql语句查询范围_sql语句中出现笛卡尔乘积 sql查询入门篇

pt_query_digest

是用于分析mysql慢查询的一个工具,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善有时因为某些原因如权限不足等,无法服务器上记录查询,这样的限制我们常常碰到。

安装步骤

perl的模块

1

COPY

yum install -y perl-CPAN perl-Time-HiRes

rpm安装

sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询日期范围_sql语句查询范围

1
2
3
4
5

COPY

cd /usr/local/src

wget percona.com/get/percona-toolkit.rpm

yum install -y percona-toolkit.rpm

工具安装目录在:/usr/bin

源码安装

1
2
3
4
5
6
7
8
9
10
11

COPY

cd /usr/local/src

wget percona.com/get/percona-toolkit.tar.gz

tar zxf percona-toolkit.tar.gz

cd percona-toolkit-2.2.19

perl Makefile.PL PREFIX=/usr/local/percona-toolkit

make && make install

工具安装目录在:/usr/local/percona-toolkit/bin

首先来看下一个命令

1
2
3
4
5
6
7

COPY

yum -y install 'perl(Data::Dumper)';

yum -y install perl-Digest-MD5

yum -y install perl-DBI

yum -y install perl-DBD-MySQL

查看慢查询命令

1

COPY

perl ./pt-query-digest --explain h=192.168.30.130,u=root,p=root /usr/local/mysql/data/localhost-slow.log

sql语句查询日期范围_sql语句中出现笛卡尔乘积 sql查询入门篇_sql语句查询范围

汇总信息【总的查询时间】、【总的锁定时间】、【总的获取数据量】、【扫描的数据量】、【查询大小

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注