操作场景
当您的数据库实例出现性能抖动、SQL 响应变慢、锁等待超时等问题时,需要快速定位性能瓶颈所在。性能综合分析功能基于 MySQL Performance Schema(PFS)实时采集数据库活跃会话、等待事件、SQL 执行统计和锁阻塞关系等多维度性能数据,通过 AAS(Average Active Sessions,平均活跃会话数)指标,以可视化方式直观呈现数据库负载状况,帮助您高效诊断和优化数据库性能问题。
使用限制
限制项 | 限制说明 |
支持的数据库类型 | 仅支持云数据库 MySQL 和 TDSQL-C for MySQL 版。 |
数据库版本要求 | MySQL 8.0及以上版本。 |
功能开通限制 | |
PFS 总开关 | 数据库实例的 performance_schema 系统变量必须为 ON。 |
实例配额 | 公测期间,每个主账号默认最多可开启10个实例的性能综合分析。 |
数据保留时长 | 原始采集数据保留7天。 |
注意事项
开启性能综合分析功能会在数据库实例上启用 Performance Schema 的相关 Consumers 和 Instruments 配置,可能对实例性能产生微小影响。建议在业务低峰期开启。
关闭性能综合分析功能后,系统将停止对该实例的 PFS 数据采集,历史数据仍可在数据保留期内查询。
前提条件
已创建云数据库 MySQL 实例或 TDSQL-C MySQL 版实例,且实例版本为8.0及以上。
实例的
performance_schema 系统变量已设置为 ON。操作步骤
开启性能综合分析
1. 登录 DBbrain 控制台。
2. 在左侧导航栏,选择实例管理。
3. 在目标实例(MySQL 或 TDSQL-C MySQL 版)操作列单击配置。
4. 请仔细阅读开启数据库负载分析功能的说明及注意事项,确认无误后,开启数据库负载分析,单击确定。

说明:
开启操作需要数据库实例满足 PFS 支持条件(
performance_schema 为 ON 且版本 ≥ 8.0)。如果实例不满足条件,系统将提示具体原因:版本过低或 PFS 总开关未开启。
开启过程中系统会自动配置 Performance Schema 的 consumers 和 instruments,整个过程通常在几秒内完成。
开启负载分析功能对数据库性能有少量影响,根据公开资料,约在2%~10%之间,开启后请及时关注性能变化。
查看数据库负载分析
开启性能综合分析后,进入数据库负载分析页面。数据库负载分析页面展示实例的 AAS 负载趋势图和 Top 指标排名列表。
1. 登录 DBbrain 控制台。
2. 在左侧导航栏,选择全链路分析 > 性能综合分析。
3. 选择数据库负载分析页签。
4. 在页面顶部选择数据库类型(MySQL 或 TDSQL-C for MySQL)和目标实例。
5. 在页面顶部选择查询的时间范围。
时间选项 | 说明 | 数据粒度 |
近1分钟 | 查看最近1分钟的实时数据。 | 秒级粒度 |
近1小时 | 查看最近1小时的数据。 | 分钟级粒度 |
近1天 | 查看最近1天的数据。 | 5分钟级粒度 |
自定义时间范围 | 最大支持选择近7天内的数据。 | 系统根据时间跨度自动选择粒度 |
系统会根据查询的时间跨度自动选择最佳数据粒度。
时间跨度 | 自动粒度 |
< 10分钟 | 秒级(1秒) |
10分钟 ~ 5小时 | 分钟级(1分钟) |
5小时 ~ 24小时 | 5分钟级 |
≥ 24小时 | 小时级 |
6. 查看负载趋势图和 Top 指标排名列表。

趋势图说明
负载趋势图以柱状图或折线图的形式展示 AAS 负载随时间的变化趋势。
Y 轴:AAS 值(平均活跃会话数)。
X 轴:时间轴,按所选粒度显示时间标签。
vCPU 参考线:图表中以虚线标注实例的最大 vCPU 数,作为负载参考基线。当 AAS 持续超过此线时,说明数据库负载偏高。
图表切换:支持在柱状图和折线图之间切换。柱状图通过颜色堆叠展示各维度的负载占比;折线图以独立折线展示各维度的负载变化趋势。
维度切换
在趋势图左上方的下拉选择器中切换分析维度:
Waits:按等待事件类型拆分负载。常见的等待事件包括:
wait/io/table/sql/handler:表 IO 等待wait/synch/mutex/innodb/buf_pool_LRU_list_mutex:InnoDB 缓冲池互斥锁wait/synch/sxlock/innodb/hash_table_locks:InnoDB 哈希表锁wait/io/socket/sql/client_connection:客户端连接 IOwait/io/file/innodb/innodb_log_file:InnoDB 日志文件 IOCPU:线程正在消耗 CPU(非等待状态)User:按数据库用户名拆分负载。
SQL:按 SQL 摘要模板拆分负载。
Host:按客户端主机地址拆分负载。
DB:按数据库名拆分负载。
每个维度的趋势图展示 Top 10 维度值的负载占比,超出 Top 10 的部分合并为 others 显示。
Scope 过滤
当您需要聚焦分析某个特定维度值时,可以在 Top 指标列表中单击某一行数据,负载趋势图将自动添加 Scope 过滤条件,仅展示该维度值的负载数据。

