MySQL - 慢查询日志 & SHOW PROFILES

慢查询日志

记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询

可以在mysql控制台直接输命令,但是只针对当前数据库,且重启后失效。
还可以在my.cnf里面直接配置。
my.ini是MySQL数据库中使用的配置文件,修改这个文件可以达到更新配置的目的。

MySQL - 慢查询日志 & SHOW PROFILES_第1张图片

 

show variables like '%slow_query_log%'; //查看慢日志文件功能是否开启及日志文件的位置(windows默认在C:\ProgramData\MySQL\MySQL Server 5.7\Data)
set global slow_query_log=1; //开启慢日志文件功能(仅针对当前数据库,重启MySQL会失效,一劳永逸则在my.cnf中配置)
show variables like 'long_query_time%'; //查询超过几秒算慢sql
select sleep(10); //模仿运行超过10秒的sql命令
show global status like '%slow_queries%'; //查看当前系统有多少慢sql

当然,不可能一条一条去慢日志文件中查看,MySQL提供了日志分析工具:mysqldumpslow
mysqldumpslow --help;

下面是mysqldumpslow命令后面常接的东西,具体解释见MySQL技术内幕p69。

MySQL - 慢查询日志 & SHOW PROFILES_第2张图片

后面接的是自己要分析的慢日志文件。

 


Show Profiles
(查看   sql语句(经过试验证明,不光只有查询语句,插入语句等也会显示)    在MySQL服务器里面的执行情况等)

MySQL - 慢查询日志 & SHOW PROFILES_第3张图片

先打开:
show variables like 'profiling'; //查看当前MySQL服务器是否支持该功能
set profiling=on; //打开(默认关闭)

下面可以正式使用:
show profiles; //查看结果(包含Query_ID)

MySQL - 慢查询日志 & SHOW PROFILES_第4张图片

show profile cpu,block io for query ${Query_ID}; //查看具体的某个Query
(可以看到每一步)

MySQL - 慢查询日志 & SHOW PROFILES_第5张图片

Status中出现的比较致命的东西:

MySQL - 慢查询日志 & SHOW PROFILES_第6张图片

你可能感兴趣的:(MySQL,mysql,数据库)