功能概述
数据库负载分析是 DBbrain 提供的实时数据库性能诊断功能,基于 MySQL Performance Schema(PFS)秒级采集活跃会话、等待事件、SQL 执行统计和锁阻塞关系等多维度性能数据,以 AAS(Average Active Sessions,平均活跃会话数)为核心指标,通过可视化方式直观呈现数据库负载状况。该功能主要提供以下能力:
多维度负载分析:支持从等待事件(Waits)、SQL、主机(Host)、用户(User)、数据库(DB)五个维度拆分和分析数据库负载,快速定位性能瓶颈来源。
AAS 负载趋势可视化:以柱状图或折线图展示 AAS 负载随时间的变化趋势,并提供 vCPU 参考线辅助判断数据库是否处于高负载状态。
SQL 执行分析:提供 Top SQL 排名、SQL 摘要模板匹配和29项性能指标时序趋势(包括每次调用均值和每秒速率),支持深入分析 SQL 执行性能。
锁竞争分析:基于 InnoDB 锁阻塞关系实时采集,构建阻塞链路关系图,定位持有锁的源头线程和等待链路,辅助解决锁等待超时等问题。
Scope 过滤与交互式下钻:支持在 Top 指标列表中单击某一维度值,自动过滤负载趋势图,实现逐层下钻分析。
自动粒度路由:根据查询时间跨度自动选择秒级、分钟级、5分钟级或小时级数据粒度,在查询精度和性能之间取得平衡。
背景信息
什么是 AAS(平均活跃会话数)
AAS(Average Active Sessions)是衡量数据库实例负载的核心指标,表示在指定时间窗口内同时处于活跃状态(非 Sleep)的平均会话数量。AAS 值越高,说明数据库并发负载越大。
当 AAS 值持续低于实例的 vCPU 核数时,说明数据库负载在正常范围内。
当 AAS 值持续超过 vCPU 核数时,表明数据库可能存在性能瓶颈,需要关注。
什么是 Performance Schema
MySQL Performance Schema(简称 PFS)是 MySQL 内置的性能数据采集框架,通过在 MySQL 服务器内部设置探针(Instruments),采集线程活动、SQL 执行、等待事件、锁信息等多维度运行时性能数据。DBbrain 的性能综合分析功能基于 PFS 进行秒级数据采集和实时分析。
多维度分析能力
性能综合分析支持从以下五个维度对数据库负载进行拆分分析:
维度 | 说明 | 典型场景 |
Waits(等待事件) | 按等待事件类型(如 IO、锁、CPU 等)拆分负载 | 判断负载瓶颈是 IO、锁竞争还是 CPU 消耗 |
SQL | 按 SQL 摘要模板拆分负载 | 定位导致高负载的具体 SQL 语句 |
Host(主机) | 按客户端主机地址拆分负载 | 判断哪台应用服务器产生了过高负载 |
User(用户) | 按数据库用户名拆分负载 | 判断哪个数据库用户的请求最多 |
DB(数据库) | 按数据库名拆分负载 | 判断哪个数据库的负载最高 |
实现机制
数据采集原理
性能综合分析通过以下三个采集通道,秒级轮询目标数据库实例的
performance_schema 库,获取实时性能数据。采集通道 | 数据来源 | 采集周期 | 说明 |
活跃会话采集 | threads、events_statements_current、events_waits_current | 秒级 | 关联查询当前所有活跃前台线程的会话状态、正在执行的 SQL 和等待事件信息。每次采集为一次实时快照。 |
SQL 摘要增量采集 | events_statements_summary_by_digest | 秒级 | 采集每条 SQL 模板的累计执行统计(执行次数、延迟、锁等待、扫描行数等),通过两次采集取差值的方式计算增量变化。 |
锁阻塞关系采集 | data_lock_waits、threads | 秒级 | 采集当前时刻 InnoDB 引擎的锁阻塞关系,记录阻塞方和等待方的线程信息及正在执行的 SQL。 |
说明:
活跃会话采集会自动过滤系统库(
performance_schema、mysql、information_schema、sys)以及非活跃连接(Sleep 状态),确保数据聚焦在用户业务负载上。当线程处于活跃状态但没有等待任何 IO、锁或同步事件时,系统将其等待事件标记为
CPU,表示线程正在消耗 CPU 进行计算。数据处理流程
采集到的原始性能数据经过以下处理流程,转化为可查询的时序分析数据。

