分析ORACLE EXPLAIN PLAN

时间:2012-08-17 09:40:21

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

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

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

Explain Plan of the report query

2 个答案:

答案 0 :(得分:7)

是EXPLAIN PLAN是优化器的告知猜测您的查询将如何运行,包括需要多长时间。 opt imizer将这个猜测基于许多事情,包括它在数据量和系统特性方面的统计数据。

这些猜测通常非常好,特别是在Oracle的更高版本中。但它们仍然可能已经出局,特别是如果您的统计数据陈旧,数据分布偏差或环境系统条件。

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

至于时间,优化器猜测您的查询将需要45秒才能运行。这太长了吗?只有你可以告诉?

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

答案 1 :(得分:0)

同意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';