1

瀏覽器在生成碧玉報告[PDF格式]時運行查詢 而被吊銷,其查詢計劃如下。分析ORACLE EXPLAIN PLAN

請幫助分析查詢,這個查詢是否花費了太多時間? 我們也注意到在生成此報告時卡住了線程。

Explain Plan of the report query

+3

- 你是唯一可以回答這個問題的人。 – Ollie 2012-08-17 09:48:08

+2

我們不能在沒有看到它的情況下(和表格腳本)分析查詢...但是,從解釋計劃中您確實有笛卡爾連接。這是打算? – Ben 2012-08-17 09:49:13

+0

@Ollie問題在於報告生成。我們不確定查詢是否花費了太多時間,或者報告是否花時間下載。所以我已經發布瞭解釋計劃。 – 2012-08-17 10:37:02

回答

7

是解釋計劃是優化的在您的查詢將如何運行,包括它需要多長時間通知猜測。 opt imizer將這種猜測基於許多事情,包括它在數據量和系統特性方面的統計數據。

這些問題通常很不錯,尤其是在Oracle的更高版本中。但是他們仍然可能出局,特別是如果您的統計數據過時,數據分佈偏斜或由於環境系統條件。

在你的具體情況下,優化器猜測你的查詢返回一行:這聽起來是對的嗎?如果不是你的統計數據不準確,需要更新。

至於時間,優化器正在猜測您的查詢需要45秒才能運行。那太久了?只有你能說出來嗎?

請記住,數據庫調優是一門複雜的科學。它需要大量的詳細信息。人們通過調整慢速運行的查詢來鍛鍊整個職業。調整在Web應用程序中更加複雜,因爲在架構或錯誤編碼可能引入瓶頸的地方有太多的要點。瞭解整個系統的性能非常困難。

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