首批通过分布式安全可靠测评,为关键业务系统打造
ASH 简介
更新时间:2026-04-15 17:16:59
ASH 概述
ASH(Active Session History)是一种活动会话历史记录的诊断工具,用于记录数据库中所有活动会话的信息。
ASH 报告(OceanBase Active Session History Report )是一个能够提供定位瞬时发生异常的分析报告,与性能报告相比,能提供更加细粒度的诊断信息。一般的性能报告所覆盖的是小时级别的快照信息,诊断问题的粒度不能深入到 Session 级别。导致一些瞬时抖动信息很难从性能报告上得到详细的执行细节,因此,我们可以通过 ASH 报告这样一个会话级别的细粒度诊断信息来解决这种问题。
ASH 报告是一个默认开启的后台性能采集任务,因此在分析性能问题时,无需手动打开任何相关参数来复现问题。只需明确问题发生的时间段,然后调用相关命令,即可采集到问题发生时的性能数据。
适用场景
ASH 报告用于诊断瞬时发生的异常场景,这些场景通常需要细粒度、实时或会话级别的分析能力。推荐在以下几种场景中使用:
实时动态问题诊断。
例如某个时段 SQL 响应时间突然飙升,或系统资源遇到瓶颈,传统监控无法观察到数据库系统所有的活跃会话。
分布式系统跨节点问题。
OceanBase 数据库的 SQL 执行链路往往涉及多个 OBServer 节点,ASH 可以通过 TRACE_ID/SQL_ID 等信息关联多个节点的执行信息。
SQL 执行阶段级诊断。
ASH 可以作为观察 SQL 算子级执行的新手段。结合等待事件、执行阶段等信息,可以提供其他排查手段如 PLAN_MONITOR 等不能提供的信息。
资源争用与竞争分析。
多个会话争夺同一资源(如锁、缓存)的、或某个会话占用了过多 CPU 等场景,ASH 可以通过对实时活跃会话的占用追踪和等待事件的关联来排查。
会话级问题排查。
单一会话长时间异常、阻塞,或长事务等场景,ASH 可以直接筛选对应 SESSION_ID,分析其历史行为,并钻取根因,可以提供比 PROCESSLIST 更全面的诊断信息。
后台任务开销分析。
在 ASH 模型中,后台任务就是后台 Session,通过 Program/Module/Action 字段来标记后台任务的属性,并通过等待事件等维度细粒度客户后台任务的执行开销。
冷启动与初始化问题。
Session 频繁建断连、SQL 解析和计划生成慢等场景,很多时候处于传统监控的盲区。当传统监控显示“有异常但无法解释原因”时,不妨使用 ASH 来进行排查。
核心特性
ASH 报告作为轻量级、常开的原生诊断工具,与传统监控有所不同:
| 对比维度 | 传统监控 | ASH 分析法 |
|---|---|---|
| 监控维度 | 阈值告警机制(如 CPU 使用率 >90%) | 全量历史回溯(秒级采样还原数据库瞬时状态) |
| 部署复杂度 | 需预定义监控指标与告警规则 | 零配置接入(自动记录会话/资源/锁等 200+ 维度) |
| 诊断深度 | 异常定位(识别问题节点) | 根因溯源(解析具体会话、锁类型、资源冲突链) |
| 数据粒度 | 聚合指标(如分钟级 CPU 均值) | 原始快照(保留会话级执行阶段/等待事件详情) |
通过以下核心特性,实现了对传统监控的超越:
开箱即用。
无需提前定义监控项,直接利用数据库内核内置的采样机制,实时记录会话级状态。
秒级回溯。
通过秒级采样数据,可完整复现任意历史时刻的数据库运行细节(如会话执行阶段、资源占用、锁竞争状态)。
全景洞察。
既能定位到具体会话或 SQL 的阻塞原因(如“会话 123 因持有锁未释放导致阻塞”),又能分析全局资源竞争(如“80% 的 CPU 被某个资源组占用”)。
通过该报告,能够了解历史诊断时间内占用数据库资源较高的 SQL,以及 OceanBase 集群历史会话的执行详情等信息。您可根据这些信息优化 SQL 从而提高 SQL 的执行效率。