MySQL高级开发--慢查询日志分析(二)--分析慢SQL(show profile)

MySQL高级开发–慢查询日志分析(二)–分析慢SQL(show profile)

标签(空格分隔): MySQL


  • MySQL高级开发慢查询日志分析二分析慢SQLshow profile
    • show profile是什么
    • 怎么使用它

上文中已经通过开启慢查询日志已经将需要分析的SQL通过mysqldumper工具抓取出来了,然后我们需要根据一些分析手段分析这些SQL进行分析,除了之前讲过的通过执行计划分析之后,如果问题得不到解决的话,那就需要通过show profile 获取sql的执行信息。

show profile是什么

SHOW PROFILE是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优测量(连接时长,锁表时长等信息)

怎么使用它

1.判断当前版本是否支持该分析命令

#默认情况是关闭的,需要使用时开启
show varibles like 'profiling';

2.开启功能,默认是关闭,使用前需要开启

set profiling = on;

3.运行指定SQL
4.查看结果:show profiles;
会列出所有在这个开启期间执行的SQL,并附上QUERY ID

5.诊断SQL

show profile cpu,block io for queryid # queryid 对应4中的查询id

除了上面的cpu、block io还有以下几个类型:

ALL : 显示所有的开销信息
BLOCK IO : 显示块IO相关开销
CONTEXT SWITCHES : 上下文切换相关开销
CPU : 显示CPU相关开销信息
IPC : 显示发送和接收相关开销信息
MEMORY : 显示内存相关开销信息
PAGE FAULTS : 显示页面错误相关开销信息
SOURCES :显示Source_function,Source_file,Source_line相关开销信息
SWAPS : 显示交换次数相关开销信息

6.在日常开发中,分析中需要注意的几个点

converting HEAP to MyISAM查询结果太大,内存都不够用了,往磁盘上搬
Creating tmp table 创建临时表进行计算
Copying to tmp table on disk 把内存中的临时表复制到磁盘
locked

你可能感兴趣的:(mysql)