Oracle 物理和逻辑IO计数

Oracle 物理和逻辑IO计数,oracle,optimization,Oracle,Optimization,我希望能够在oracle中运行某种显示计划(类似于SYBASE),在每个查询或存储过程上显示以下内容: 每个语句都使用了物理IO 每个语句都使用逻辑IO 每个语句上使用的索引 在sybase中,这对我来说非常简单。我有一个分析工具可以做到这一点,我花了我的大部分时间实际解决高IO项目 我被告知要做以下事情: set autotrace on statistics; EXPLAIN PLAN FOR SELECT * FROM SOMETABLE SELECT PLAN_TABLE_OUTPUT

我希望能够在oracle中运行某种显示计划(类似于SYBASE),在每个查询或存储过程上显示以下内容:

  • 每个语句都使用了物理IO
  • 每个语句都使用逻辑IO
  • 每个语句上使用的索引
  • 在sybase中,这对我来说非常简单。我有一个分析工具可以做到这一点,我花了我的大部分时间实际解决高IO项目

    我被告知要做以下事情:

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

    这很好,但什么是行?是物理IO还是逻辑IO?另外,计划哈希值是多少:16177?这是总数吗?我对oracle比较陌生,有很多查询需要调查。

    在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
    

    查看底部的统计信息,consistent gets是逻辑I/O的度量。物理读取度量必要的物理读取数量。这还显示了查询计划,其中包括优化器对每个查询步骤将返回的行数的估计(即优化器正确估计
    EMP
    表的完整扫描将返回16行,包括160字节的数据)

    如果您想要更详细的信息(并且可以访问跟踪文件),请查找
    TKPROF


    请参阅:

    冒着给人一种无耻的感觉的风险,我写了几篇关于Oracle中的查询和代码基准测试的文章-我写了一篇关于使用Autotrace的文章,如何获得解释计划等。您如何查看统计数据?在我的执行过程中,我没有看到:将自动跟踪统计设置为on;解释从“SCGFAD”“证券”中选择*的计划;选择PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY())@Saro Khatchatourian—您可以在实际执行查询时看到统计信息。在生成查询计划时不会。