/ / Jak prześledzić czas wykonania procedury? - sql, sql-server

Jak prześledzić czas wykonywania procedury? - sql, sql-server

Mam pewne procedury, które nie są zoptymalizowane. Chcę przeanalizować, czy te procedury są zoptymalizowane, czy nie, ponieważ istnieją tylko dane masowe do sprawdzenia.

Chcę wprowadzić kwerendę sql do wszystkich procedurktóry wstawi do jednej tabeli, co jest dokładnym czasem podjętym przez powyższe zapytanie do wykonania. Stworzę tabelę, w której moja procedura wstawi czas wykonania zapytania.

Czy jest jakiś sposób, żeby to zrobić?

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli chcesz zintegrować go w swojej procedurze, ustaw zmienną, która przechowuje czas rozpoczęcia wykonania na początku, i odejmij go od bieżącego czasu na końcu procedury.

/* Start of your procedure */
Declare @startTime datetime = GETDATE()
Declare @duration varchar

/* Your procedure */
...

/* End of your procedure */
Set @duration = CONVERT(VARCHAR(8),GETDATE() - @startTime,108)
Insert into statisticTable
Values ("procedureName", @duration)

1 dla odpowiedzi nr 2

Czy próbowałeś użyć Profil SQL?

W Trace Properties możesz zdefiniować Start Time i End time przechowywanych procedur. To bardzo potężne narzędzie.


0 dla odpowiedzi № 3

Możesz sprawdzić wyżej wymienione rzeczy za pomocą Dynamiczne widoki zarządzania....

Jeśli używasz starej wersji SQL SERVER, użyj programu SQL Server Profiler ....


-1 dla odpowiedzi № 4

Dlaczego chcesz to zrobić?Istnieje wiele narzędzi, takich jak DMV, śledzenia, exevents itp. Będziesz dodać do narzuty do proc, jeśli umieścisz tego rodzaju kod. Do procedury najlepiej jest dm_procedure_stats DMV, ale jest dostępny w 2008 R2 i powyżej tylko Use_dec_exec_query_stats w starszych wersjach, które dadzą ci znacznie lepsze statystyki dotyczące czasu, logicznego io, cputime i fizycznych IO itd.