面试宝典:介绍下Oracle数据库动态性能视图 V$SYSMETRIC_SUMMARY

在这里插入图片描述
Oracle 19C 中的 V$SYSMETRIC_SUMMARY 视图非常重要,它提供了系统性能指标的统计摘要,帮助你快速了解数据库在一段时间内的整体性能表现和波动情况。我会为你详细解释这个视图。

📊 1. 视图概述与核心作用

V$SYSMETRIC_SUMMARY 视图存储了系统性能指标在多个采样周期内的统计摘要信息。它不像 V$SYSMETRICV$SYSMETRIC_HISTORY 那样记录每个时间点的瞬时值,而是对这些历史数据进行聚合计算,包括最大值、最小值、平均值和标准方差等。这些摘要数据主要来源于 V$SYSMETRIC_HISTORY

它的核心作用是让你能快速评估数据库在特定时间段内的性能特征、稳定性和资源使用情况,而无需查询大量的历史细节数据。

🏛️ 2. 底层原理与数据流转

V$SYSMETRIC_SUMMARY 的数据来源于对 V$SYSMETRIC_HISTORY 的聚合计算。其底层数据流和持久化过程如下图所示:

MMON进程周期性收集指标
数据存入
SGA内存结构
V$SYSMETRIC_HISTORY
MMON进程聚合计算
生成统计摘要
摘要数据存入
V$SYSMETRIC_SUMMARY
AWR快照生成?
数据持久化至
AWR基表WRH$_SYSMETRIC_SUMMARY
数据暂存于内存中
后续快照周期
数据被覆盖
形成长期性能历史
DBA_HIST_SYSMETRIC_SUMMARY

关键点说明

  • 内存驻留V$SYSMETRIC_SUMMARY 和其他的 V$ 视图一样,是动态性能视图,其数据主要存储在系统全局区(SGA)的内存结构中。这意味着在实例关闭后,这些数据会丢失。
  • AWR持久化:为了使这些性能摘要成为长期的历史数据,Oracle 的 MMON(Manageability Monitor)进程会定期(默认每小时一次)执行一次 AWR 快照。快照过程中,V$SYSMETRIC_SUMMARY 中的摘要数据会被持久化到 AWR 的基表(底层表,如 WRH$_SYSMETRIC_SUMMARY)中。之后,DBA 可以通过 DBA_HIST_SYSMETRIC_SUMMARY 视图查询这些持久化的历史摘要数据。
  • 基表V$SYSMETRIC_SUMMARY 基于一些内部的 X$ 表(如 X$SYSMETRIC_SUMMARY),这些表由Oracle在内存中维护,结构不公开,通常不建议直接查询。

📋 3. 字段详解

V$SYSMETRIC_SUMMARY 包含的字段及其含义、数据类型如下表所示:

字段名称 (Field Name)数据类型描述
BEGIN_TIMEDATE统计摘要所覆盖时间段的开始时间
END_TIMEDATE统计摘要所覆盖时间段的结束时间
INTSIZE_CSECNUMBER采样时间间隔的长度,以百分之一秒(Centi-second)为单位。例如,6000 代表 60 秒。
GROUP_IDNUMBER指标分组的标识符ID。用于区分不同类别的指标。
METRIC_IDNUMBER性能指标的唯一数字ID。与 V$METRICNAME 视图中的 METRIC_ID 关联。
METRIC_NAMEVARCHAR2(64)性能指标的名称(例如:"CPU Usage Per Sec", "Physical Reads Per Sec")。
NUM_INTERVALNUMBER计算此统计摘要所依据的采样间隔数量。例如,若基于过去10个60秒间隔计算,则此值为10。
MAXVALNUMBER该指标在统计时间段内的最大值
MINVALNUMBER该指标在统计时间段内的最小值
AVERAGENUMBER该指标在统计时间段内的平均值
STANDARD_DEVIATIONNUMBER该指标在统计时间段内的标准方差衡量指标的波动程度;值越大,说明该指标值波动越剧烈;值越小,说明指标值越稳定。
METRIC_UNITVARCHAR2(64)性能指标值的单位(例如:"CentiSeconds Per Second", "Requests Per Second")。
CON_IDNUMBER容器ID(Container ID)。在多租户环境(CDB)中,标识该指标数据来源于哪个可插拔数据库(PDB)。值为 0 通常表示属于 CDB$ROOT(根容器)。

关键字段解读

  • NUM_INTERVAL, MAXVAL, MINVAL, AVERAGE, STANDARD_DEVIATION:这些统计字段是摘要信息的核心,帮你快速了解指标的整体表现和稳定性,无需自己计算。
  • STANDARD_DEVIATION(标准方差):此字段特别重要,它量化了指标的波动性。标准方差越大,表示该指标值波动越剧烈(例如,CPU使用率忽高忽低);标准方差越小,表示指标值越稳定
  • CON_ID在多租户环境中至关重要。通过此字段可以筛选或识别性能指标来自哪个PDB。

🔗 4. 相关视图

