sql >> Databáze >  >> RDS >> Sqlserver

Jak získám plán provádění dotazů na serveru SQL Server?

Existuje řada metod, jak získat plán provádění, který z nich použít, bude záviset na vašich okolnostech. Obvykle můžete k získání plánu použít SQL Server Management Studio, ale pokud z nějakého důvodu nemůžete spustit dotaz v SQL Server Management Studio, může být užitečné získat plán prostřednictvím SQL Server Profiler nebo kontrolou mezipaměť plánu.

Metoda 1 – Použití SQL Server Management Studio

SQL Server přichází s několika elegantními funkcemi, které velmi usnadňují zachycení plánu provádění, jednoduše se ujistěte, že je zaškrtnutá položka nabídky „Zahrnout skutečný plán provádění“ (nachází se v nabídce „Dotaz“) a spusťte dotaz jako obvykle. .

Pokud se pokoušíte získat plán provádění pro příkazy v uložené proceduře, měli byste provést uloženou proceduru takto:

exec p_Example 42

Po dokončení dotazu by se v podokně výsledků měla zobrazit další karta s názvem „Plán provádění“. Pokud jste spustili mnoho příkazů, můžete na této kartě vidět mnoho plánů.

Odtud si můžete prohlédnout plán provádění v SQL Server Management Studio nebo kliknout pravým tlačítkem na plán a vybrat "Uložit plán provádění jako ..." pro uložení plánu do souboru ve formátu XML.

Metoda 2 – Použití možností SHOWPLAN

Tato metoda je velmi podobná metodě 1 (ve skutečnosti to je to, co SQL Server Management Studio provádí interně), nicméně jsem ji zahrnul pro úplnost nebo pokud nemáte SQL Server Management Studio k dispozici.

Před spuštěním dotazu spusťte jeden z následujících prohlášení. Příkaz musí být jediným příkazem v dávce, tj. nemůžete současně provést jiný příkaz:

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

Toto jsou možnosti připojení, takže je stačí spustit pouze jednou za připojení. Od tohoto okamžiku budou všechny spuštěné příkazy doprovázeny další sadou výsledků obsahující váš plán provádění v požadovaném formátu – jednoduše spusťte dotaz tak, jak byste plán viděli normálně.

Jakmile budete hotovi, můžete tuto možnost vypnout následujícím příkazem:

SET <<option>> OFF

Porovnání formátů prováděcích plánů

Pokud nemáte silné preference, doporučuji použít STATISTICS XML volba. Tato možnost je ekvivalentní volbě "Zahrnout skutečný plán provedení" v SQL Server Management Studio a poskytuje nejvíce informací v nejvhodnějším formátu.

  • SHOWPLAN_TEXT - Zobrazuje základní textový odhadovaný plán provádění bez provedení dotazu
  • SHOWPLAN_ALL - Zobrazuje textový odhadovaný plán provádění s odhady nákladů bez provedení dotazu
  • SHOWPLAN_XML - Zobrazuje odhadovaný plán provádění na základě XML s odhady nákladů bez provedení dotazu. To je ekvivalentní možnosti "Zobrazit odhadovaný plán provedení..." v SQL Server Management Studio.
  • STATISTICS PROFILE - Provede dotaz a zobrazí textový plán skutečného provedení.
  • STATISTICS XML - Provede dotaz a zobrazí skutečný plán provádění založený na XML. To je ekvivalentní možnosti "Zahrnout skutečný plán provedení" v SQL Server Management Studio.

Metoda 3 – Použití SQL Server Profiler

Pokud nemůžete svůj dotaz spustit přímo (nebo váš dotaz neběží pomalu, když jej provádíte přímo – pamatujte, že chceme plán dotazu, který bude fungovat špatně), můžete plán zachytit pomocí trasování SQL Server Profiler. Cílem je spustit dotaz, zatímco běží trasování, které zachycuje jednu z událostí „Showplan“.

