optimizer_use_sql_plan_baselines和resource_manager_cpu_allocation oracle系统参数对sql查询性能有影响吗

时间:2021-02-12 18:20:59

标签: oracle query-optimization

optimizer_use_sql_plan_baselines和resource_manager_cpu_allocation oracle系统参数对sql查询性能有影响。

假设 A 和 B,我们有两个 envt。在 A Envt 上,查询运行良好,但在 Envt 中。 B 它的跟踪时间。我比较了系统参数,发现 optimizer_use_sql_plan_baselines 和 resource_manager_cpu_allocation 的值存在差异。

1 个答案:

答案 0 :(得分:1)

SQL 计划基线和资源管理器肯定会对性能产生巨大影响,您应该使用以下两个查询或确认或否认这些参数与您的问题有关。

GV$SQL 存储与每个 SQL 语句关联的 SQL 计划基线。比较以下查询中的 SQL_PLAN_BASELINE 列,如果它们相等,则您的问题与基线无关:

select sql_plan_baseline, round(elapsed_time/1000000) elapsed_seconds, gv$sql.*
from gv$sql
order by elapsed_time desc;

活动会话历史记录 (ASH) 视图可以告诉您资源管理器是否存在问题。如果您的查询受到限制,那么您将看到一个事件 在下面的查询中命名为“resmgr:cpu 量子”。 (但请注意计数 - 如果等待事件发生的次数很少,请不要对其进行故障排除。)

select nvl(event, 'CPU') event, count(*)
from gv$active_session_history
group by event
order by count(*) desc;

资源管理器可能会产生其他潜在的负面影响。如果您在数据仓库中并使用并行查询,则资源管理器可能已将某个系统上的查询降级。如果您使用并行查询,请尝试比较来自两个系统的 SQL 监控报告:

select dbms_sqltune.report_sql_monitor(sql_id => '&YOUR_SQL_ID') from dual;

但是,我感觉您对问题使用了错误的方法。 Oracle 数据库性能通常有两种方法——数据库调优和查询调优。如果您只对单个查询感兴趣,那么您可能应该关注执行计划和该特定查询操作的等待事件等内容。