2011-07-26 63 views
2

我想能夠運行某種節目計劃在Oracle(類似於SYBASE),這將顯示下面,每個查詢或存儲過程:物理和邏輯IO計

  1. 物理IO的用於每個聲明。
  2. 在每個語句上使用邏輯IO。
  3. 每條語句使用的索引。

這對我來說在sybase中非常簡單。我有一個分析工具可以做到這一點,而且我大部分時間都花在瞭解決高IO問題上。

我被告知要做到以下幾點:

set autotrace on statistics; 
EXPLAIN PLAN FOR 
SELECT * FROM SOMETABLE 
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY()); 

這是不錯,但什麼是一個行?它是物理還是邏輯IO?另外,什麼是計劃哈希值:1611616177?這是總IO嗎?我對oracle比較陌生,並且有很多查詢需要調查。

+0

在給人一種無恥插頭的風險,我寫了關於基準幾篇文章查詢和在Oracle中的代碼 - http://betteratoracle.com/articles/2-the-oracle-developers-benchmarking-toolkit我寫了一篇關於在那裏使用Autotrace,如何得到解釋計劃等 –

回答

5

在SQL * Plus,你可以這樣做

SQL> set autotrace on; 
SQL> select empno, ename from emp; 

    EMPNO ENAME 
---------- ---------- 
     7623 PAV 
     7369 smith 
     7499 ALLEN 
     7521 WARD 
     7566 JONES 
     7654 MARTIN 
     7698 BLAKE 
     7782 CLARK 
     7788 SCOTT 
     7839 KING 
     7844 TURNER 

    EMPNO ENAME 
---------- ---------- 
     7876 ADAMS 
     7900 SM0 
     7902 FORD 
     7934 MILLER 
     1234 BAR 

16 rows selected. 


Execution Plan 
---------------------------------------------------------- 
Plan hash value: 3956160932 

-------------------------------------------------------------------------- 
| Id | Operation   | Name | Rows | Bytes | Cost (%CPU)| Time  | 
-------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT |  | 16 | 160 |  3 (0)| 00:00:01 | 
| 1 | TABLE ACCESS FULL| EMP | 16 | 160 |  3 (0)| 00:00:01 | 
-------------------------------------------------------------------------- 


Statistics 
---------------------------------------------------------- 
      1 recursive calls 
      0 db block gets 
      7 consistent gets 
      0 physical reads 
      0 redo size 
     997 bytes sent via SQL*Net to client 
     535 bytes received via SQL*Net from client 
      3 SQL*Net roundtrips to/from client 
      0 sorts (memory) 
      0 sorts (disk) 
     16 rows processed 

在底部的統計數據來看,一致得到的是邏輯I/O的措施。物理讀取測量必要的物理讀取次數。這也顯示了查詢計劃,其中包括諸如優化器對查詢的每個步驟將返回的行數的估計的事情(即,優化器正確地估計對EMP表的完整掃描將返回16行,包括160字節的數據)。

+0

你怎麼得到查看統計信息?我在執行時沒有看到:set autotrace statistics on; 解釋 的計劃SELECT * FROM「SCGFAD」。「SECURITIES」; SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY()); –

+1

@Saro Khatchatourian - 當查詢被實際執行時,您會看到統計信息。不是當您生成查詢計劃時。 –