Všimněte si, že v závislosti na zatížení můžete použijte tuto metodu v produkčním prostředí, ale měli byste být samozřejmě opatrní. Profilovací mechanismy SQL Serveru jsou navrženy tak, aby minimalizovaly dopad na databázi, ale to neznamená, že nebudou žádné výkonnostní dopad. Pokud je databáze intenzivně využívána, můžete mít také problémy s filtrováním a identifikací správného plánu ve vašem trasování. Samozřejmě byste si měli ověřit u svého DBA, zda je spokojený, když to děláte v jejich vzácné databázi!

  1. Otevřete SQL Server Profiler a vytvořte nové trasování připojující se k požadované databázi, proti které chcete trasování zaznamenat.
  2. Na kartě „Výběr událostí“ zaškrtněte „Zobrazit všechny události“, zaškrtněte řádek „Výkon“ -> „Showplan XML“ a spusťte trasování.
  3. Zatímco je trasování spuštěno, udělejte vše, co potřebujete, aby se pomalu spouštěný dotaz spustil.
  4. Počkejte na dokončení dotazu a zastavte trasování.
  5. Chcete-li uložit trasování, klikněte pravým tlačítkem na plán xml v SQL Server Profiler a vyberte „Extrahovat data události...“ pro uložení plánu do souboru ve formátu XML.

Plán, který získáte, je ekvivalentem možnosti „Zahrnout skutečný plán provedení“ v SQL Server Management Studio.

Metoda 4 – Kontrola mezipaměti dotazů

Pokud nemůžete spustit dotaz přímo a také nemůžete zachytit trasování profileru, můžete přesto získat odhadovaný plán kontrolou mezipaměti plánu dotazů SQL.

Zkontrolujeme mezipaměť plánu dotazem na SQL Server DMV. Následuje základní dotaz, který zobrazí seznam všech plánů dotazů uložených v mezipaměti (jako xml) spolu s jejich textem SQL. Na většinu databází budete také muset přidat další filtrovací klauzule, abyste filtrovali výsledky pouze na plány, které vás zajímají.

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)

Proveďte tento dotaz a kliknutím na plán XML otevřete plán v novém okně - klikněte pravým tlačítkem a vyberte "Uložit plán realizace jako..." pro uložení plánu do souboru ve formátu XML.

Poznámky:

Vzhledem k tomu, že existuje mnoho faktorů (od tabulky a schématu indexu až po uložená data a statistiky tabulky), měli byste vždy zkuste získat plán provádění z databáze, která vás zajímá (obvykle z té, která má problém s výkonem).

Nemůžete zachytit plán provádění pro šifrované uložené procedury.

„skutečné“ versus „odhadované“ plány provádění

skutečný plán provádění je takový, kdy SQL Server skutečně spouští dotaz, zatímco odhadovaný plán provádění SQL Server zjistí, co by by provést bez provedení dotazu. Ačkoli je to logicky ekvivalentní, skutečný plán provádění je mnohem užitečnější, protože obsahuje další podrobnosti a statistiky o tom, co se skutečně stalo při provádění dotazu. To je nezbytné při diagnostice problémů, kdy jsou odhady SQL Serverů vypnuté (například když jsou statistiky zastaralé).

  • Znovu zkontrolován odhadovaný a skutečný plán provádění

Jak interpretuji plán provádění dotazu?

Toto je téma, které si zaslouží samostatnou (bezplatnou) knihu.

Viz také:

  • Základy prováděcího plánu
  • Povolení SHOWPLAN a dávky Transact-SQL
  • SQL Server 2008 – použití hodnot hash dotazů a hash plánu dotazů
  • Analýza mezipaměti plánu SQL Server


  1. Jak procházet seznamem s oddělovači v Oracle PLSQL

  2. Jak vytvořit sloupec, který není null v pohledu

  3. Žádná další data ke čtení z chyby soketu

  4. Záznamy založené na kurzoru v PostgreSQL