MySQL_MySQL查询截取分析之使用show profile进行sql分析

1.引入

   当我们的系统在使用的过程中,出现了一些情况以后,我们通常会使用explain进行分析。但是呢当使用explain还是无法解决这一个问题的时候,我们呢需要更加深入的去分析系统的症结所在。那么这一个时候我们就需要借助于show profile。

2.show profile是什么?

   show profile是MySQL数据库提供的用来可以分析当前会话语句执行的资源消耗情况,可以用于SQL的调优测量。(类似于MySQL数据库执行步骤的一个详细的报告清单)。默认的情况下是处于关闭的转态,并保存最近15次的运行结果。

3.使用分析步骤

(1).查看show profile的状态,查看当前的数据库版本是否支持

(2).如果说数据库版本支持,那么这一个时候就可以使用该功能,那么在使用之前,先把它打开

(3).运行sql指令(随意运行,测试使用)

(4).使用 show profile查看SQL的执行情况

(5).show profile的诊断

show profile cpu,block io for query  + sql查询的编号;

如:查看3号sql 

我们现在主要使用的参数是cpu,block IO这俩个参数,其实我们还可以在看一下其他的参数信息,如下:

type:

all                 ----显示所有的开销信息
block io            ----显示块IO相关的开销
context switches    ----上下文切换相关开销
cpu                 ----显示cpu相关的开销信息
ipc                 ----显示发送和接受相关的开销信息
memory              ----显示内存相关的开销信息
page faults         ----显示分页错误相关的开销信息
source              ----显示和source_function,source_file,source_line相关的开销信息
swaps               ----显示交换次数相关的开销想

这一个信息显示了这一条SQL语句从MySQL数据库中一个完整流程以及其经过的时间。那么我们看到上面的这一个流程经过的信息比较多,那么如果说我们的SQL语句执行的慢,到底应该看哪一个参数信息呢?我们需要着重需要看四个参数,如果出现以下四个信息,那么我们的SQL语句就需要重点优化:

注重的参数如下:

converting HEAP to MyISAM :查询的结果太大,内存不够使用,需要往磁盘上移动

Creating tmp table :创建临时表 (临时表创建,推送,删除过程都会产生损耗)

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

locked : 数据库表锁了

猜你喜欢

转载自blog.csdn.net/u013185175/article/details/106805682