Sdílet prostřednictvím


Osvědčené postupy pro úložiště dotazů

platí pro: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database v Microsoft Fabric

Tento článek podrobně popisuje osvědčené postupy pro použití nápovědy k úložišti dotazů. Rady úložiště dotazů umožňují tvarování obrazců plánu dotazů beze změny kódu aplikace.

Případy použití tipů pro Úložiště dotazů

Zvažte následující případy použití jako ideální nápovědy pro Query Store. Další informace naleznete v části Kdy použít rady pro Úložiště dotazů.

Opatrnost

Vzhledem k tomu, že optimalizátor dotazů SQL Serveru obvykle vybírá nejlepší plán provádění dotazu, doporučujeme jako poslední možnost použít pouze rady pro zkušené vývojáře a správce databází. Další informace najdete v tématu tipy pro dotazy.

Pokud kód nelze změnit

Použití nápovědy k úložišti dotazů umožňuje ovlivnit plány provádění dotazů beze změny kódu aplikace nebo databázových objektů. Žádná další funkce neumožňuje rychle a snadno použít nápovědy k dotazům.

Tipy pro Úložiště dotazů můžete použít například, abyste získali výhody pro ETL procesy, aniž byste znovu nasazovali kód. V tomto 14minutovém videu se dozvíte, jak zvýšit efektivitu hromadného načítání pomocí hintů Query Store.

Rady úložiště dotazů jsou jednoduché metody ladění dotazů, ale pokud se dotaz stane problematickým, měl by být vyřešen s podstatnějšími změnami kódu. Pokud u dotazu pravidelně zjišťujete potřebu použít Query Store hints, zvažte zásadnější přepsání dotazu. Optimalizátor dotazů SQL Serveru obvykle vybere nejlepší plán provádění dotazu. Doporučujeme používat pouze rady jako poslední možnost pro zkušené vývojáře a správce databází.

Informace o tom, které rady dotazů lze použít, naleznete v tématu Podporované rady dotazů.

Při vysoké zátěži transakcí nebo u kriticky důležitého kódu

Pokud jsou změny kódu nepraktické kvůli vysokým požadavkům na provozní dobu nebo transakčnímu zatížení, můžou návěští úložiště dotazů rychle použít dotazové náznaky na stávající zátěž dotazů. Přidávání a odebírání nápověd úložiště dotazů je snadné.

Do Úložiště Dotazů je možné přidat a odebrat nápovědy k dotazům v dávkách, aby byl výkon přizpůsoben časovým úsekům určeným pro náhlé zvýšení pracovní zátěže.

Jako náhrada za plánovací průvodce

Před představením nápověd úložiště dotazů musel vývojář spoléhat na plánové vodítka k provádění podobných úloh, což může být složité použít. Nápovědy k úložišti dotazů jsou integrované s funkcemi úložiště dotazů aplikace SQL Server Management Studio (SSMS) pro vizuální zkoumání dotazů.

Pomocí průvodců plánem je nutné prohledávat všechny plány pomocí fragmentů dotazů. Funkce nápovědy úložiště dotazů nevyžaduje přesné odpovídající dotazy, které by ovlivnily výsledný plán dotazů. Poznámky úložiště dotazů lze aplikovat na query_id v datové sadě úložiště dotazů.

Query Store nápovědy převyšují pevně zakódované nápovědy na úrovni příkazů a stávající průvodce plánem.

Zvažte novější úroveň kompatibility.

Nápovědy k úložišti dotazů můžou být cennou metodou, pokud vám není k dispozici novější úroveň kompatibility databáze, například kvůli specifikaci dodavatele nebo větším zpožděním testování. Pokud je pro databázi k dispozici vyšší úroveň kompatibility, zvažte upgrade úrovně kompatibility databáze jednotlivých dotazů, abyste využili nejnovějších optimalizací výkonu a funkcí SQL Serveru.

Pokud máte například instanci SQL Serveru 2022 (16.x) s databází na úrovni kompatibility 140, můžete přesto pomocí tipů úložiště dotazů spouštět jednotlivé dotazy na úrovni kompatibility 160. Můžete použít následující nápovědu:

