mysql查询执行过程中如何追踪耗时_使用PROFILE分析指令周期

PROFILE 是 MySQL 旧版查询阶段耗时分析功能,因不稳定、不维护、不支持预编译语句及精确等待分类,自 5.7 弃用、8.0 移除;现推荐 Performance Schema 或慢日志 + pt-query-digest 替代。PROFILE 是什么,为什么它现在基本没用了MySQL 的 PROFILE 功能(通过 SET profiling = 1 开启)曾用于查看某条语句在各执行阶段的耗时,比如 parsing、executing、sending data。但它从 MySQL 5.7 开始被标记为 deprecated,8.0 完全移除。官方明确不维护,且结果不稳定------同一语句多次执行,SHOW PROFILES 可能漏掉阶段,或把并发线程的耗时混在一起。不支持 prepared statement 的完整追踪 无法区分 CPU 时间和等待时间(比如锁等待、IO 等待全算进"executing"里) 查询计划变更后,profile 阶段名可能错位(比如 optimizer 初始化阶段被标成 "statistics") SHOW PROFILE FOR QUERY N 中的 N 是会话内序号,不是 query_id,重连即重置,线上复现困难 替代方案:用 Performance Schema 查真实指令周期真正能对应到"指令周期"级(如 mutex wait、file I/O、CPU cycles)的,只有 Performance Schema(PFS)。它默认开启(performance_schema = ON),但需手动启用对应消费者和仪器。先确认关键配置已开:performance_schema_events_stages_history_long_enabled = ON(记录长历史)、performance_schema_events_statements_history_long_enabled = ON 执行前设置会话级过滤:SET performance_schema_events_stages_history_long_size = 1000(避免被截断) 用 SELECT * FROM performance_schema.events_statements_history_long WHERE SQL_TEXT LIKE '%your_query%' 找到 EVENT_ID,再关联 events_stages_history_long 查每个阶段耗时 常见陷阱: 默认只采集 top-N 阶段,stages 表可能为空,必须开 _history_long 类表 TIMER_WAIT 是皮秒单位,要除以 1000000000000 转成秒,直接看数字容易误判 如果查询含子查询,每个子查询是独立 EVENT_ID,需递归关联,不能只盯最外层 更轻量、更准的现场诊断:使用 slow log + pt-query-digest当你要快速定位"哪条语句卡在哪个环节",比 PFS 更实用的是慢日志配合分析工具。关键是把 long_query_time 设低(比如 0.1),并打开 log_slow_extra = ON(MySQL 8.0.26+)。log_slow_extra 会输出 Query_time、Lock_time、Rows_sent、Rows_examined,还新增 Rows_affected 和 InnoDB_trx_id 配合 pt-query-digest --filter '$event->{Bytes} > 1024' /var/lib/mysql/slow.log,能筛出高网络开销语句 注意:Lock_time 包含所有锁等待(不只是 InnoDB row lock),如果它远大于 Query_time,说明有显式锁(SELECT ... FOR UPDATE)或 DDL 阻塞 容易忽略的一点: 唱鸭 音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体

相关推荐
_Jimmy_3 小时前
SQLAlchemy 复杂 SQL 执行指南与模板库
python·sql
六个九十度4 小时前
用python脚本访问被网关隔离的嵌入式设备
开发语言·python
千维百策6664 小时前
SRE 中如何消除琐务:提升工程效率与服务可靠性的实践方法
数据库
卓怡学长4 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea
GEO_ai_zhijian4 小时前
饮料生产线质量检测系统供应商哪家强
大数据·python
名不经传的养虾人4 小时前
从0到1:企业级AI项目迭代日记 Vol.65|最危险的故障不是崩溃,是悄悄换掉了正确答案
数据库·人工智能·ai编程·ai-agent·企业ai
程序员佳佳4 小时前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
绩隐金4 小时前
用AI开了本小说 九折归潮
数据库
heimeiyingwang4 小时前
【架构实战】MySQL索引优化:从慢查询到毫秒响应
数据库·mysql·架构
得闲喝茶4 小时前
跨表数据匹配——VLOOKUP、XLOOKUP
大数据·数据库·笔记·信息可视化·数据分析·excel