例如:
单击 TOP DB 中的某个数据库名,趋势图将显示
Scope to : processlist_db : {数据库名} 过滤标签,仅展示该数据库的负载。单击 TOP Users 中的某个用户名,趋势图将显示
Scope to : processlist_user : {用户名} 过滤标签。单击 TOP Hosts 中的某个主机地址,趋势图将显示
Scope to : processlist_host : {主机地址} 过滤标签。单击过滤标签上的 x 可取消过滤,恢复查看全量数据。支持同时叠加多个不同维度的过滤条件。
查看锁竞争分析
1. 登录 DBbrain 控制台。
2. 在左侧导航栏,选择全链路分析 > 性能综合分析。
3. 选择数据库负载分析页签。
4. 在页面顶部选择数据库类型(MySQL 或 TDSQL-C for MySQL)和目标实例。
5. 在页面顶部选择查询的时间范围。
6. 查看负载趋势图下方展示的锁竞争分析列表。

展示所选时间范围内存在锁阻塞的时间段列表。
字段 | 说明 |
选择快照窗口 | 通过时间选择器指定要查看锁数据的时间段。 |
选择快照时间点 | 存在锁阻塞数据精确时间点。 |
选中某个快照时间点后,展示该时刻的锁阻塞详情。
参数名 | 说明 |
阻塞线程 ID | 持有锁并阻塞其他线程的线程 ID(即锁的持有者)。 |
连接 ID | 该线程对应的数据库连接 ID。 |
事务 ID | 该线程当前所在事务的 ID。 |
采集时间 | 该条锁竞争记录的采集时间点。 |
用户 | 发起该连接的数据库用户名。 |
主机 | 发起该连接的客户端主机 IP 地址。 |
阻塞线程数 | 当前被该线程阻塞的其他线程数量(红色高亮表示存在阻塞)。 |
等待时间(s) | 被阻塞线程等待锁释放的时间,单位为秒。 |
等待状态 | 被阻塞线程当前的等待状态(如 statistics 表示处于统计/查询优化阶段)。 |
SQL | 该线程正在执行或最后执行的 SQL 语句。 |
查看 Top 指标排名列表
1. 登录 DBbrain 控制台。
2. 在左侧导航栏,选择全链路分析 > 性能综合分析。
3. 选择数据库负载分析页签。
4. 在页面顶部选择数据库类型(MySQL 或 TDSQL-C for MySQL)和目标实例。
5. 在页面顶部选择查询的时间范围。
6. 查看负载趋势图下方展示 Top 指标排名列表。
TOP SQL

