как определить-> улучшить производительность Oracle SP - PullRequest
1 голос
/ 05 марта 2010

У нас много SP, и многим из них требуется вечность для выполнения. Эти SP довольно длинные, и вам сложно пройти через SP, чтобы выяснить, какой запрос занимает много времени.

Какой лучший способ узнать, какой запрос занимает больше всего времени? так что мы можем просто сосредоточиться на этом запросе, а не тратить время на исследования.

В настоящее время я использую PL / SQL-разработчик для выполнения SP

Ответы [ 3 ]

2 голосов
/ 05 марта 2010

Если вы можете выполнять запросы, я бы предложил ознакомиться с функциональностью DBMS_PROFLIER. Oracle PL / SQL Profiler - это инструмент, который может предоставить статистику о поведении кода PL / SQL во время выполнения. Инструмент собирает информацию об исходном коде PL / SQL по мере его выполнения и сохраняет эту информацию в таблицах. По завершении выполнения вы можете сообщить о сохраненных данных профилировщика, чтобы определить:

  • Общее количество раз, когда линия была исполнено
  • Минимальное, максимальное и среднее время выполнения каждой строки кода
  • Сколько времени требовалось SQL-операторам выполнить до завершения
  • Покрытие кода (фактические строки выполнено в течение периода анализа)

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

Документация Oracle для пакета DBMS_PROFILER: здесь для 10g.

В Metalink Doc 243755.1 есть сценарий для создания красивого HTML-вывода для ваших профилирующих прогонов.

PROFSUM.SQL - это еще один скрипт, который сообщает о собранных данных, он доступен здесь .

2 голосов
/ 05 марта 2010

План объяснения легкодоступен - он дает представление об эффективности, которая будет переводиться во время / ресурсы.

Если вы хотите получить реальное представление о хранимых процедурах, посмотрите на трассировку, используя tkprof. Вот статья об этом .

1 голос
/ 15 марта 2010

Я делаю много такого рода работы и нахожу, что хороший инструмент для ведения журнала - это путь. Неизменно проблема будет в одном или нескольких операторах SQL DML, особенно в ОБНОВЛЕНИЯХ и УДАЛЕНИЯХ. Если вы создадите простую процедуру ведения журнала, которая записывает данные в таблицу (используя AUTONOMOUS_TRANSACTION) со столбцом метки времени, и оборачиваете вызовы вокруг всего SQL, вы очень быстро определите, куда уходит ваше время. Я разработал зрелый и сложный пакет специально для таких инструментов PL / SQL-кода и для мониторинга производственного кода в режиме реального времени. Обратитесь ко мне, если вам нужна копия.

К сожалению, большинство разработчиков, похоже, считают, что DBMS_OUTPUT решит проблему - может, но не очень эффективно ... или красиво.

Другие средства трассировки Oracle, безусловно, тоже помогают, но их немного сложнее использовать.

Наконец - используйте Диспетчер предприятия и проанализируйте моментальный снимок за определенный период времени. Посмотрите на 10 самых популярных SQL-запросов и, если хотите, используйте SQL-советник.

Надеюсь, это поможет ...

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