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

Posted

技术标签:

【中文标题】optimizer_use_sql_plan_baselines 和 resource_manager_cpu_allocation oracle系统参数是不是对sql查询性能有影响【英文标题】:Is optimizer_use_sql_plan_baselines and resource_manager_cpu_allocation oracle system parameter have impact on sql query performanceoptimizer_use_sql_plan_baselines 和 resource_manager_cpu_allocation oracle系统参数是否对sql查询性能有影响 【发布时间】:2021-02-12 18:20:59 【问题描述】:

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

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

【问题讨论】:

你确定其他一切都是平等的吗? (数据、优化器统计信息、系统统计信息、硬件等)此外,您应该检查查询性能不同的原因(不同的计划、等待等)。无论如何,简短的回答是。每个参数都有目的,因此它可以改变行为。 【参考方案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:cpuquantum”。 (但请注意计数 - 如果等待事件发生的次数很少,请不要对其进行故障排除。)

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 数据库性能通常有两种方法——数据库调优和查询调优。如果您只对单个查询感兴趣,那么您可能应该关注执行计划和该特定查询操作的等待事件等内容。

【讨论】:

以上是关于optimizer_use_sql_plan_baselines 和 resource_manager_cpu_allocation oracle系统参数是不是对sql查询性能有影响的主要内容,如果未能解决你的问题,请参考以下文章