MySQL慢查询语句的定位

时间:2022-10-26 16:45:30

使用以下语句可以查询相关的配置和日志所在位置:

show variables like '%slow%';

MySQL慢查询语句的定位

名词解释:

log_slow_admin_statements: 打开后可以将一些比较慢的管理语句,如optimize table,analyze table,alter table 等操作写入到慢查询语句。

log_slow_slave_statements: 可以将一些复制查询的语句写入到慢查询log中

slow_launch_time: 判定thread create是否超过阈值,超过这个值得语句将会被写入到log中。

slow_query_log:是否写慢查询log的开关

slow_query_log_file:慢查询日志所在的相对路径,默认在数据库的管理目录下,windows在C:\ProgramData\MySQL\MySQL Server 5.7\Data\下。

可以使用这个语句,实时的查询当前的慢查询语句:

show global status like '%slow%';

MySQL慢查询语句的定位

显示累计到当前的所有慢查询的数目。

使用以下语句,查询当前慢查询的SQL语句的阈值:

show variables like '%long_query_time%';

MySQL慢查询语句的定位

long_query_time: 当查询语句超过这个阈值,将会把SQL语句记录到慢日志里。

我们可以使用一些命令动态去启动,关闭和更改这些设置这一设置

SET GLOBAL slow_query_log =’ON’|’OFF’;

SET GLOBAL long_query_time = 3;

也可以去配置文件下进行手工配置,打开默认的配置文件my.cnf或者my.ini:

log-output=FILE

general-log=0

general_log_file="WIN-GSQ7DOK3HEL.log"

slow-query-log=1

slow_query_log_file="WIN-GSQ7DOK3HEL-slow.log"

long_query_time=5

slow_launch_time =3

重启MySQL服务,可以看到相应的参数以全局的形式被修改。

我们可以打开对应目录下的*************-slow.log 可以看一些执行比较慢的语句:

Notepad看到的日志可读性较差,可以使用notepad++等工具来查看,效果会比较好:

MySQL慢查询语句的定位

当然我们也可以使用Mysql自带的工具来查看日志,可以快速的提取我们需要的重要信息:

mysqldumpslow -r -t 2 日志目录\-slow.log

注意:如果没有perl环境需要首先安装perl环境,并在perl的bin目录下执行以下命令:

Perl mysqldumpslow.pl的路径 + mysqldumpslow -r -t 2 -a 日志目录\-slow.log

命令会展示出,系统中最慢的两条语句并按照升序排列。