我希望能够在oracle中运行某种展示计划(类似于SYBASE),它将在每个查询或存储过程中显示以下内容:
对于我来说,这在sybase中非常简单。我有一个分析工具可以做到这一点,我花了大部分时间来解决高IO项目。
我被告知要做以下事情:
set autotrace on statistics;
EXPLAIN PLAN FOR
SELECT * FROM SOMETABLE
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
这很好但是ROWS是什么?它是物理或逻辑IO吗?另外,什么是计划哈希值:1611616177?这是总IO吗?我对oracle相对较新,并且有很多疑问需要调查。
答案 0 :(得分: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字节的数据)。
答案 1 :(得分:2)
如果您想要更多详细信息(并且可以访问跟踪文件),请查找TKPROF
请参阅:http://download.oracle.com/docs/cd/B10500_01/server.920/a96533/sqltrace.htm