sql >> Databáze >  >> RDS >> Database

Možnosti ladění výkonu Azure SQL Database

Azure SQL Database je nabídka databází jako služba od společnosti Microsoft, která nabízí ohromné ​​množství flexibility a zabezpečení a jako součást Platform-as-a-Service společnosti Microsoft umožňuje využívat další funkce. Vzhledem k tomu, že Azure SQL Database je v rozsahu databáze, existuje několik velkých rozdílů, pokud jde o ladění výkonu.

Ladění instance

Mnoho položek na úrovni instance, které jste byli zvyklí konfigurovat na plných instalacích, je mimo limit. Některé z těchto položek zahrnují:

  • Nastavení minimální a maximální paměti serveru
  • Povolení optimalizace pro pracovní zátěže ad hoc
  • Změna prahu ceny pro paralelismus
  • Změna maximálního stupně paralelismu na úrovni instance
  • Optimalizace databáze tempdb pomocí více datových souborů
  • Příznaky trasování

Nebuďte kvůli některým z nich příliš naštvaní. Příkaz ALTER DATABASE SCOPED CONFIGURATION umožňuje poměrně málo konfiguračních nastavení na úrovni jednotlivých databází. Toto bylo zavedeno s Azure SQL Database a v SQL Serveru počínaje SQL Server 2016. Některá z těchto nastavení zahrnují:

  • Vymažte mezipaměť procedur
  • Nastavení MAXDOP na hodnotu jinou než nula
  • Nastavte model odhadu mohutnosti optimalizátoru dotazů
  • Povolte nebo zakažte opravy hotfix optimalizace dotazů
  • Povolí nebo zakáže sledování parametrů
  • Povolte nebo zakažte mezipaměť identity
  • Povolí nebo zakáže útržek zkompilovaného plánu, který se má uložit do mezipaměti, když je dávka zkompilována poprvé.
  • Povolí nebo zakáže shromažďování statistik provádění pro nativně kompilované moduly T-SQL.
  • Ve výchozím nastavení povolte nebo zakažte možnosti online pro příkazy DDL, které podporují syntaxi ONLINE=ON/OFF.
  • Povolí nebo zakáže obnovitelné výchozí volby pro příkazy DDL, které podporují syntaxi RESUMABLE=ON/OFF.
  • Povolí nebo zakáže funkci automatického stahování globálních dočasných tabulek

Jak můžete vidět ze seznamu konfigurací s rozsahem, máte hodně kontroly a přesnosti pro doladění konkrétního chování pro jednotlivé databáze. Pro některé zákazníky mohou mít omezení kontroly na úrovni instance negativní dopad, zatímco jiní to budou považovat za přínos.

Pro společnosti, které mají databázi na zákazníka a potřebují úplnou izolaci, je integrována do Azure SQL Database. Pro ty, kteří potřebují možnosti SQL Serveru na úrovni instance, ale chtěli by využít nabídku PaaS od Microsoftu, je tu Azure SQL Managed Instance, která je v rozsahu instance. Cílem je 100% kompatibilita plochy s SQL Serverem; můžete tedy nastavit minimální a maximální paměť serveru, povolit optimalizaci pro pracovní zátěž adhoc a změnit MAXDOP i prahovou hodnotu nákladů pro paralelismus. Tempdb ve spravované instanci již obsahuje více souborů, ale můžete přidat další a zvětšit výchozí velikost. V mnoha ohledech to skutečně vypadá jako úplná instalace SQL Server.

Ladění dotazů

Dalším rozdílem mezi Azure SQL Database a SQL Server je to, že Query Store je ve výchozím nastavení povolený v Azure SQL Database. Můžete vypnout Query Store, ale pak omezíte nástroje Intelligent Performance na Azure Portal, které jej používají. Query Store je funkce, která poskytuje přehled o výkonu dotazů a výběru plánu. Query Store také zachycuje historii dotazů, plánů a statistiky za běhu, abyste si mohli prohlédnout, co se děje. Chcete vědět, který dotaz má nejvyšší dobu rekompilace, dobu provedení, počet provedení, využití procesoru, využití paměti, nejvíce fyzických čtení/zápisů a další? Query Store má tyto informace. Pro SQL Server musíte tuto funkci povolit pro každou databázi. Pokud jste v Query Store noví, moje kolegyně Erin Stellato má tříhodinový kurz Pluralsight, který vám pomůže začít.

Kategorie nástrojů Intelligent Performance má čtyři funkce. Za prvé, přehled výkonu poskytuje souhrn celkového výkonu vaší databáze tím, že uvádí 5 nejčastějších dotazů podle spotřeby procesoru, všechna doporučení z automatického ladění, aktivitu ladění a aktuální nastavení automatického ladění. Tato vstupní stránka vám poskytne rychlý pohled na váš výkon.

Zadruhé, možnost doporučení výkonu zobrazí seznam všech aktuálních doporučení pro vytváření indexů nebo v případě, že by měly být některé indexy zrušeny. Pokud byly dokončeny nějaké nedávné akce, uvidíte také historii.

