Istnieje kilka metod uzyskania planu wykonania, który będzie zależał od okoliczności. Zazwyczaj do uzyskania planu można użyć SQL Server Management Studio, jednak jeśli z jakiegoś powodu nie można uruchomić zapytania w SQL Server Management Studio, pomocne może okazać się uzyskanie planu za pośrednictwem programu SQL Server Profiler lub poprzez inspekcję pamięć podręczna planu.
Metoda 1 — Korzystanie z SQL Server Management Studio
SQL Server jest wyposażony w kilka fajnych funkcji, które bardzo ułatwiają uchwycenie planu wykonania, po prostu upewnij się, że pozycja menu „Uwzględnij rzeczywisty plan wykonania” (znajdująca się w menu „Zapytanie”) jest zaznaczona i uruchom zapytanie w normalny sposób .
Jeśli próbujesz uzyskać plan wykonania instrukcji w procedurze składowanej, powinieneś wykonać procedurę składowaną, na przykład:
exec p_Example 42
Po zakończeniu zapytania w panelu wyników powinna pojawić się dodatkowa zakładka zatytułowana „Plan wykonania”. Jeśli uruchomiłeś wiele wyciągów, możesz zobaczyć wiele planów wyświetlanych w tej zakładce.
Z tego miejsca możesz sprawdzić plan wykonania w SQL Server Management Studio lub kliknąć prawym przyciskiem myszy plan i wybrać „Zapisz plan wykonania jako…”, aby zapisać plan w pliku w formacie XML.
Metoda 2 – Korzystanie z opcji SHOWPLAN
Ta metoda jest bardzo podobna do metody 1 (w rzeczywistości to właśnie robi wewnętrznie SQL Server Management Studio), jednak dołączyłem ją dla kompletności lub jeśli nie masz dostępnego SQL Server Management Studio.
Przed uruchomieniem zapytania uruchom jedno następujących stwierdzeń. Instrukcja musi być jedyną instrukcją w paczce, tzn. nie można wykonać innej instrukcji w tym samym czasie:
SET SHOWPLAN_TEXT ON
SET SHOWPLAN_ALL ON
SET SHOWPLAN_XML ON
SET STATISTICS PROFILE ON
SET STATISTICS XML ON -- The is the recommended option to use
Są to opcje połączenia, więc wystarczy uruchomić je tylko raz na połączenie. Od tego momentu wszystkim uruchamianym wyciągom będzie towarzyszyć dodatkowy zestaw wyników zawierający plan wykonania w żądanym formacie - po prostu uruchom zapytanie tak, jak zwykle, aby zobaczyć plan.
Gdy skończysz, możesz wyłączyć tę opcję za pomocą następującego oświadczenia:
SET <<option>> OFF
Porównanie formatów planów wykonania
Jeśli nie masz zdecydowanych preferencji, zalecam użycie STATISTICS XML
opcja. Ta opcja jest odpowiednikiem opcji „Uwzględnij rzeczywisty plan wykonania” w SQL Server Management Studio i dostarcza najwięcej informacji w najwygodniejszym formacie.
SHOWPLAN_TEXT
- Wyświetla podstawowy szacunkowy plan wykonania oparty na tekście, bez wykonywania zapytaniaSHOWPLAN_ALL
- Wyświetla tekstowy szacunkowy plan wykonania z szacunkowymi kosztami, bez wykonywania zapytaniaSHOWPLAN_XML
- Wyświetla szacunkowy plan wykonania oparty na XML z oszacowaniami kosztów, bez wykonywania zapytania. Jest to odpowiednik opcji „Wyświetl szacowany plan wykonania...” w SQL Server Management Studio.STATISTICS PROFILE
- Wykonuje zapytanie i wyświetla tekstowy rzeczywisty plan wykonania.STATISTICS XML
- Wykonuje zapytanie i wyświetla rzeczywisty plan wykonania oparty na XML. Jest to odpowiednik opcji „Uwzględnij rzeczywisty plan wykonania” w SQL Server Management Studio.
Metoda 3 — Korzystanie z programu SQL Server Profiler
Jeśli nie możesz uruchomić zapytania bezpośrednio (lub zapytanie nie działa wolno, gdy wykonujesz je bezpośrednio — pamiętaj, że chcemy, aby plan zapytania działał źle), możesz przechwycić plan za pomocą śledzenia programu SQL Server Profiler. Pomysł polega na tym, aby uruchomić zapytanie podczas śledzenia, które przechwytuje jedno ze zdarzeń „Showplan”.
Pamiętaj, że w zależności od obciążenia możesz użyj tej metody w środowisku produkcyjnym, jednak należy oczywiście zachować ostrożność. Mechanizmy profilowania SQL Server są zaprojektowane tak, aby zminimalizować wpływ na bazę danych, ale to nie znaczy, że nie będzie żadnych wpływ na wydajność. Możesz również mieć problemy z filtrowaniem i identyfikowaniem prawidłowego planu w śledzeniu, jeśli Twoja baza danych jest intensywnie używana. Powinieneś oczywiście skontaktować się z administratorem baz danych, aby sprawdzić, czy jest zadowolony z tego, że robisz to w ich cennej bazie danych!
- Otwórz program SQL Server Profiler i utwórz nowy ślad łączący z żądaną bazą danych, względem której chcesz zarejestrować ślad.
- W zakładce „Wybór zdarzeń” zaznacz „Pokaż wszystkie zdarzenia”, sprawdź wiersz „Wydajność” -> „Showplan XML” i uruchom śledzenie.
- Gdy śledzenie jest uruchomione, zrób wszystko, co trzeba, aby uruchomić wolno działające zapytanie.
- Poczekaj na zakończenie zapytania i zatrzymaj śledzenie.
- Aby zapisać ślad, kliknij prawym przyciskiem myszy plik XML planu w programie SQL Server Profiler i wybierz „Wyodrębnij dane zdarzenia...”, aby zapisać plan do pliku w formacie XML.
Otrzymany plan jest odpowiednikiem opcji „Uwzględnij rzeczywisty plan wykonania” w SQL Server Management Studio.
Metoda 4 — Sprawdzenie pamięci podręcznej zapytań
Jeśli nie możesz uruchomić zapytania bezpośrednio, a także nie możesz przechwycić śladu profilera, nadal możesz uzyskać szacunkowy plan, sprawdzając pamięć podręczną planu zapytań SQL.
Sprawdzamy pamięć podręczną planu, wysyłając zapytania do DMV programu SQL Server. Poniżej znajduje się podstawowe zapytanie, które wyświetli listę wszystkich buforowanych planów zapytań (jako xml) wraz z ich tekstem SQL. W większości baz danych będziesz także musiał dodać dodatkowe klauzule filtrujące, aby filtrować wyniki tylko do planów, którymi jesteś zainteresowany.
SELECT UseCounts, Cacheobjtype, Objtype, TEXT, query_plan
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
Wykonaj to zapytanie i kliknij XML planu, aby otworzyć plan w nowym oknie - kliknij prawym przyciskiem myszy i wybierz "Zapisz plan wykonania jako...", aby zapisać plan w pliku w formacie XML.
Uwagi:
Ponieważ istnieje tak wiele czynników (od schematu tabeli i indeksu po przechowywane dane i statystyki tabeli), powinieneś zawsze spróbuj uzyskać plan wykonania z bazy danych, którą jesteś zainteresowany (zwykle jest to ta, w której występują problemy z wydajnością).
Nie można uchwycić planu wykonania zaszyfrowanych procedur składowanych.
„rzeczywiste” a „szacunkowe” plany wykonania
rzeczywista plan wykonania to taki, w którym SQL Server faktycznie uruchamia zapytanie, podczas gdy szacowany plan wykonania SQL Server ustala, co by zrobił zrobić bez wykonywania zapytania. Chociaż logicznie równoważny, rzeczywisty plan wykonania jest znacznie bardziej przydatny, ponieważ zawiera dodatkowe szczegóły i statystyki dotyczące tego, co faktycznie wydarzyło się podczas wykonywania zapytania. Jest to niezbędne podczas diagnozowania problemów, w których szacunki SQL Server są wyłączone (np. gdy statystyki są nieaktualne).
- Ponownie przeanalizowano szacunkowy i rzeczywisty plan wykonania
Jak interpretować plan wykonania zapytania?
Jest to temat wystarczająco godny dla (bezpłatnej) książki sam w sobie.
Zobacz też:
- Podstawy planu wykonania
- Uprawnienia SHOWPLAN i partie Transact-SQL
- SQL Server 2008 – Używanie skrótów zapytań i skrótów planu zapytań
- Analiza pamięci podręcznej planów SQL Server