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;

浙公网安备 33010602011771号