EXEC sys.sp_query_store_set_hints @query_id= 39, @query_hints = N'OPTION(USE HINT(''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_160''))';

Pro úplný výukový program se podívejte na příklady tipů pro úložiště dotazů.

Po upgradu zvažte starší úroveň kompatibility.

Dalším případem, kdy můžou pomoct rady úložiště dotazů, je to, že dotazy nelze upravit přímo po migraci nebo upgradu instance SQL Serveru. Použijte tipy úložiště dotazů k použití předchozí úrovně kompatibility pro dotaz, dokud nemůže být přepsán nebo jinak upraven tak, aby fungoval dobře na nejnovější úrovni kompatibility. Identifikujte odlehlé dotazy, které vykazují zpětný vývoj na vyšší úrovni kompatibility, pomocí sestavy úložiště dotazů pro dotazy s nižším výkonem, nástroje Poradce pro ladění dotazů během migrace nebo pomocí jiné telemetrie aplikací na úrovni dotazu. Další informace o rozdílech mezi úrovněmi kompatibility najdete v tématu Rozdíly mezi úrovněmi kompatibility.

Po testování výkonu nové úrovně kompatibility a nasazení tipů úložiště dotazů tímto způsobem můžete upgradovat úroveň kompatibility celé databáze a zachovat klíčové problematické dotazy na předchozí úrovni kompatibility bez jakýchkoli změn kódu.

Úvahy o nápovědách k úložišti dotazů

Při nasazování nápověd Query Store zvažte následující scénáře.

Změny distribuce dat

Průvodce plánů, vynucené plány prostřednictvím úložiště dotazů a tipy úložiště dotazů přepisují rozhodování optimalizátoru. Tip úložiště dotazů teď může být užitečný, ale ne v budoucnu. Pokud například příznak k úložišti dotazů pomáhá dotazu v předchozí distribuci dat, může být protiproduktivní, pokud velké DML operace změní data. Nová distribuce dat může způsobit, že optimalizátor udělá lepší rozhodnutí než nápověda. Tento scénář je nejběžnějším důsledkem vynucení chování plánu.

Pravidelně přehodnocujte svou strategii nápověd v Úložišti dotazů.

V následujících případech znovu posuďte stávající strategii zaměřenou na náznaky úložiště dotazů:

  • Po známých změnách distribuce velkých objemů dat
  • Když se změní cíl na úrovni služby (SLO) služby Azure SQL Database nebo spravované instance nebo virtuálního počítače.
  • Kde se opravy plánů staly dlouhodobými. "Query Store hints jsou nejlépe využitelné pro krátkodobé opravy."
  • Neočekávané regrese výkonu

Potenciál širokého dopadu

Rady úložiště dotazů ovlivní všechna spuštění dotazu bez ohledu na sadu parametrů, zdrojovou aplikaci, uživatele nebo sadu výsledků. V případě neúmyslné regrese výkonu lze rady úložiště dotazů vytvořené pomocí sys.sp_query_store_set_hints snadno odebrat pomocí sys.sp_query_store_clear_hints.

Před použitím nápověd Úložiště dotazů v produkčním prostředí pečlivě provádějte zátěžové testování změn pro důležité nebo citlivé systémy.

Vynucené parametrizace a nápověda RECOMPILE nejsou podporovány.

Použití příznaku dotazu RECOMPILE s příznaky úložiště dotazů není podporováno, pokud je možnost databáze PARAMETRIZACE nastavena na FORCED. Další informace naleznete v tématu Pokyny pro použití vynucené parametrizace.

Nápověda RECOMPILE není kompatibilní s vynucenou parametrizací nastavenou na úrovni databáze. Pokud má databáze nastavenou vynucenou parametrizaci a nápověda RECOMPILE je součástí řetězce nápovědy nastaveného v úložišti dotazů pro dotaz, databázový stroj ignoruje nápovědu RECOMPILE a použije další rady, pokud je využívá. Kromě toho od července 2022 ve službě Azure SQL Database by mělo být vydáno upozornění (kód chyby 12461), které uvádí, že byla ignorována nápověda rekompilu.

Informace o tom, které nápovědy dotazů lze použít, naleznete v tématu Podporované nápovědy dotazů.

Viz také

Další kroky