Začínáme s Pomocníkem pro ladění dotazů (QTA)
Plánujete migrovat dvě produkční databáze z SQL Serveru 2012 do nové instance SQL Serveru 2022. Vzhledem k tomu, že se databáze používají, chcete na začátku ponechat úrovně kompatibility v původním nastavení a znovu nastavovat aplikace. Nástroj pro posouzení kardinality se od SQL Serveru 2014 změnil a chcete měřit výkon dotazů před změnou úrovně kompatibility databází na SQL Server 2022 (160).
Když přesunete úroveň kompatibility a použijete nový algoritmus pro posouzení kardinality, musíte najít a opravit všechny dotazy, které se shodují s nižším přenosem. Použití tohoto přístupu měří směrný plán pro porovnání výkonu po upgradu úrovně kompatibility.
Povolení úložiště dotazů shromažďuje metriky, které potřebujete k vyhledání dotazů s nižším výkonem, a pomocí Pomocníka pro ladění dotazů (QTA) vás provede opravou dotazů s nižším výkonem. Tato lekce poskytuje přehled úložiště dotazů a QTA.
Přehled úložiště dat
Funkce úložiště dotazů byla představena v SQL Serveru 2016. Tato funkce nepřetržitě shromažďuje informace o provádění a výkonu dotazů v databázi. Úložiště dotazů funguje jako zapisovač letových dat za účelem shromáždění informací o modulu runtime pro dotazy a plány. Pokud si tato data ukládáte, můžete sledovat, jak se výkon v čase vyvíjí. Pokud se něco nepovede, existuje historie informací ke zjištění příčiny problému.
Počínaje SQL Serverem 2022 a ve službě Azure SQL Database a sql Managed Instance je úložiště dotazů ve výchozím nastavení povolené pro nové databáze. V SQL Serveru 2016, SQL Serveru 2017 a SQL Serveru 2019 není úložiště dotazů ve výchozím nastavení povolené, ale jakákoli databáze v instanci SQL Serveru 2016 nebo vyšší může povolit, zakázat a nakonfigurovat úložiště dotazů. Pokyny k povolení úložiště dotazů nebo potvrzení konfigurace databáze najdete v další lekci.
Úložiště dotazů může pracovat s databázemi se staršími úrovněmi kompatibility než instance SQL Serveru. Pokud například migrujete databázi z SQL Serveru 2012 na SQL Server 2022 a necháte úroveň kompatibility na 110, úložiště dotazů může dál pracovat s databází.
Mnoho funkcí inteligentního zpracování dotazů a dalších automatických vylepšení výkonu je však povoleno pouze pro novější úrovně kompatibility databáze. Proto byste se měli pokusit otestovat výkon aplikace na nejnovější úrovni kompatibility databáze SQL Serveru. Úložiště dotazů a QTA vám můžou pomoct s tímto testováním výkonu.
Při povolení databáze úložiště dotazů shromáždí a hlásí následující statistiky pro vaše dotazy:
- Dotazy s nižším výkonem
- Celkové využití prostředku
- Dotazy nejvíce využívající prostředky
- Dotazy s vynucenými plány
- Dotazy s vysokou variantou
- Statistika čekání dotazu
- Sledované dotazy
Regresní dotaz nastane, když optimalizátor dotazů používá nový plán dotazu, který způsobuje snížení výkonu. K regresi může dojít po důležitých změnách, jako je přidání, vyřazení nebo změna indexu, aktualizace statistik nebo změna kardinality dat.
Před úložištěm dotazů SQL Server neposkytl přehled o příčině regresí a identifikaci problémů byl problém pro vývojáře a správce databází. Úložiště dotazů teď můžete použít k vyhledání dotazů s nižším výkonem a vynucení optimalizátoru použít konkrétní plán z historie.
Je běžné, že několik z možná tisíc dotazů spotřebuje nejvíce systémových prostředků. Úložiště dotazů určuje, které dotazy mají nejvyšší spotřebu, a to buď kvůli regresi, nebo kvůli špatnému ladění. V závislosti na konfiguraci můžete výsledky filtrovat podle doby trvání, procesoru, paměti, vstupně-výstupních operací nebo počtu spuštění.
Úložiště dotazů můžete použít k monitorování průběžného výkonu a testování A/B k porovnání výkonu před a po použití jedné změny. Dotaz můžete například ladit přidáním indexu do tabulky, na kterou dotaz odkazuje, takže vyhledávání spojení je rychlejší. Porovnáním statistik v úložišti dotazů před a po přidání indexu zjistíte, jestli index ovlivňuje výkon. Statistiky můžete porovnat také po přidání nového hardwaru nebo aktualizaci aplikace.
Přehled Pomocníka pro ladění dotazů
Pomocník pro ladění dotazů (QTA) používá data z úložiště dotazů k vyhledání dotazů, které začínají regrese. QTA automaticky experimentuje s nalezením řešení, které urychlí dotaz před tím, než se dotaz podformuluje k bodu ovlivnění uživatelů.
Úložiště dotazů a QTA můžete použít k monitorování a optimalizaci výkonu databáze po upgradu. Po migraci databáze na SQL Server 2016 nebo vyšší ponecháte úroveň kompatibility databáze beze změny a povolíte úložišti dotazů shromažďovat základní statistiky výkonu dotazů.
Pak změníte úroveň kompatibility a budete dál používat data úložiště dotazů k měření statistik výkonu vašich dotazů. Statistiky můžete porovnat a zjistit, jestli každý dotaz dělá lépe, stejně nebo horší než před upgradem.
Když změníte úroveň kompatibility pro upgrade databáze, SQL Server změní verzi odhadce kardinality, kterou používá. Funkce QTA najde možné vzory regrese dotazů kvůli změně v nástroji pro posouzení kardinality a experimenty s cílem najít vylepšení výkonu. Pak můžete vytvořit příručky plánu pro dotazy, které ukazují vylepšení.
Shrnutí
Úložiště dotazů průběžně měří statistiky výkonu vašich dotazů, stejně jako zapisovač letových dat letadla zaznamenává aktivitu. Úložiště dotazů můžete povolit pro libovolnou databázi na SQL Serveru 2016 nebo novějším bez ohledu na úroveň kompatibility. Úložiště dotazů slouží k nepřetržitému monitorování výkonu dotazů a testování A/B k měření účinků jedné změny.
Při upgradu databáze na SQL Server 2014 nebo vyšší může být změna nástroje pro posouzení kardinality pomalé dotazy, které byly rychlé v předchozí verzi SQL Serveru. V ideálním případě chcete najít a opravit případné regrese, než ovlivní uživatele. Pokud u svých databází povolíte úložiště dotazů, znamená to, že se bude neustále shromažďovat statistika o dotazech. QTA pak můžete použít k identifikaci a opravě dotazů s nižším přenosem dat, než se stanou problémem.