![]() |
|
Программирование >> Oracle
Пакет DBMS PROFILER 1713 конкретные строки кода, на которые надо обратить внимание. Обратите внимание на странного вида строки кода, начинающиеся с DBMSOUTPUT. Так выглядит скрытый PL/SQL-код в базе данных. Это просто последовательность байтов, представляющая исходный код и скрывающая его от любопытных глаз. В следующей части отчета представлены суммарные результаты по всем тестам, тогда как в преды1дущей части проценты вычислялись для каждого теста отдельно. Наиболее популярные строки (более 1%), суммарно по всем прогонам: HSECS PCT OWNER UNIT NAME LINE TEXT
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. Он избавляет от необходимости изучать лишние детали, предоставляя итоговую информацию о том, что происходило в приложении, и подробно описывая наиболее неэффективные части. Этого отчета может оказаться вполне достаточно для выявления узких мест и настройки приложения.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |