MySQL show profile

MySQL show profile

show profile是MySQL提供的可以用来分析当前会话中语句执行的资源消耗情况的工具,可以用于sql调优的测量。默认是处于关闭状态的,会保存最近15次的运行结果。

1.查看状态

show variables like 'profiling';

image-20220905231116749

2.开启show profile

默认是关闭的,执行以下语句将其开启:

set profiling='on';

image-20220905231243916

3.服务器执行sql

执行完要分析的sql后,执行show profile语句获取执行sql的query_id

image-20220905231617168

4.通过query_id查看sql执行情况

根据查询id查询出该条sql执行的具体情况,如:

show profile cpu,block io for query 2;

image-20220905231816121

show profile 选项:

column description
all 所有的开销信息
block io 块io相关开销信息
context switches 上下文切换相关开销信息
cpu cpu相关开销信息
ipc 发送和接收相关开销信息
memory 内存相关开销信息
page faults 页面错误相关开销信息
source source_function,source_file,source_line相关开销信息
swaps 交换次数相关开销信息

show profile的结果如果有如下四个之一,表示sql可能存在性能问题:

  • converting heap to MyISAM是查询出来的结果集太大,内存不够用
  • creating temp table是创建了临时表,也非常耗时
  • copying to temp table on disk是把内存中的临时表复制到了磁盘中,特别耗时
  • locked是表被锁了
posted @ 2022-09-05 23:30  msnhce  阅读(142)  评论(0)    收藏  举报