浏览器在生成 jasper 报告 [PDF 格式] 时被挂起,该报告运行一个查询,其解释计划如下。
请帮助分析查询,此查询是否花费了太多时间?在生成此报告时,我们还注意到线程卡住了。
浏览器在生成 jasper 报告 [PDF 格式] 时被挂起,该报告运行一个查询,其解释计划如下。
请帮助分析查询,此查询是否花费了太多时间?在生成此报告时,我们还注意到线程卡住了。
是 EXPLAIN PLAN 是优化器对查询将如何运行的明智猜测,包括需要多长时间。优化器将这种猜测建立在许多事情上,包括关于数据量和系统特性的统计数据。
这些猜测通常都不错,尤其是在 Oracle 的更高版本中。但它们仍然可能会被淘汰,尤其是在您的统计数据过时、数据分布有偏差或由于环境系统条件而导致的情况下。
在您的特定情况下,优化器猜测您的查询返回一行:这听起来对吗?如果不是,您的统计数据不准确,需要刷新。
至于时间,优化器猜测您的查询将需要 45 秒才能运行。是不是太长了?只有你能说?
请记住,数据库调优是一门复杂的科学。它需要很多详细的信息。人们通过调整运行缓慢的查询来打造整个职业生涯。Web 应用程序中的调优更加复杂,因为架构或糟糕的编码可能会引入瓶颈。很难获得整个系统性能的概况。
同意 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';