基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
说明
CPU 占比 (%) 表示该 SQL 的总 CPU 时间占所有 SQL 总 CPU 时间的百分比。CPU 占比越大,表明其消耗的 CPU 资源越多。
更新时间:2026-07-28
主机 CPU 使用率过高是数据库运维中常见的问题,通常由业务 SQL 触发。CPU 资源耗尽会导致业务响应时间变长甚至服务不可用,因此需要快速定位问题并解决。本文将介绍在公有云环境下,当业务 SQL 导致主机 CPU 使用率过高时,如何快速确认问题并定位关键 SQL。
您可以通过如下两种方式确认哪台主机的 CPU 使用率过高:
配置告警
在 OB Cloud 云数据库控制台上,配置 OB 节点 CPU 使用率 告警,以便 OB Cloud 及时通知您哪台主机(即 OB 节点)的 CPU 使用率过高。关于配置告警的方法,请参见 告警管理。
查看主机监控数据
在 OB Cloud 云数据库控制台上,查看各主机的 CPU 使用率 监控数据。如果 CPU 使用率持续稳定在 95% 左右,表明 CPU 资源已耗尽。关于查看主机监控数据的方法,请参见 集群主机性能监控。

主机 CPU 使用率过高通常由业务 SQL 引起,排查时应优先考虑 SQL 问题。
系统提供异常事件的根因分析功能,自动分析异常时段内 CPU 占比过高的 SQL,并提供优化建议。关于查看根因分析功能的方法,请参见 查看异常事件。

对于单租户集群,使用租户级 Top SQL 功能即可定位出消耗 CPU 最多的 SQL。对于多租户集群,可以使用集群级 Top SQL 功能,快速定位问题 SQL。
登录 OceanBase 云服务控制台。
在左侧导航栏中,单击 实例列表。
在实例列表中找到目标实例,单击实例名称,进入 实例工作台。
在左侧导航栏中单击 诊断,然后在 诊断 页面选择 实时诊断 页签。
在 实时诊断 页面中部,选择租户。
对于单租户集群,系统默认显示当前租户,无需选择。
对于多租户集群,选择 全部租户。
在 SQL 页签上,通过 节点 下拉列表选择目标节点,通过 时间范围 筛选框选择 CPU 异常的时段(建议选择异常开始的一段时间,以确保数据准确性),然后单击 查询 按钮。
在 Top SQL 页签上,选择 CPU 占比 (%) 并按倒序排列。

CPU 占比 (%) 表示该 SQL 的总 CPU 时间占所有 SQL 总 CPU 时间的百分比。CPU 占比越大,表明其消耗的 CPU 资源越多。
找到目标 SQL 后,单击 SQL 文本 列的链接跳转到 SQL 详情页面,确认是否存在以下问题,并采取相应措施:
目前 OBServer 没有 SQL 消耗 CPU 资源的指标,OAS 使用以下公式计算 SQL 执行过程中消耗的 CPU 时间:
v$ob_sql_audit.execute_time + v$ob_sql_audit.get_plan_time - v$ob_sql_audit.total_wait_time_micro
关于监控指标的详细说明,请参见 SQL Audit。
下图是 OBServer SQL 执行时大致的时间模型。

由上图可知,SQL 在执行前会在 SQL 队列中等待资源(一般是空闲线程),等待过程中基本不消耗 CPU 资源。
当 CPU 使用率过高时,SQL 队列会积压,导致 SQL 的排队时间变长,响应时间(v$ob_sql_audit.elapsed_time)无法准确反映 SQL 消耗的 CPU 资源。
因此,在 CPU 使用率过高时,应主要参考 CPU 时间排序。