2010-03-05 2 views
1

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

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

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

+0

Какая версия Oracle? –

ответ

2

Explain, план легко доступен - он дает представление о производительности, который будет переводить на время/ресурсы.

Если вы хотите получить реальное представление о хранимых процедурах, просмотрите трассировку с помощью tkprof. Вот an article on it.

+0

спасибо. как я буду использовать план объяснения, если мой СП вернет два курсора? в основном имя SP - my_sp. он принимает два параметра и возвращает два курсора. – drake

+0

@drake: вывод плана объяснения основан на эффективности запросов, используемых для курсора (ов): http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_9010.htm Вывод 'tkprof' - это больше того, что вы ищете. –

2

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

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

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

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

Metalink Doc 243755.1 имеет скрипт для создания довольно HTML-вывода для ваших профайлов.

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

1

Я делаю много такого рода работ, и я нахожу, что иметь хороший инструмент каротажа - это путь. Неизменно проблема будет состоять из одного или нескольких операторов SQL DML, особенно UPDATES и DELETES. Если вы создаете простую процедуру ведения журнала, которая записывает в таблицу (используя AUTONOMOUS_TRANSACTION) с столбцом timestamp и завершает вызовы по всему SQL, вы очень быстро определяете, где ваше время идет. Я разработал зрелый и сложный пакет специально для инструментального кода PL/SQL, подобного этому, и для мониторинга производственного кода в реальном времени - вернитесь ко мне, если вы хотите получить копию.

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

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

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

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

Смежные вопросы