Программирование >>  Oracle 

1 ... 427 428 429 [ 430 ] 431 432 433 ... 469


Пакет DBMS PROFILER

1713

конкретные строки кода, на которые надо обратить внимание. Обратите внимание на странного вида строки кода, начинающиеся с DBMSOUTPUT. Так выглядит скрытый PL/SQL-код в базе данных. Это просто последовательность байтов, представляющая исходный код и скрывающая его от любопытных глаз.

В следующей части отчета представлены суммарные результаты по всем тестам, тогда как в преды1дущей части проценты вычислялись для каждого теста отдельно.

Наиболее популярные строки (более 1%), суммарно по всем прогонам:

HSECS PCT OWNER UNIT NAME LINE TEXT

142.47

25.6

TKYTE

FACT RECURSIVE

return n * fact recursive(

68.00

12.2

TKYTE

FACT ITERATIVE

1 result := 1 result * i;

43.29

TKYTE

FACT RECURSIVE

if ( n = 1 )

37.24

DBMS OUTPUT

a3 a0 51 a5 lc 6e 81 b0

29.26

DBMS OUTPUT

lc 51 81 b0 a3 a0 lc 51

26.63

DBMS OUTPUT

:2 a0 a5 b b4 2e d b7 19

21.08

DBMS OUTPUT

6e b4 2e d :2 a0 7e 51 b4

19.29

TKYTE

FACT ITERATIVE

for i in 2 .. n

16.88

<ano>

<anonymous>

16.13

DBMS OUTPUT

1TO CHAR:

16.09

DBMS OUTPUT

8f a0 b0 3d b4 55 6a :3 a0

14.74

<ano>

<anonymous>

. 3

11.28

DBMS OUTPUT

1ORU-10028:: line length o

10.17

DBMS OUTPUT

4f 9a 8f a0 b0 3d b4 55

9.52

DBMS OUTPUT

1DATE:

8.54

DBMS OUTPUT

a3 a0 lc 51 81 b0 a3 a0

7.36

DBMS OUTPUT

a0 b0 3d b4 55 6a :3 a0 7e

6.25

DBMS OUTPUT

1WHILE:

6.19

DBMS OUTPUT

1499:

5.77

DBMS OUTPUT

7e a0 b4 2e d a0 57 b3

2 0 rows selected.

Наконец, рассмотрим статистическую информацию о частоте выполнения отдельн1х строк кода. Она пригодится не только при профилировании и настройке производительности, но и при тестировании. Эта часть отчета показывает, какие операторы в коде выполнялись и какой процент кода покрыт в ходе тестирования:

Количество реально выполненных строк в программных единицах К группировкой по unit name)

UNIT OWNER UNIT NAME

LINES EXECUTED LINES PRESENT

SYS DBMS OUTPUT

SYS DBMS PROFILER

TKYTE FACT ITERATIVE

TKYTE FACT RECURSIVE

88 58.0

62 14.5

4 100.0

3 100.0

Количество реально выполненных строк для всех программных единиц



1714 Приложение А LINES EXECUTED

Общее количество строк во всех программных единицах LINES PRESENT

Из 88 операторов пакета DBMS OUTPUT вшолнен! 51. Интересно, как пакет

DBMS PROFILER подсчитывает строки или операторы. Утверждается, что функция FACT ITERATIVE содержит 4 строки кода, но если обратиться к исходному коду:

function fact iterative(n int) return number as

l result number default 1;

begin

for i in 2 .. n

loop

l result := l result * i; end loop; return l result;

end;

О каких четырех строках идет речь - непонятно. Пакет DBMSPROFILER считает операторы, а не строки кода. Речь идет о следующих четырех операторах:

l result number default 1; for i in 2 .. n

l result := l result * i; return l result;

Остальные строки, хотя и необходимы для компиляции и выполнения кода, к выполняемому коду не относятся и поэтому операторами не считаются. Пакет DBMS PROFILER можно использовать для того, чтобы определить количество операторов, выполняемых в коде и в тестах.

Проблемы

Единственная проблема, с которой я сталкивался при использовании пакета DBMS PROFILER, связана с большим объемом генерируемых им данных и временем анализа этих данных.



Пакет DBMS PROFILER 1715

Небольшой тест, который мы выполнили, сгенерировал более 500 строк статистической информации в таблице PLSQL PROFILER DATA. Эта таблица содержит одиннадцать числов1х столбцов, так что она не очень широкая , но растет быстро. При выполнении каждого оператора в таблицу добавляется строка. Надо контролировать пространство, занимаемое таблицей, периодически удаляя из нее строки. Обычно эта проблема несущественна, но я видел, как при тестировании сложных PL/SQL-проце-дур в таблицу записывались тысячи (и даже сотни тысяч) строк.

Время анализа результатов - более серьезная проблема. Сколько бы вы не настраивали производительность, всегда найдется строка кода, выполняющаяся дольше всего. Если удалить эту строку кода, ее место займет другая. Вы никогда не получите отчет DBMS PROFILER, изучив который придете к выводу, что все работает прекрасно и настраивать больше нечего. Чтобы эффективно использовать это инструментальное средство, надо определить для себя, когда можно закончить настройку. Задайте либо определенное время настройки (например, эта процедура будет настраиваться в течение двух часов), либо критерий производительности (если процедура будет выполняться за N единиц времени, можно прекратить настройку). В противном случае вы будете (как и я иногда) тратить огромное время на настройку процедуры, которая просто не может работать быстрее.

Пакет DBMS PROFILER - замечательное средство, которое может выдать массу подробной информации. Старайтесь не погрязнуть в изучении всех этих деталей.

Резюме

В этом разделе мы рассмотрели использование пакета DBMS PROFILER. Он используется в основном для решения двух задач. При профилировании исходного кода можно найти строки, выполняющиеся дольше всего, или сравнить скорость работы двух алгоритмов. Можно также понять, какая часть кода охвачена при тестировании приложения. Хотя 100-процентный охват кода при тестировании не гарантирует его безошибочности, но приближает к ней.

Мы также разработали отчет, построенный на базе предлагаемого корпорацией Oracle примера отчета профилировщика. Этот отчет выдает основную информацию, необходимую для успешного использования пакета DBMS PROFILER. Он избавляет от необходимости изучать лишние детали, предоставляя итоговую информацию о том, что происходило в приложении, и подробно описывая наиболее неэффективные части. Этого отчета может оказаться вполне достаточно для выявления узких мест и настройки приложения.



1 ... 427 428 429 [ 430 ] 431 432 433 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика