show profile

功能

  • 当你执行一个复杂的 SQL 查询时,这个命令可以帮助你了解查询的各个部分花费了多少时间,从而找到可能的性能瓶颈。
  • 默认情况下,参数处于关闭状态,并保存最近15次的运行结果

开启

查看是否支持

SHOW VARIABLES LIKE 'profiling';

开启

默认情况下,profiling 可能没有被启用。你可以使用以下命令来启用它:

SET profiling = 1;

或者,你可以在 my.cnfmy.ini 配置文件中设置 profiling = 1 来永久启用它。

使用

  1. 执行sql语句,如下
SELECT * FROM time_attend_data LIMIT 10;
SELECT COUNT(*) FROM time_attend_data GROUP BY id%10 LIMIT 150000;
SELECT COUNT(*) FROM time_attend_data GROUP BY id%20 ORDER BY 5;
  1. 输入检查指令
SHOW PROFILES;

他的显示如下在这里插入图片描述

  1. 查询详细的执行过程: show profile cpu,block io for query n参数(n为上一步前面的问题SQL数字号码Query ID)在这里插入图片描述
SHOW PROFILE cpu,block io FOR QUERY 2;

关闭

当你完成分析后,可以使用以下命令来禁用 profiling:

SET profiling = 0;
  1. 启用 profiling

  2. 执行你的查询
    执行你想要分析的查询。

  3. 查看 profiling 结果
    使用 SHOW PROFILES; 命令来查看 profiling 的结果。

这个命令会返回一个表格,其中包含了多个列,如 Query_IDStatusDuration 等。每一行都代表查询执行过程中的一个步骤,Duration 列显示了该步骤所花费的时间。
6. 禁用 profiling(如果需要):

SHOW PROFILES 的输出

输出通常包含以下列:

  • Query_ID: 查询的标识符。
  • Sequence: 查询执行步骤的序号。
  • State: 查询执行步骤的状态或操作。
  • Duration: 该步骤所花费的时间(秒)。
  • …(可能还有其他列,具体取决于 MySQL 的版本和配置)

注意事项

  • 不是所有的 MySQL 存储引擎都支持 profiling。例如,InnoDB 支持 profiling,但 MyISAM 可能不支持。
  • 在生产环境中长时间启用 profiling 可能会对性能产生影响,因为它会收集额外的信息。因此,建议在需要时临时启用 profiling,并在分析完成后禁用它。
  • 在某些情况下,即使启用了 profiling,也可能不会收集到任何信息。这可能是因为查询太简单,或者存储引擎不支持 profiling。
  • SHOW PROFILES 命令只显示最近一个查询的 profiling 结果。如果你执行了多个查询并希望查看它们的 profiling 结果,你需要在每个查询之后立即执行 SHOW PROFILES;
  • 在 MySQL 8.0 及更高版本中,SHOW PROFILES 已被弃用,并可能在未来的版本中完全移除。如果你正在使用 MySQL 8.0 或更高版本,并希望分析查询性能,可以考虑使用 EXPLAIN 命令或 Performance Schema。
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值