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

Jak vygenerovat plán provádění na serveru SQL Server

Plány provádění dotazů SQL se generují, když optimalizátor dotazů určí nejúčinnější způsob doručení dat požadovaných dotazem. Tyto plány představují databázové operace, které dotaz běží, a ukazují, které objekty dotaz používá, typy použití a způsob jejich použití.

Je všeobecně známo, že špatně fungující dotazy jsou klíčovým ukazatelem toho, že v databázi není něco v pořádku. Takže pohled „pod pokličku“ na plán provádění dotazu je jedním z nejlepších způsobů, jak určit příčinu problému s výkonem.

Informace dostupné v plánu provádění SQL jsou neocenitelné pro správce databází, kteří řeší problémy s výkonem dotazů SQL Server, protože jim umožňují dostat se ke kořenové příčině problému a podle potřeby dotaz vyladit.

Zkoumání plánů provádění SQL je jedním z prvních kroků při ladění výkonu, protože plán jasně zdůrazňuje nejpravděpodobnější zdroje problémů v rámci dotazu, včetně drahých operátorů, neobvyklého počtu záznamů mezi operátory a dalších operátorů.

DBA také těží z varování plánu provádění, která upozorňují uživatele na problémy, jako jsou úniky databáze tempdb a chybějící indexy.

Typy plánů provádění SQL

Existují dva hlavní typy plánů provádění SQL:plány odhadovaného provádění a plány skutečného odhadu.

Odhadované prováděcí plány lze nejlépe popsat jako určitý druh předpovědi počasí. Jak název napovídá, odhadované plány provádění používají přibližné výpočty, statistiky a další parametry k odhadu kroků, které může SQL Server Engine následovat k provedení odeslaného dotazu po analýze dotazu.

K vygenerování tohoto typu prováděcího plánu nemusíte dotaz spouštět, takže je vhodný pro složité dotazy, u kterých by vygenerování skutečného prováděcího plánu trvalo dlouho.

Skutečné prováděcí plány provedou zadaný dotaz a poté zobrazí kroky, ke kterým došlo během provádění. Tento typ plánu zobrazuje skutečné výpočty a skutečné (nikoli odhadované) kroky následované SQL Server Engine.

Vzhledem k tomu, že tento typ plánu provádění dotaz skutečně spouští, je to dobrá volba pro odstraňování problémů s výkonem dotazu.

Jak vygenerovat plán provádění SQL

Hackernoon poskytuje stručný popis toho, jak generovat odhadované a skutečné plány provádění. Proces lze zredukovat na následující kroky:

Vygenerujte odhadovaný plán provedení

  • Přejděte do databáze
  • Zvýrazněte dotaz
  • Klikněte na „Dotaz“
  • Klikněte na „Zobrazit odhadovaný plán provedení“ nebo použijte zkratku Ctrl + L

Vygenerujte skutečný plán provádění

  • Přejděte do databáze
  • Zvýrazněte dotaz
  • Klikněte na „Dotaz“
  • Klikněte na „Zahrnout skutečný plán provádění“ nebo použijte zkratku Ctrl + M

Podrobné vysvětlení, jak generovat odhadované plány provádění a skutečné plány provádění, naleznete v oficiální dokumentaci společnosti Microsoft.

Proč se odhadované a skutečné plány provádění SQL mohou lišit

Obecně budou odhadované a skutečné plány realizace podobné. Jsou však případy, kdy se liší. To je normální a dochází k tomu, protože statistika databáze a skutečná data se liší. Tyto rozdíly mohou být zavedeny prostřednictvím několika kanálů:

Paralelismus

Náklady na plán mohou způsobit vytvoření dvou plánů provádění pro odeslaný dotaz. SQL Server Engine si vybere, zda použít paralelní plán či nikoli, takže je možné, aby jeden plán používal paralelní plán a druhý sériový plán.

Zastaralé statistiky

Když vložíte data do tabulek a indexů a odstraníte je z nich nebo změníte tabulku nebo schéma indexu, statistika se změní. Pokud statistiky nejsou pravidelně aktualizovány, skutečný plán provádění se bude lišit od odhadovaného plánu provádění.

Neplatný odhadovaný plán

Pokud dotaz obsahuje příkaz, který vyžaduje dočasnou tabulku, která existuje pouze v případě, že je dotaz proveden, generování odhadovaného plánu provádění vytvoří chybu, protože nebyl proveden žádný dotaz. Stejný dotaz by ve skutečném plánu provádění fungoval dobře, protože dotaz byl proveden.

Plány provádění SQL jsou cenným zdrojem pro řešení problémů s výkonem serveru SQL Server. Znalost toho, jak generovat odhadované i skutečné plány provádění SQL, je nezbytným nástrojem pro každého DBA, který má za úkol ladit dotazy pro optimální výkon.


  1. Databáze kódů PIN v Indii se skriptem pro vyhledávání polohy v php a jquery

  2. Základy SQL Server Inner Join s příklady

  3. Java Multicast Time To Live je vždy 0

  4. Profilování dat:Zjišťování podrobností o datech