🤖 Ai回答: 在 MySQL 客户端命令行中,`PROFILE` 是一个用于分析 SQL 查询执行细节的工具,它能显示查询在各个执行阶段所消耗的时间和资源。该功能从 MySQL 5.0.37 开始引入,在 MySQL 5.7 中被标记为废弃(deprecated),并在 MySQL 8.0 中被彻底移除。
✅ 一、使用前提
仅适用于 MySQL 5.7 及更早版本。
MySQL 8.0+ 不支持 `SHOW PROFILE`,请改用 Performance Schema。
✅ 二、启用 Profile
默认情况下,`profiling` 是关闭的。需要手动开启:
sql
SET profiling = 1;
✅ 开启后,后续执行的每个 SQL 语句都会被自动记录性能分析数据。
✅ 三、查看已执行的查询列表
sql
SHOW PROFILES;
输出示例:
| Query_ID | Duration | Query |
| 1 | 0.00045600 | SELECT * FROM users WHERE id = 1 |
| 2 | 0.00123400 | SELECT COUNT(*) FROM orders WHERE status=1 |
由于 `SHOW PROFILE` 在 MySQL 8.0 中已被移除,推荐使用 Performance Schema 进行查询分析:
示例:使用 Performance Schema 分析慢查询
sql
启用相关 instrument 和 consumer
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'statement/%';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_statements_%';
查看最近执行的语句及其耗时
SELECT
DIGEST_TEXT AS query,
COUNT_STAR AS exec_count,
SUM_TIMER_WAIT / 1000000000 AS total_latency_sec,
AVG_TIMER_WAIT / 1000000000 AS avg_latency_sec
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;