Физический и логический подсчет ввода / вывода - PullRequest
2 голосов
/ 26 июля 2011

Я хотел бы иметь возможность запускать какой-то план показа (похожий на SYBASE) в Oracle, который будет показывать следующее для каждого запроса или хранимой процедуры:

  1. Физические операции ввода-вывода используются для каждого оператора.
  2. Логические операции ввода-вывода используются для каждого оператора.
  3. Индексы, используемые в каждом утверждении.

Это очень просто для меня в sybase. У меня есть инструмент анализатора, который делает это, и я трачу большую часть своего времени на решение проблем с высоким IO.

Мне сказали сделать следующее:

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

Это хорошо, но что такое ROWS? Это физический или логический ввод-вывод? Кроме того, каково значение хэша плана: 1611616177? Это общая IO? Я относительно новичок в оракуле и у меня много вопросов для расследования.

Ответы [ 2 ]

5 голосов
/ 26 июля 2011

В 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

Если посмотреть статистику внизу, то согласованность получаемых данных является мерой логического ввода-вывода.Физическое чтение измеряет количество физических чтений, которые были необходимы.Это также показывает план запроса, который включает в себя такие вещи, как оценка оптимизатором количества строк, которые будут возвращаться на каждом шаге запроса (т. Е. Оптимизатор правильно оценивает, что полное сканирование таблицы EMP вернет 16 строк, содержащих 160байты данных).

2 голосов
/ 27 июля 2011

Если вы хотите получить еще больше подробностей (и можете получить доступ к файлам трассировки), тогда ищите TKPROF

, см .: http://download.oracle.com/docs/cd/B10500_01/server.920/a96533/sqltrace.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...