Zatřetí, Query Performance Insight je místo, kde můžete získat hlubší přehled o spotřebě zdrojů zobrazením 5 nejčastějších dotazů podle CPU, Data I/O nebo Log I/O. Prvních 5 dotazů je barevně odlišeno, takže můžete rychle vizuálně vidět procento celkové spotřeby. Kliknutím na ID dotazu získáte další podrobnosti včetně textu SQL. K dispozici je také karta dlouhotrvajících dotazů. Opravdu se mi líbí, že Microsoft bezplatně zahrnul funkci jako je tato do Azure Portal. Poskytuje hodnotu tím, že zákazníkům poskytuje portál, kde mohou vidět nejčastější dotazy. Co zde považuji za náročné, je mít způsob, jak vidět celkový základ pro srovnání ze dne na den, z týdne na týden a za předchozí měsíc. Pro rychlou analýzu a přehled je však užitečná funkce Query Performance Insight.

Poslední funkcí v této kategorii je automatické ladění. Zde můžete nakonfigurovat plán vynucení, vytvořit index a zrušit nastavení indexu. Můžete jej vynutit zapnout, vypnout nebo zvolit dědění ze serveru. Vynutit plán umožňuje Azure vybrat si, co by podle něj bylo lepší z plánů provádění pro regresní dotazy. Tato funkce také existuje v SQL Server 2017 Enterprise Edition jako automatická oprava plánu. Někteří správci databází jsou nervózní, když slyší o funkcích automatického ladění, protože se obávají, že to může v budoucnu nahradit potřebu DBA. Vždy se rád ptám:„Kolik času každý den věnujete proaktivnímu ladění dotazů?“. Převažující odpovědí je, že lidé mohou ve skutečnosti strávit velmi málo času proaktivním laděním a většina odpovídá, že skutečně „ladí“ pouze po vydání kódu nebo když si uživatelé začnou stěžovat.

Kromě vestavěných nástrojů a hodnoty použití Query Store jsou snadno dostupné také DMV. Glenn Berry má celou kolekci skriptů pouze pro Azure SQL Database, které můžete využít. Jeden konkrétní DMV, který chci zavolat, je sys.dm_os_wait_stats. To se stáhne z úrovně serveru, takže pokud se opravdu chcete podívat na statistiky čekání na úrovni databáze, budete muset místo toho použít sys.dm_db_wait_stats.

Hardware – škálování

Další oblastí, kterou je třeba zvážit při pohledu na výkon s Azure SQL Database, je základní hardware. Azure SQL Database je oceňována podle databázových transakčních jednotek (DTU) a virtuálních jader. DTU jsou smíšenou mírou CPU, paměti a I/O a dodávají se ve třech úrovních; Basic, Standard a Premium. Základní je pouze 5 DTU, Standardní se pohybuje v rozmezí 10–3 000 DTU a Premium se pohybuje v rozmezí 125–4 000 DTU. Pro úrovně založené na vCore máme General Purpose a Business Critical v rozsahu od 1 do 80 vCore.

V modelu DTU by měl být Basic zvažován pro vývoj a testování. Má pouze 7denní zálohu, takže bych to nepovažoval za životaschopné pro jakákoli produkční data. Standardní je vhodné pro nízké, střední a vysoké nároky na CPU se středními až nízkými nároky na I/O. Základní a standardní vrstva nabízí 2,5 IOPS na DTU s 5 ms (čtení), 10 ms (zápis). Úroveň Premium je určena pro střední až vysoké nároky na CPU a vysoké I/O nabízející 48 IOPS na DTU s 2 ms (čtení/zápis). Úroveň Premium má úložiště, které je řádově rychlejší než standard. V modelu vCore máte procesory Gen4, které nabízejí 7 GB RAM na fyzické jádro, a procesory Gen 5, které nabízejí 5,1 GB RAM na logické jádro. Z pohledu I/O General Purpose nabízí 500 IOPS na vCore s maximálním výkonem 7 000. Business Critical nabízí 5 000 IOPS na jádro s maximálním výkonem 200 000.

Shrnutí

Azure SQL Database je skvělá pro ty systémy, které potřebují izolaci databáze, zatímco Azure SQL Managed Instance je skvělá pro ta prostředí, kde potřebujete kompatibilitu na úrovni instance (podpora dotazů napříč databázemi). Když potřebujete vyladit Azure SQL Database, musíte dělat věci na úrovni databáze, protože možnosti na úrovni instance jsou mimo limit, takže nastavení konfigurace v rozsahu databáze jsou vaše možnosti doladění. Při odstraňování problémů s dotazy s nízkou výkonností máte k dispozici některé vestavěné nástroje, které vám pomohou, včetně Query Store, a většina vašich běžných ladicích skriptů bude fungovat. Možná zjistíte, že stále potřebujete více, jako jsou základní linie, více historických dat a schopnost vytvářet poradenské podmínky, které vám pomohou zvládnout vaše pracovní zatížení. Zde mohou pomoci výkonná monitorovací řešení, jako je SentryOne DB Sentry.

Když vše ostatní selže nebo se vaše pracovní zatížení prostě zvýšilo za vaše současné hardwarové zdroje, škálujte na vyšší úroveň.


  1. Postgresql UUID podporované Hibernatem?

  2. Jak ukládat data JSON v MySQL

  3. Oracle DB:Jak mohu napsat dotaz bez ohledu na velikost písmen?

  4. Jak importovat soubor XML do databázové tabulky MySQL pomocí XML_LOAD(); funkce