2016-01-22 3 views
0

Иногда нам приходится иметь дело с длительной хранимой процедурой, чтобы заставить их работать быстрее. Каков наилучший способ быстро определить, какая часть кода является самой медленной? Для меня я просто добавляю инструкцию PRINT в хранимую процедуру и запускаю ее, тогда я могу найти, какая часть будет медленной. Я хочу знать, есть ли альтернативные методы?Для длительных хранимых процедур, как быстро идентифицировать наиболее трудоемкую часть?

+0

Этот вопрос уже был задан вопрос о 'dba.stackexchange.com': [Как Профиль хранимых процедур] (http://dba.stackexchange.com/q/29284/65699) –

ответ

0

Для меня почти то же, что и вы, просто вставьте время начала и окончания каждой части процедуры в таблицу журналов, а затем проверьте записи. печать просто поможет вам проверить 1 раз. таблица журналов может помочь вам узнать, есть ли у процедуры какие-то проблемы.

0

Выполните процедуру с «планом выполнения». Это поможет вам определить, какая часть процедуры занимает больше времени. Также он предложит вам, если вам потребуется добавить какие-либо индексы.

Перед выполнением сценария в «SQL Server Management Studio» выберите «Включить план фактического выполнения» или используйте Ctrl + M, а затем запустите вызов сценария/процедуры.

В окне «План выполнения» (рядом с вкладкой результатов) вы можете подробно просмотреть и проанализировать его.

+0

, глядя на процентное соотношение фактического плана выполнения? –

0

Concur с Raffaello. В частности:

--initialise 
    DELETE FROM DB..Perf_Log; 
    DECLARE @lastTime datetime 
    set @lastTime=getdate() 

    /* do some shit */ 

    --add this block after each big block of functionality that you want to test 
    insert into DB..Perf_Log values ('did some shit 1',datediff("MILLISECOND",@lastTime,getdate())) 
    set @lastTime=getdate() 

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

0

Используйте SQL Profiler для подключения и наблюдения за каждым утверждением и его синхронизацией.

Использовать события, начинающиеся с SP: наблюдать, но знать, что профилировщик может иметь собственное влияние на производительность.

https://dba.stackexchange.com/questions/29284/how-to-profile-stored-procedures