展示按 AAS 负载降序排列的 Top SQL 列表。
字段 | 说明 |
负载 | 该 SQL 模板的 AAS 负载值,以负载条形图直观展示。 |
SQL | SQL 摘要模板文本。 |
在 TOP SQL 列表中,支持通过搜索框输入关键词进行模糊查询(不区分大小写),快速过滤目标 SQL。
单击某条 SQL 后方的复制或查看按钮,可以复制 SQL 文本或查看 SQL 详情面板。SQL 详情面板包含两个页签:
SQL 文本:展示该 SQL 摘要模板对应的原始 SQL 文本列表(最多25条),每条原始 SQL 按所选维度展示负载分布。
SQL 指标:以折线图展示该 SQL 的29个性能指标时序趋势,包括:
指标类型 | 指标 | 说明 |
Per-Call(每次调用均值) | Avg latency (ms)/call | 每次调用平均延迟(毫秒)。 |
| Rows examined/call | 每次调用扫描行数。 |
| Rows sent/call | 每次调用返回行数。 |
| Rows affected/call | 每次调用影响行数。 |
| Lock time (ms)/call | 每次调用锁等待时间(毫秒)。 |
| Created tmp disk tables/call | 每次调用创建磁盘临时表数。 |
| Created tmp tables/call | 每次调用创建临时表数。 |
| Select full join/call | 每次调用全表 JOIN 次数。 |
| Select scan/call | 每次调用全表扫描次数。 |
| Sort merge passes/call | 每次调用排序合并次数。 |
| Sort rows/call | 每次调用排序行数。 |
| Sort range/call | 每次调用排序范围次数。 |
| Select range check/call | 每次调用范围检查次数。 |
| Sort scan/call | 每次调用排序扫描次数。 |
Per-Second(每秒速率) | Calls/sec | 每秒执行次数。 |
| Rows examined/sec | 每秒扫描行数。 |
| Rows sent/sec | 每秒返回行数。 |
| Rows affected/sec | 每秒影响行数。 |
| Lock time (ms)/sec | 每秒锁等待时间(毫秒)。 |
| Created tmp disk tables/sec | 每秒创建磁盘临时表数。 |
| Created tmp tables/sec | 每秒创建临时表数。 |
| Select full join/sec | 每秒全表 JOIN 次数。 |
| Select scan/sec | 每秒全表扫描次数。 |
| Sort merge passes/sec | 每秒排序合并次数。 |
| Sort rows/sec | 每秒排序行数。 |
| Sort range/sec | 每秒排序范围次数。 |
| Select range check/sec | 每秒范围检查次数。 |
| Sort scan/sec | 每秒排序扫描次数。 |
复合指标 | Aae | Average Active Executions,反映 SQL 的并发执行强度。计算公式为 Calls/sec x Avg latency (ms)/call / 1000。 |
TOP Waits
展示按 AAS 负载降序排列的 Top 等待事件列表。
字段 | 说明 |
负载 | 该等待事件的 AAS 负载值。 |
等待事件 | 等待事件名称,如 wait/io/table/sql/handler、wait/synch/sxlock/innodb/hash_table_locks 等。 |
单击某个等待事件行,负载趋势图将自动 Scope 到该等待事件,便于分析其负载随时间的变化趋势。
TOP Hosts
展示按 AAS 负载降序排列的 Top 客户端主机列表。
字段 | 说明 |
负载 | 该主机的 AAS 负载值。 |
主机 | 客户端主机 IP 地址。 |
单击某个主机行,负载趋势图将自动 Scope 到该主机地址,便于分析其负载随时间的变化趋势。
TOP Users
展示按 AAS 负载降序排列的 Top 数据库用户列表。
字段 | 说明 |
负载 | 该用户的 AAS 负载值 |
用户 | 数据库用户名 |
单击某个用户行,负载趋势图将自动 Scope 到该用户,便于分析其负载随时间的变化趋势。
TOP DB
展示按 AAS 负载降序排列的 Top 数据库列表。
字段 | 说明 |
负载 | 该数据库的 AAS 负载值 |
数据库 | 数据库名称 |
单击某个数据库行,负载趋势图将自动 Scope 到该数据库,便于分析其负载随时间的变化趋势。
关闭性能综合分析
如果您不再需要使用性能综合分析功能,可以关闭该实例的 PFS 数据采集:
1. 登录 DBbrain 控制台。
2. 在左侧导航栏,选择实例管理。
3. 在目标实例(MySQL 或 TDSQL-C MySQL 版)操作列单击配置。
4. 关闭数据库负载分析按钮,单击确定。
说明:
关闭性能综合分析后,系统将停止对该实例的 PFS 数据采集。
后续步骤
如果在负载趋势中发现 AAS 持续超过 vCPU 参考线,建议进入 SQL 分析页面查看慢 SQL 和全量 SQL 分析详情,找到具体的问题 SQL 并进行优化。
如果发现锁竞争严重,建议查看锁竞争分析中的阻塞详情,定位持有锁的事务和 SQL,优化事务逻辑或缩短事务执行时间。
如果发现某个主机或用户产生的负载异常偏高,建议检查对应应用服务的连接池配置和业务逻辑。
常见问题
开启数据库负载分析提示“实例 PFS 总开关未开启”怎么办?
这说明您的数据库实例的
performance_schema 系统变量当前为 OFF。您需要先在数据库实例的参数配置中将 performance_schema 设置为 ON,该参数修改需要重启实例才能生效。开启数据库负载分析提示“当前仅支持8.0及以上版本”怎么办?
数据库负载分析功能依赖 MySQL 8.0及以上版本的 Performance Schema 增强特性(如
data_lock_waits 表等)。如果您的实例版本低于8.0,建议升级数据库版本后再使用该功能。开启数据库负载分析对数据库性能有影响吗?
开启数据库负载分析会在数据库实例上启用 Performance Schema 的8个 Consumers 和相关 Instruments 配置。在大多数场景下,对实例性能的影响低于 1%。如果您对性能敏感,建议在业务低峰期开启,并观察一段时间确认无影响。
等待事件中的 CPU 表示什么?
当数据库线程处于活跃状态(非 Sleep)但没有等待任何 IO、锁或同步事件时,系统将该线程的等待事件标记为
CPU。这表示线程正在消耗 CPU 资源执行计算任务,而不是在等待外部资源。为什么负载趋势图中某些时间段没有数据?
该时间段内数据库没有活跃会话(所有连接处于 Sleep 状态)。
配额不足(No quota for pfs instance)怎么办?
每个主账号默认最多可同时对10个数据库实例开启性能综合分析。如果您需要监控更多实例,请联系腾讯云技术支持申请增加配额。