SHOW PROFILE进行SQL分析/全局查询日志

是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可用于SQL调优的测量

默认情况下处于关闭状态,并保存最近15次运行结果

1.查看当前版本是否支持

SHOW VARIABLES LIKE 'profiling'

 2.开启

SET profiling=on;

3.运行SQL 查看结果

SELECT * FROM emp GROUP BY id % 10 LIMIT 150000;

SELECT * FROM emp GROUP BY id % 20 ORDER BY 5;

SHOW PROFILES;

4.诊断SQL

SHOW PROFILE cpu,block io for query 39;(39 上面问题SQL的queryID)
Duration:持续时间

 

 

 参数备注

ALL                                    显示所有的开销信息

BLOCK IO                         显示IO的相关开销

CONTEXT SWITCHES    上下文切换相关开销

CPU                                  显示CPU相关开销

IPC                                    显示发送和接收先关开销

MEMORY                          显示内存相关开销

PAGE FAULTS                  显示页面错误相关开销

SOURCE                           显示和Source_function,Source_file,Source_line相关的开销信息

SWAPS                             显示交换次数相关开销信息

5.日常开发中需要注意的结论

converting HEAP to MyISAM 查询结果太大,内存都不够用了往磁盘上搬了。

 

Creating tmp table 创建临时表 (创建临时表,拷贝数据到临时表,推送给用户,销毁临时表)

1.拷贝数据到临时表

2.用完再删除

 

Copying to tmp table on disk 把内存中的临时表复制到磁盘,危险!!

 

locked

6.全局查询日志

只能在测试环境用 不能在生产环境用

永远不要在生产环境中开启这个功能!!!

配置启用

在mysql的my.cnf中,设置如下:
#开启
general_log=1
#记录日志文件路径
general_log_file=/path/logfile
#输出格式
log_output=FILE

命令启用

set global general_log=1;
set global log_output='TABLE';
此后你编写的sql语句,将会记录在mysql库里的generel_log表,可以用下面的命令查看

select * from mysql.general_log;

 

 

 

posted @ 2021-05-06 13:31  1024荀  阅读(33)  评论(0)    收藏  举报