【问题标题】:Analysing ORACLE EXPLAIN PLAN分析ORACLE EXPLAIN PLAN
【发布时间】:2012-08-13 18:12:39
【问题描述】:

浏览器在生成运行查询的 jasper 报告[PDF 格式] 时被挂起 其解释计划如下。

请帮助分析查询,此查询是否花费太多时间? 我们还注意到生成此报告时线程卡住了。

【问题讨论】:

  • "这个查询是否花费了太多时间?" - 你是唯一能回答这个问题的人。
  • 我们不能在没有看到它(和表脚本)的情况下分析查询......但是,从解释计划中你确实有一个笛卡尔连接。这是故意的吗?
  • @Ollie 问题出在报告生成上。我们不确定查询是否花费了太多时间或报告是否需要时间下载。所以我已经发布了解释计划。
  • @AvinashKP,我真的没有轻率。不知道您的数据库结构、SQL 查询、您要实现的目标和数据量以及许多其他因素,可能包括您准备容忍多少时间让您的报告运行,没有很多人在这里可以帮忙。你只是还没有给我们足够的信息。要测试查询时间,从数据库中提取 SQL 并单独运行它,这将告诉您查询需要多长时间,剩下的就是报告(给或取一点)。

标签: performance oracle query-optimization explain sql-execution-plan


【解决方案1】:

同意 APC。我也对预期的时间(45 秒)感到惊讶。另外,解释计划是 CBO 的“预期计划”。有时,“实际”与“预期”在实际执行后会有所不同。

所以,最好也检查一下实际计划。以下可用于获取实际计划:

1) 使用 dbms_xplan

explain plan for <SELECT ...>
select * from table(dbms_xplan.display);            --estimated plan
select * from table(dbms_xplan.display_cursor);     --actual plan

2) 触发 '10046 trace' 和 TKPROF

alter session set tracefile_identifier = 'something-unique'
alter session set sql_trace = true;
alter session set events '10046 trace name context forever, level 8';

【讨论】:

    【解决方案2】:

    是 EXPLAIN PLAN 是优化器对您的查询将如何运行(包括需要多长时间)的知情猜测。优化器会根据很多因素做出这种猜测,包括关于数据量和系统特征的统计数据。

    这些猜测通常都不错,尤其是在 Oracle 的更高版本中。但它们仍然可能会出现问题,尤其是在您的统计数据过时、数据分布有偏差或由于环境系统条件而导致的情况下。

    在您的特定情况下,优化器猜测您的查询返回一行:这听起来对吗?如果不是,您的统计数据不准确,需要刷新。

    至于时间,优化器猜测您的查询需要 45 秒才能运行。是不是太长了?只有你能说?

    请记住,数据库调优是一门复杂的科学。它需要很多详细的信息。人们通过调整运行缓慢的查询来打造整个职业生涯。 Web 应用程序中的调优更加复杂,因为架构或糟糕的编码可能会引入瓶颈。很难获得整个系统性能的概况。

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2012-05-04
      • 2011-12-30
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2012-03-12
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多