Inteligentní výkon
SQL Server a Azure SQL zahrnují automatizaci, která umožňuje zajistit konzistentní výkon vaší aplikace. Tyto možnosti automatizace se souhrnně označují jako inteligentní výkon.
Inteligentní výkon Azure SQL zahrnuje inteligentní zpracování dotazů, automatickou opravu plánu a automatické ladění.
Inteligentní zpracování dotazů
Inteligentní zpracování dotazů je sada nových funkcí integrovaných do procesoru dotazů. Povolíte ho pomocí nejnovější úrovně kompatibility databáze. Aplikace můžou dosáhnout výkonu pomocí nejnovější úrovně kompatibility databáze. Nevyžadují se žádné změny kódu. Příkladem inteligentního zpracování dotazů je odložená kompilace proměnných tabulky, která pomáhá zrychlit dotazy používající proměnné tabulky.
Azure SQL Database a Azure SQL Managed Instance podporují stejnou úroveň kompatibility databáze (150) pro použití IQP jako SQL Server 2019 a novější verze.
Automatická oprava plánu
Regrese plánu dotazů představují jeden z nejobtížnějších problémů s výkonem, které je třeba vyřešit u serveru SQL. K regresi plánu dotazů dojde, když se stejný dotaz překompiluje a nový plán poskytuje horší výkon.
Služby SQL Server 2017 a Azure SQL Database zavedly koncept automatické opravy plánu pomocí analýzy dat v úložišti dotazů. Když je úložiště dotazů povoleno s databází v SQL Serveru 2017 (nebo novějším) a v Azure SQL Database, bude stroj SQL Serveru hledat regrese plánu dotazů a poskytovat doporučení. Tato doporučení můžete zobrazit v sys.dm_db_tuning_recommendations
zobrazení dynamické správy (DMV). Tato doporučení budou zahrnovat příkazy T-SQL pro ruční vynucení plánu dotazů, pokud se výkon nacházel „v dobrém stavu“.
Pokud získáte důvěru v tato doporučení, můžete povolit, aby SQL Server vynucoval plány automaticky, když dojde k regresím. Povolte automatickou opravu plánu pomocí ALTER DATABASE
argumentu a argumentu AUTOMATIC_TUNING
.
Pro Azure SQL Database můžete také povolit automatickou opravu plánu pomocí možností automatického ladění na webu Azure Portal nebo v rozhraních REST API. Doporučení automatické opravy plánu jsou vždycky povolená pro všechny databáze s povoleným úložištěm dotazů (to je výchozí nastavení pro Azure SQL Database a spravovanou instanci Azure SQL). U nových databází je automatická oprava plánu (FORCE_PLAN
) ve výchozím nastavení povolená pro Azure SQL Database.
Automatické ladění Azure SQL Database
Automatická oprava plánu je příkladem automatického ladění v Azure SQL a SQL Serveru, ale jedinečný aspekt automatického ladění služby Azure SQL Database je automatické indexování.
Poznámka:
Automatické indexování ale v tuto chvíli ve spravované instanci SQL není k dispozici.
Cloud poskytuje Microsoftu způsob, jak poskytovat další služby ve formě doporučení k výkonu a automatizace mimo doporučení plánu. Tato funkce se označuje jako automatické ladění pro Azure SQL Database. Tyto služby běží jako programy na pozadí, které analyzují data výkonu z instance služby Azure SQL Database. Tyto služby jsou zahrnuté v ceně každého předplatného databáze.
Hlavní scénář automatického ladění je navržený tak, aby řešil indexy. Automatické ladění analyzuje data z telemetrie databáze, včetně úložiště dotazů a zobrazení dynamické správy, a doporučí vytvoření indexů, které můžou zlepšit výkon aplikace. Kromě toho můžete povolit, aby automatické ladění automaticky vytvářelo indexy, které mohou zlepšit výkon dotazů. Automatické ladění také sleduje změny indexů a doporučí vyřazení nebo automaticky vyřadí indexy, které nezlepšují výkon dotazu.
Automatické ladění Azure SQL Database využívá konzervativní přístup k doporučování indexů. To znamená, že doporučení, která se můžou objevit v zobrazení dynamické správy, jako sys.dm_db_missing_index_details
je nebo plán zobrazení dotazu, se nemusí zobrazit okamžitě jako doporučení pro automatické ladění. Automatické ladění služeb monitoruje dotazy v průběhu času a používá algoritmy strojového učení k vytváření doporučení, která skutečně ovlivňují výkon dotazů.
Mějte na paměti, že automatické ladění pro doporučování indexů není zodpovědné za žádné režijní výkony, které by index mohl způsobit na vašich operacích, jako jsou vložení, aktualizace nebo odstranění. Nové neclusterované indexy, které funkce automatických indexů vytvoří, mají obvykle velký pozitivní dopad na výkon.
Parametrizované dotazy představují další scénář pro automatické ladění. Dotazy s neparametrizovanými hodnotami můžou vést k režijním nákladům na výkon, protože plán provádění se rekompiuje pokaždé, když se hodnoty, které nejsou parametrizované, liší. V mnoha případech stejné dotazy s různými hodnotami parametrů generují stejné plány spuštění. Tyto plány se ale stále přidávají do mezipaměti plánu samostatně. Proces překompilování plánů spuštění používá databázové prostředky, prodlužuje dobu trvání dotazu a přetéká mezipaměť plánu. Tyto události zase způsobují vyřazení plánů z mezipaměti.
K vyřešení tohoto scénáře můžete použít optimalizaci plánu PSP (Parameter Sensitive Plan). Optimalizace PSP automaticky umožňuje více aktivních plánů uložených v mezipaměti pro jeden parametrizovaný příkaz. Plány spouštění v mezipaměti odpovídají různým velikostem dat na základě hodnot parametrů modulu runtime poskytnutého zákazníkem.
Ukázka indexů vytvořených pomocí automatického ladění v Azure SQL Database
Následuje příklad z webu Azure Portal, kde jsou indexy doporučovány pro databázi založenou na analýze úloh v průběhu času. Do služby Azure SQL Database jsme ještě neposílali dostatek aktivit, abychom mohli vygenerovat podobná doporučení. CREATE INDEX
doporučení se generují v průběhu času, protože vaše úloha je zachycena, a ne v malém časovém rámci tohoto cvičení.
Na webu Azure Portal v přehledu výkonu můžete zobrazit informace o výkonu pro pět dotazů s nejvyšším využitím prostředků, jak je nalezeno v úložišti dotazů. Je tu také doporučení.
Azure Portal také nabízí Query Performance Insights, což je vizuální nástroj pro zasílání zpráv založený na úložišti dotazů. V tomto příkladu nástroj Query Performance Insights zobrazí konkrétní dotaz s největší spotřebou prostředků a rady ohledně vylepšení výkonu dotazů.
Azure Portal také poskytuje způsob, jak přímo zobrazit všechna doporučení týkající se výkonu.
V tomto zobrazení uvidíte konkrétní doporučení a historii všech akcí automatického ladění. V případě indexu se zobrazí podrobnosti o indexu a tabulce. Možnost automatizace umožňuje automatické ladění.
Možnosti automatického ladění můžete nastavit na úrovni databázového serveru nebo databáze. Pokud jste v tomto scénáři povolili automatické ladění, index se vytvoří automaticky.
Možnosti automatického sys.database_automatic_tuning_options
ladění můžete zobrazit také prostřednictvím zobrazení dynamické správy.
Poznámka:
Doporučení a automatizace pro indexy a plány citlivé na parametry nejsou k dispozici pro službu Azure SQL Managed Instance nebo SQL Server. Automatická oprava plánu dostupná je.
Pokud vyberete doporučený index, zobrazí se další podrobnosti o konkrétním indexu.
Zobrazí se podrobnosti o požadovaném indexu, tabulce a prostoru. Máte možnost použít doporučený index nebo zobrazit skript T-SQL, pomocí něhož se index použije.
Všimněte si, že se jedná o neclusterovaný index, který se použil jako online index. Když se index použije na základě doporučení, ať už ručně nebo prostřednictvím automatického ladění, stroj doporučení bude také sledovat výkon dotazů po určitou dobu s použitým indexem. Pokud se výkon dotazu ve srovnání s předchozím indexem sníží, můžete index zrušit.