
Oracle 19C V$RULE_SET_AGGREGATE_STATS 动态性能视图详解
1. 视图概述与作用
V$RULE_SET_AGGREGATE_STATS 是 Oracle 19C 数据库中一个重要的动态性能视图,它提供了所有规则集评估的聚合统计信息。该视图包含的是全局统计数据,而不是单个规则集的详细信息。
主要作用:
- 监控整个系统中规则集评估的总体性能
- 识别规则引擎的资源消耗模式
- 诊断规则评估过程中的性能瓶颈
- 为容量规划提供数据支持
2. 使用场景与应用价值
使用场景:
- 性能调优:识别规则评估过程中的性能问题
- 资源监控:监控规则引擎对系统资源的使用情况
- 容量规划:基于历史评估数据预测未来资源需求
- 故障诊断:当基于规则的系统出现性能问题时进行问题定位
应用价值:
- 提供规则评估的量化指标
- 帮助DBA了解规则引擎的工作负载
- 为系统优化提供数据支持
3. 字段详解与数据类型
以下是 V$RULE_SET_AGGREGATE_STATS 视图的字段详细说明:
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| NAME | VARCHAR2(80) | 统计信息名称 |
| VALUE | NUMBER | 统计值的数值 |
| CON_ID | NUMBER | 数据所属容器的ID |
NAME字段的可能值及其含义:
| NAME值 | 描述 |
|---|---|
| rule set evaluations (all) | 所有规则集的总评估次数 |
| rule set evaluations (first_hit) | 设置了stop_on_first_hit=TRUE的规则集评估次数 |
| rule set evaluations (simple_rules_only) | 设置了simple_rules_only=TRUE的规则集评估次数 |
| rule set evaluations (SQL free) | 内部未发出SQL来评估规则的规则集评估次数 |
| rule set evaluation time (CPU) | 规则集评估消耗的总CPU时间(百分之一秒) |
| rule set evaluation time (elapsed) | 规则集评估消耗的总实际时间(百分之一秒) |
| rule set SQL executions | 规则集评估期间执行的SQL语句总数 |
| rule set conditions processed | 规则集评估期间处理的快速(索引)条件总数 |
| rule set true rules | 规则集评估期间返回的TRUE规则总数 |
| rule set maybe rules | 规则集评估期间返回的MAYBE规则总数 |
| rule set user function calls (variable value function) | 为检索变量值而调用用户定义函数的总次数 |
| rule set user function calls (variable method function) | 为检索变量方法值而调用用户定义函数的总次数 |
| rule set user function calls (evaluation function) | 调用用户定义评估函数的总次数 |
4. 相关视图与基表
相关动态性能视图:
- V$RULE_SET:显示当前加载到内存中的规则集信息
- V$RULE:提供关于各个规则的信息
- V$EVALUATION_CONTEXT:显示评估上下文的详细信息
- GV$RULE_SET_AGGREGATE_STATS:在RAC环境中的全局视图
数据字典视图:
- DBA_RULE_SETS:包含数据库中所有规则集的信息
- DBA_RULES:包含数据库中所有规则的信息
- DBA_EVALUATION_CONTEXTS:包含所有评估上下文的信息
基表信息:
V$RULE_SET_AGGREGATE_STATS 的数据主要来自SGA中的内存结构,而不是直接的基表。相关的数据字典基表包括:
- SYS.RE$RULE_SET:存储规则集元数据的基表
- SYS.RE$RULE:存储规则定义的基表
- SYS.RE$NV_LIST:存储名称-值列表的基表
5. 底层原理与工作机制
5.1 数据收集机制
V$RULE_SET_AGGREGATE_STATS 视图的统计信息是由Oracle规则引擎自动收集和维护的。当规则集被评估时,引擎会跟踪各种性能指标,并将这些数据存储在系统全局区(SGA)的内存结构中。
5.2 规则评估过程
规则集的评估过程涉及多个步骤:
- 规则编译:规则条件被编译为可执行形式
- 变量评估:获取规则中引用的变量的当前值
- 条件评估:实际评估规则条件
- 结果生成:根据评估结果确定规则的真值
- 操作触发:对于评估为TRUE的规则,触发相应的操作
5.3 统计信息更新
各种统计计数器在规则评估过程中实时更新:
- 每次规则集评估会增加评估计数器
- 每次SQL执行会增加SQL执行计数器
- 每次函数调用会增加函数调用计数器
- 时间统计会累计所有评估消耗的CPU和实际时间
6. 容器数据库(CDB)环境中的考虑
在CDB环境中,V$RULE_SET_AGGREGATE_STATS 视图的 CON_ID 字段始终为0,表示这些统计信息适用于整个CDB或非CDB环境。这意味着规则集统计信息是在整个CDB范围内聚合的,而不是按每个可插拔数据库(PDB)单独统计的。
7. 常用查询SQL示例
7.1 查看所有规则集统计信息
SELECT name, value, con_id
FROM V$RULE_SET_AGGREGATE_STATS
ORDER BY name;
7.2 分析CPU和时间消耗
SELECT name, value,
ROUND(value / (SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set evaluations (all)') * 100, 2) as avg_per_evaluation
FROM V$RULE_SET_AGGREGATE_STATS
WHERE name IN ('rule set evaluation time (CPU)', 'rule set evaluation time (elapsed)');
7.3 评估SQL执行频率
SELECT name, value,
ROUND(value / (SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set evaluations (all)'), 2) as sql_per_evaluation
FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set SQL executions';
7.4 分析用户函数调用情况
SELECT name, value
FROM V$RULE_SET_AGGREGATE_STATS
WHERE name LIKE 'rule set user function calls%'
ORDER BY name;
7.5 规则评估效率分析
SELECT
(SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set true rules') as true_rules,
(SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set maybe rules') as maybe_rules,
(SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set conditions processed') as conditions_processed,
ROUND(
(SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set conditions processed') /
NULLIF((SELECT value FROM V$RULE_SET_AGGREGATE_STATS
WHERE name = 'rule set evaluations (all)'), 0),
2) as avg_conditions_per_evaluation
FROM DUAL;
8. 实践建议与最佳实践
8.1 监控策略
- 定期收集规则集统计信息的基线
- 设置阈值警报,监控关键指标
- 将规则集统计信息与其他性能指标关联分析
8.2 性能优化建议
- 如果CPU时间异常高,考虑优化规则条件
- 如果SQL执行次数很高,评估是否可以通过缓存减少SQL执行
- 如果用户函数调用过多,考虑优化函数性能
8.3 故障诊断提示
- 检查CPU时间和实际时间的比值,判断是否存在等待事件
- 分析SQL执行与规则评估的比值,判断是否存在优化空间
- 检查条件处理数量,判断规则条件是否过于复杂
9. 总结
V$RULE_SET_AGGREGATE_STATS 视图是Oracle数据库规则引擎性能监控的重要工具,提供了规则集评估的全面统计信息。通过合理利用这些统计信息,DBA可以优化规则集性能、诊断性能问题并有效管理系统资源。
需要注意的是,这些统计信息是实例级别的聚合数据,不提供单个规则或规则集的细粒度统计。对于更细粒度的分析,需要结合其他动态性能视图和数据字典视图。
欢迎关注我的公众号《IT小Chen》
5653

被折叠的 条评论
为什么被折叠?