视图名称描述
V$SYSMETRIC显示最新一个时间间隔的系统指标值。
V$SYSMETRIC_HISTORY显示近期的历史系统指标值(通常保留约1小时)。
V$METRICNAME存储所有可用指标的元数据(如名称、单位),用于关联查询以获得更清晰的描述。
DBA_HIST_SYSMETRIC_SUMMARYAWR快照中保存的 V$SYSMETRIC_SUMMARY长期历史数据,用于数天、数周或数月级别的性能趋势分析。
DBA_HIST_SNAPSHOT记录AWR快照的元信息(快照ID、时间等),常与 DBA_HIST_SYSMETRIC_SUMMARY 关联查询。

⚙️ 5. 主要使用场景

V$SYSMETRIC_SUMMARY 视图主要用于:

  1. 快速性能评估:快速获取过去一段时间(如最近一小时)内关键性能指标(如CPU、IO、等待事件)的整体水平、峰值和波动情况,判断系统是否总体健康。
  2. 稳定性分析:通过标准方差(STANDARD_DEVIATION) 等字段,分析性能指标的稳定程度。方差过大可能预示着间歇性性能问题或资源争用。
  3. 容量规划与资源调整:根据指标的平均值和最大值,了解系统资源(如CPU、内存、I/O)的平均负载和峰值压力,为容量规划和资源调整提供依据。
  4. AWR报告补充:AWR报告中的许多摘要数据其实就来源于此视图或其历史版本 DBA_HIST_SYSMETRIC_SUMMARY

📊 6. 常用SQL查询示例

查询1:查看近期关键性能指标的统计摘要

此查询获取最近统计周期内关键指标的聚合信息,按平均CPU使用率降序排列。

SELECT METRIC_NAME,
       METRIC_UNIT,
       NUM_INTERVAL,
       ROUND(MINVAL, 2) AS MIN_VALUE,
       ROUND(MAXVAL, 2) AS MAX_VALUE,
       ROUND(AVERAGE, 2) AS AVG_VALUE,
       ROUND(STANDARD_DEVIATION, 2) AS STD_DEV,
       BEGIN_TIME,
       END_TIME
FROM V$SYSMETRIC_SUMMARY
WHERE METRIC_NAME IN (
    'CPU Usage Per Sec',
    'Physical Reads Per Sec',
    'Logical Reads Per Sec',
    'Redo Generated Per Sec',
    'User Commits Per Sec',
    'Average Active Sessions'
)
AND CON_ID = 0 -- 查询CDB$ROOT中的数据,如需PDB数据则替换CON_ID
ORDER BY AVERAGE DESC;
查询2:关注指标波动性(标准方差)

此查询重点关注那些平均值较高且波动性(标准方差)较大的指标,这些可能是潜在的性能瓶颈点。

SELECT METRIC_NAME,
       ROUND(AVERAGE, 2) AS AVG_VALUE,
       ROUND(STANDARD_DEVIATION, 2) AS STD_DEV,
       ROUND(STANDARD_DEVIATION / NULLIF(AVERAGE, 0), 2) AS COEFFICIENT_OF_VARIATION -- 变异系数,另一种波动性衡量
FROM V$SYSMETRIC_SUMMARY
WHERE AVERAGE > 0
AND STANDARD_DEVIATION > 0
AND CON_ID = 0
ORDER BY COEFFICIENT_OF_VARIATION DESC;
查询3:与历史快照关联查询(需AWR)

此查询将摘要信息与AWR快照关联,获取更具体时间范围的性能摘要。

SELECT S.BEGIN_INTERVAL_TIME,
       S.END_INTERVAL_TIME,
       M.METRIC_NAME,
       M.AVERAGE,
       M.MAXVAL,
       M.MINVAL,
       M.STANDARD_DEVIATION
FROM DBA_HIST_SYSMETRIC_SUMMARY M
JOIN DBA_HIST_SNAPSHOT S ON M.SNAP_ID = S.SNAP_ID AND M.DBID = S.DBID AND M.INSTANCE_NUMBER = S.INSTANCE_NUMBER
WHERE M.METRIC_NAME = 'CPU Usage Per Sec'
AND S.BEGIN_INTERVAL_TIME > SYSDATE - 1 -- 查询最近1天内的数据
AND M.CON_ID = 0
ORDER BY S.SNAP_ID DESC;

💎 7. 重要知识点总结

  1. 摘要 vs. 详细数据V$SYSMETRIC_SUMMARY 提供统计摘要(最大值、最小值、平均值、标准方差等),而 V$SYSMETRIC_HISTORY 提供时间序列上的详细值。摘要用于快速了解整体情况,详细数据用于分析具体时间点的变化。
  2. 内存与持久化V$SYSMETRIC_SUMMARY 本身数据位于内存(SGA),但其结果可通过AWR快照持久化到 DBA_HIST_SYSMETRIC_SUMMARY 中。
  3. 多租户感知:在CDB环境中,始终注意 CON_ID 字段,以确保你查看的是正确容器(Root或特定PDB)的数据。
  4. 标准方差的意义标准方差(STANDARD_DEVIATION) 是一个非常有价值的字段,它直接反映了性能指标的稳定性。高方差可能意味着不稳定的性能,值得深入调查。
  5. AWR的基石V$SYSMETRIC_SUMMARY 中的摘要数据是生成AWR性能报告的重要数据来源之一。

希望以上详细的解释能帮助你更好地理解和使用 V$SYSMETRIC_SUMMARY 视图。如果你有任何进一步的疑问,随时可以提出。

欢迎关注我的公众号《IT小Chen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值