关键处理环节说明:
1. 秒级采集:采集服务以秒级频率对目标实例的
performance_schema 进行查询,获取线程活动快照和锁阻塞关系。2. 增量计算:SQL 摘要数据采用"两次采集取差值"的增量计算方式。当检测到增量值为负数(数据库重启导致 PFS 统计归零)时,系统自动识别并跳过异常数据,确保数据准确性。
3. 多窗口聚合:原始数据通过聚合引擎进行三级时间窗口聚合(1分钟、5分钟、1小时),在查询精度和存储成本之间取得平衡。
4. 自动粒度路由:查询时根据时间跨度自动选择合适的数据源,短时间范围使用原始秒级数据,长时间范围使用聚合数据,保证查询效率。
AAS 负载计算方式
AAS(Average Active Sessions)的核心计算公式为:
AAS = 时间窗口内的活跃会话采样次数 / 时间窗口秒数
例如,在1分钟的时间窗口内,如果有120次活跃会话采样记录(每秒采集1次,平均每次采集到2个活跃会话),则该分钟的 AAS = 120 / 60 = 2.0,表示平均有2个并发活跃会话。
多维度拆分原理:在计算总 AAS 的同时,系统按所选维度(等待事件、SQL、主机、用户、数据库)对活跃会话进行分组统计,展示每个维度值对总负载的贡献占比。图表中展示负载最高的 Top 10维度值,其余合并为 “others”。
锁阻塞关系分析原理
锁竞争分析基于 InnoDB 的
data_lock_waits 表采集实时锁阻塞关系数据,采用以下分析流程:1. 数据采集:秒级采集当前时刻的锁阻塞关系快照,记录阻塞方和等待方的连接 ID、用户、主机、事务 ID 及正在执行的 SQL。
2. 关系图构建:将采集到的阻塞、等待记录构建为有向关系图,自动识别阻塞链路的根节点(持有锁的源头线程)。
3. 层级展示:按阻塞链路的依赖层级排序展示,根节点为持有锁的源头线程,子节点按等待层级依次排列。支持检测和展示循环阻塞的场景。
4. 时间轴定位:提供时间范围内存在锁数据的时间区间列表,您可以选择具体的快照时间点查看该时刻的锁阻塞详情。
数据库负载分析是 DBbrain 提供的实时数据库性能诊断功能,基于 MySQL Performance Schema(PFS)秒级采集活跃会话、等待事件、SQL 执行统计和锁阻塞关系等多维度性能数据,以 AAS(Average Active Sessions,平均活跃会话数)为核心指标,通过可视化方式直观呈现数据库负载状况。该功能主要提供以下能力:
多维度负载分析:支持从等待事件(Waits)、SQL、主机(Host)、用户(User)、数据库(DB)五个维度拆分和分析数据库负载,快速定位性能瓶颈来源。
AAS 负载趋势可视化:以柱状图或折线图展示 AAS 负载随时间的变化趋势,并提供 vCPU 参考线辅助判断数据库是否处于高负载状态。
SQL 执行分析:提供 Top SQL 排名、SQL 摘要模板匹配和29项性能指标时序趋势(包括每次调用均值和每秒速率),支持深入分析 SQL 执行性能。
锁竞争分析:基于 InnoDB 锁阻塞关系实时采集,构建阻塞链路关系图,定位持有锁的源头线程和等待链路,辅助解决锁等待超时等问题。
Scope 过滤与交互式下钻:支持在 Top 指标列表中单击某一维度值,自动过滤负载趋势图,实现逐层下钻分析。
自动粒度路由:根据查询时间跨度自动选择秒级、分钟级、5分钟级或小时级数据粒度,在查询精度和性能之间取得平衡。