当前位置:首页 > 文章列表 > 数据库 > MySQL > MySQL sys 的语句平均延迟直方图怎样读取

MySQL sys 的语句平均延迟直方图怎样读取

来源:17golang原创 2026-10-31 02:42:51 0浏览 收藏

排查 MySQL 延迟时,先看一张分布图往往比盯着某一条慢 SQL 更快找到方向。sys.ps_statement_avg_latency_histogram() 做的事情很具体:它读取 Performance Schema 已跟踪的归一化语句摘要,把每条语句的平均延迟放入区间,再用文本字符展示每个区间有多少条语句。

官方地址:https://dev.mysql.com/doc/refman/8.4/en/sys-ps-statement-avg-latency-histogram.html

要点速览
  • 这张图统计的是“语句摘要的平均延迟分布”,不是请求级 P95、P99,也不是一次执行的耗时。
  • Total Statements、Buckets 和 Bucket Size 决定了你该怎样读横向区间。
  • 发现高延迟尾部后,还要回到 digest、调用时间窗和采集配置定位具体语句。

MySQL sys 直方图先回答了什么

执行过程不需要传入参数:

-- 读取当前实例中被 Performance Schema 跟踪的归一化语句平均延迟分布
CALL sys.ps_statement_avg_latency_histogram()\G;

输出的每一行代表一个平均延迟区间,例如从几十毫秒到下一段几十毫秒。行首的数字是落入该区间的语句数量,竖线后面的字符只是按比例绘制的文本条。它回答的是“哪些平均延迟范围聚集了多少条语句”,不回答“最近一分钟有多少请求超时”。

这里的“语句”是归一化后的 digest。不同参数值、但结构相同的 SQL,通常会汇总到同一个摘要中。因此同一个桶里的数量更适合用来判断语句形态的延迟分布,不应直接当作业务请求数。

MySQL sys 语句平均延迟直方图的统计对象关系说明图,展示 Performance Schema、归一化语句、平均延迟和直方图之间的边界
图1:结构说明图,展示 Performance Schema 语句摘要如何成为 MySQL sys 直方图的统计输入;这是静态说明图,不是运行截图。

先读懂三个摘要字段,再看区间

输出末尾的摘要是阅读入口,建议按下面的顺序核对:

字段实际含义排查时怎么用
Total Statements参与分布统计的语句摘要总数先确认样本是否足够,不能把少量摘要当成全站流量
Buckets延迟区间的数量结合横轴行数判断分布覆盖到了哪里
Bucket Size单个区间的时间宽度用它换算区间边界,不能只看字符条长度

例如某一行写成 (66 - 133ms) 14,重点是“14 个归一化语句的平均延迟落在这个区间”。这不是说每条语句都执行了 66 到 133 毫秒,也不是 14 次请求的合计时长。

点号、星号和井号属于图例单位。它们把数量压缩成可读的字符条,具体一个字符代表多少个单位,要以输出顶部的图例为准。比较两个实例时,先比较数字和桶宽,再比较字符视觉长度。

MySQL sys 延迟直方图的桶宽、延迟区间和字符单位关系说明图,展示摘要字段与高延迟尾部的对应关系
图2:结构说明图,展示 Bucket Size、延迟区间和字符单位之间的阅读关系;这是结果示意图,不是运行证据。

从高延迟桶继续定位,而不是直接改参数

直方图适合做第一轮分流。若高延迟区间有明显长尾,先记下区间边界和观察时间,再查询语句分析视图,查看 digest 文本、执行次数、总延迟与平均延迟之间是否一致:

-- 从语句分析视图中取出平均延迟较高的摘要,继续定位具体 SQL 形态
SELECT digest_text, count_star, avg_latency, max_latency
FROM sys.statement_analysis
ORDER BY avg_latency DESC
LIMIT 10; -- 先取少量样本,避免排查时被大量文本淹没

如果直方图的尾部很长,但 statement_analysis 中只有少数摘要偏高,优先检查这些摘要对应的索引、锁等待、临时表和数据量变化。如果所有桶都偏高,问题可能在实例资源、连接层或统一的执行计划变化,不能只盯着某一条 SQL。

对比前后结果时,务必保持相近的采集窗口,并记录 Performance Schema 是否被清空或重置。一个刚重置过的实例和一个运行了数天的实例,直方图的样本范围不同,直接比较字符条会得到错误结论。

这张图的边界与排查清单

  • 它不是请求百分位数:平均延迟分桶无法替代应用侧的 P95/P99,尤其不能用来证明尾部请求体验。
  • 它依赖采集范围:未被 Performance Schema 记录的语句不会出现在图中,低样本量时结论要保守。
  • 它不提供根因:高平均延迟只说明需要继续查 digest、锁、IO、计划或数据分布。
  • 它适合先分流:先确定延迟集中在哪些区间,再选择具体语句做 EXPLAIN、锁等待和资源指标分析。

相关问题

MySQL sys 直方图能直接看出最慢的一次执行吗?

不能。它按归一化语句的平均延迟分桶,不能代替单次执行明细或应用侧的尾延迟指标。

为什么字符条很长,但数字并不大?

字符条使用图例规定的压缩单位,视觉长度不是毫秒数。应以每行的语句数量、图例和 Bucket Size 为准。

如何把直方图结果和慢 SQL 联系起来?

先记录区间与时间窗口,再到 sys.statement_analysis 或对应 digest 摘要中按平均延迟排序,最后结合索引、锁等待和执行计划确认根因。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go go-colorful 怎样在HCL空间混合两种颜色Go go-colorful 怎样在HCL空间混合两种颜色
上一篇
Go go-colorful 怎样在HCL空间混合两种颜色
Go go-colorful 怎样生成具有区分度的配色集合
下一篇
Go go-colorful 怎样生成具有区分度的配色集合
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    801次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    792次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    879次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    849次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    680次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码