MySQL高级--Show Profile和全局查询日志
-
是什么:是mysq|提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量
-
官网: http://dev.mysql.com/doc/refman/5. 5/en/show-profile.html
-
默认情况下,参数处于关闭状态,并保存最近15次的运行结果
-
分析步骤:
-
是否支持,看看当前的mysq|版本是否支持
- Show variables like 'profiling'
-
默认是关闭,使用前需要开启
-
开启功能,默认是关闭,使用前需要开启
-
show variables like 'profiling' ;
-
set profiling=on;
-
-
运行SQL :
-
select * from emp group by id%10 limit 150000;
-
select * from emp group by id%20 order by 5;
-
-
查看结果,show profiles;
-
诊断SQL,show profile cpu,block io for query 上一步前面的问题SQL数字号码;
-
参数备注:
-
type:
-
ALL:显示所有 的开销信息
-
BLOCK IO :-显示块IO相关开销
-
CONTEXT SWITCHES-.上下文切换相关开销
-
CPU:-显示CPU相关开销信息
-
IPC:--显示发送和接收相关开销信息
-
MEMORY:--显示内存相关开销信息
-
PAGE FAULTS:-显示页面错误相关开销信息
-
SOURCE:-显示和Source_ _function, Source_ file, Source_ line相关的开销信息
-
SWAPS:-显示交换次数相关开销的信息
-
-
-
日常开发需要注意的结论
-
converting HEAP to MyISAM查询结果太大,内存都不够用了往磁盘上搬了。
-
Creating tmp table创建临时表:
-
拷贝数据到临时表
-
用完再删除
-
-
Copying to tmp table on disk把内存中临时表复制到磁盘,危险! ! !
-
locked
-
-
- 全局查询日志:
-
配置启用
-
在mysql的my.cnf中,设置如下:
-
#开启
general_ log=1 -
#记录日志文件的路径
general_ log_ file=/path/logfile -
#输出格式
log_ output=FILE
-
-
编码启用
-
命令
-
set global general_ log=1;
-
set global log_output='TABLE';
-
此后,你所编写的sq|语句,将会记录到mysq|库里的general log表,可以用下面的命令查看
-
select * from mysql.general_log;
-
-
永远不要在生产环境开启这个功能。
-