(一)Mysql优化小技巧-开启并使用工具查看慢查询日志

Mysql优化问题首先需要先开启慢查询监控的功能。

1.使用语句show variables  like 'slow_query%' 查询慢查询监控是否开启。

得到的结果为:

slow_query_log  OFF

slow_query_log_file E:\software\mysql-8.0.18-winx64\data\DESKTOP-79UV3JR-slow.log

 

2.使用show variables like 'long_query_time'查询监控慢查询时间长度.

得到的结果:

long_query_time 10.000000

 

3.开启慢查询

set global slow_query_log='ON'

 

4.执行有慢查询语句后,打开慢查询日志,里边有其中一条记录

# User@Host: root[root] @ localhost [127.0.0.1] Id: 11

# Query_time: 19.395067 Lock_time: 0.114423 Rows_sent: 1976762 Rows_examined: 5930286

use training;

SET timestamp=1586607646;

SELECT

a.date_str,

a.shopCode,

a.add_car_pv,

(

SELECT

b.shop_type

FROM

dp_shop b

WHERE

a.shopCode = b.shop_code

) shop_type

FROM

dp_car_copy a

ORDER BY

a.shopCode,

a.add_car_pv,

a.date_str;

以上信息他们分别是:

第一行:用户id;用户的ip信息;线程号;

第二行:查询耗时的时间,单位以毫秒单位;获得锁的时间;返回结果的行数;扫描的行数;

第三行:执行具体时间。

第四行:具体的sql语句。

 

虽然慢查询日志记录在文本里边,我们可直接打开查看,但是真正在产线中,慢查询日志太大,可能会有几个g,我们不能直接用记事本打开。所以有我们需要工具打开,结合mysqldumpslow.pl和perl两个辅助工具打开。

语法:

perl mysqldumpslow.pl -s r -t 10 E:\software\mysql-8.0.18-winx64\data\DESKTOP-79UV3JR-slow.log

说明:

可以根据自己需要进行排序,它支持一下几种排序:

-s order(c,t,l,r,at,al,ar)

c:总次数;t:总的时间;l:锁的时间;r:总的行数;at,al,ar:t,l,r平均数【例如:at = 总时间/总次数】

-t  top 指定取出前面x个作为结果输出

得到的结果如下:

Count: 1 Time=22.09s (22s) Lock=0.00s (0s) Rows=1976762.0 (1976762), root[root]@localhost

SELECT

a.date_str,

a.shopCode,

a.add_car_pv,

(

SELECT

b.shop_type

FROM

dp_shop b

WHERE

a.shopCode = b.shop_code

) shop_type

FROM

dp_car_copy a

ORDER BY

a.shopCode,

a.add_car_pv,

a.date_str

 

Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows=0.0 (0), 0users@0hosts

E:\software\mysql-N.N.N-winx64\bin\mysqld.exe, Version: N.N.N (MySQL Community Server - GPL). started with:

TCP Port: N, Named Pipe: MySQL

# Time: N-N-11T12:N:N.500081Z

# User@Host: root[root] @ localhost [N.N.N.N] Id: N

# Query_time: N.N Lock_time: N.N Rows_sent: N Rows_examined: N

use training;

SET timestamp=N;

SELECT

a.date_str,

a.shopCode,

a.add_car_pv,

(

SELECT

b.shop_type

FROM

dp_shop b

WHERE

a.shopCode = b.shop_code

) shop_type

FROM

dp_car_copy a

ORDER BY

a.shopCode,

a.add_car_pv,

a.date_str

 

Died at mysqldumpslow.pl line 162, <> chunk 2.

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值