You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何追踪HANA指定模式下表操作的CPU使用率?

针对指定模式/表的CPU使用率追踪方案

要追踪特定模式或表操作的CPU消耗,无法直接通过主机级的M_HOST_RESOURCE_UTILIZATION实现,需要从SQL执行层面的统计视图入手,这类视图能将CPU消耗关联到具体的数据库对象。以下是可用的视图和查询示例:

核心可用视图

  • M_SQL_PLAN_CACHE:缓存当前活跃的SQL执行计划,包含每个计划的累计CPU时间、执行次数等指标,可直接关联到对应的模式和表。
  • M_EXECUTED_STATEMENTS:记录已执行的SQL语句(包括已从缓存中淘汰的语句),包含单条语句的CPU使用量、执行时间等细节,适合追溯历史操作的CPU消耗。
  • M_TABLE_STATISTICS:辅助视图,记录表的访问次数、读写量等,可结合CPU统计数据更全面分析表的负载情况。

实用查询示例

1. 统计指定模式下各表的累计CPU消耗

此查询从执行计划缓存中聚合指定模式下所有表的CPU使用总量,帮助定位高CPU消耗的表:

SELECT
    SCHEMA_NAME,
    OBJECT_NAME,
    SUM(TOTAL_CPU_TIME) AS 累计CPU耗时(毫秒),
    SUM(EXECUTION_COUNT) AS 执行次数,
    AVG(CPU_TIME_PER_EXECUTION) AS 单次执行平均CPU耗时(毫秒)
FROM M_SQL_PLAN_CACHE
WHERE SCHEMA_NAME = '你的目标模式名'
  AND OBJECT_NAME IS NOT NULL
GROUP BY SCHEMA_NAME, OBJECT_NAME
ORDER BY 累计CPU耗时(毫秒) DESC;

2. 追溯指定表的历史操作CPU消耗

此查询从已执行语句日志中提取针对目标表的所有操作,查看每条语句的CPU消耗和执行时间:

SELECT
    STATEMENT_ID,
    SCHEMA_NAME,
    OBJECT_NAME,
    CPU_TIME AS CPU耗时(毫秒),
    START_TIME AS 执行时间,
    SUBSTRING(STATEMENT_STRING, 1, 200) AS 语句片段
FROM M_EXECUTED_STATEMENTS
WHERE SCHEMA_NAME = '你的目标模式名'
  AND OBJECT_NAME = '你的目标表名'
ORDER BY 执行时间 DESC;

注意事项

  • M_EXECUTED_STATEMENTS的数据有保留周期,由系统参数控制,若需长期追踪,建议定期将数据导出到自定义表存储。
  • 对于多表关联的复杂查询,OBJECT_NAME会列出所有涉及的表,需结合语句内容判断具体是哪个表的操作主导了CPU消耗。
  • 可将对象级CPU统计结果与M_HOST_RESOURCE_UTILIZATION的整体CPU数据对比,计算特定表操作对主机CPU的贡献占比。

内容的提问来源于stack exchange,提问作者A Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:30:37