1

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

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

报表查询的说明计划

4

2 回答 2

7

是 EXPLAIN PLAN 是优化器对查询将如何运行的明智猜测,包括需要多长时间。优化器将这种猜测建立在许多事情上,包括关于数据量和系统特性的统计数据。

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

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

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

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

于 2012-08-17T13:06:48.957 回答
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 跟踪”和 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';
于 2014-01-26T13:36:03.047 回答