Monitorování a odstraňování potíží s výkonem

Dokončeno

Monitorování a odstraňování potíží jsou klíčovým prvkem při poskytování konzistentního výkonu. Azure SQL má stejné nástroje a funkce jako SQL Server k monitorování a odstraňování potíží s výkonem a ještě další funkce navíc. Patří sem funkce, jako je zobrazení dynamické správy (DMV), rozšířené události a Azure Monitor. Je také důležité zjistit, jak tyto nástroje a možnosti používat v různých situacích s výkonem pro Azure SQL. Mezi tyto scénáře patří vysoké využití procesoru nebo čekání na prostředek.

Nástroje a funkce k monitorování výkonu

Azure SQL poskytuje funkce pro monitorování a odstraňování potíží v ekosystému Azure jako i dobře známé nástroje, které jsou součástí SQL Serveru. Jejich stručný popis najdete v následujících částech.

Azure Monitor

Azure Monitor je součástí ekosystému Azure a Azure SQL je integrovaný pro podporu metrik, výstrah a protokolů Azure. Data služby Azure Monitor můžete vizualizovat na webu Azure Portal a aplikace k datům mají přístup prostřednictvím služby Azure Event Hubs nebo rozhraní API. Podobně jako windows Sledování výkonu vám Azure Monitor pomáhá přistupovat k metrikám využití prostředků pro Azure SQL bez použití nástrojů SQL Serveru.

Zobrazení dynamické správy (DMV)

Azure SQL poskytuje téměř stejnou infrastrukturu dynamické správy jako SQL Server s několika rozdíly. Zobrazení dynamické správy jsou zásadním aspektem monitorování výkonu, protože můžete zobrazit klíčové údaje o výkonu SQL Serveru pomocí standardních dotazů T-SQL. Můžete například zobrazit informace, jako jsou aktivní dotazy, využití prostředků, plány dotazů a typy čekání na prostředky. Další podrobnosti o zobrazení dynamické správy s Azure SQL najdete dále v této lekci.

Rozšířené události

Azure SQL poskytuje téměř stejnou infrastrukturu rozšířených událostí jako SQL Server s několika rozdíly. Rozšířené události umožňují trasovat klíčové události provádění v rámci SQL Serveru a poskytují výkon službě Azure SQL. V případě výkonu rozšířené události umožňují trasovat spuštění jednotlivých dotazů. Další podrobnosti o rozšířených událostech s Azure SQL získáte později v této lekci.

Zjednodušená profilace dotazů

Odlehčená profilace je pokročilá metoda pro řešení potíží se scénáři, které vyžadují načtení skutečného plánu spouštění pro požadavky v testovacích verzích a dotazy s vysokou hodnotou. Vzhledem k nízké režii může jakýkoli server, který ještě není vázán na procesor, spouštět odlehčené profilace nepřetržitě a umožnit odborníkům v databázi kdykoli klepnout na jakékoli spuštěné spuštění; Například použití monitorování aktivit v aplikaci SQL Server Management Studio (SSMS) nebo přímé dotazování sys.dm_exec_query_profiles nebo sys.dm_exec_query_statistics_xml.

Jednoduchou profilaci dotazů můžete použít k prozkoumání plánu dotazu a spuštění aktivního dotazu. Je to klíčová funkce k ladění výkonu dotazů pro příkazy, které jsou spuštěny. Tato funkce sníží dobu, po kterou budete řešit problémy s výkonem, v porovnání s nástroji, jako jsou rozšířené události k trasování výkonu dotazů. K zjednodušené profilaci dotazů můžete přistupovat prostřednictvím zobrazení dynamické správy a ve výchozím nastavení je pro Azure SQL zapnutý, protože se používá pro SQL Server 2019 a novější verze.

Možnosti ladění plánu dotazů

V některých situacích budete možná potřebovat další podrobnosti o výkonu dotazů pro nějaký příkaz T-SQL. Příkazy T-SQL SET, jako je například SHOWPLAN a STATISTICS, můžou tyto podrobnosti poskytnout a jsou plně podporovány pro Azure SQL stejně jako pro SQL Server.

Úložiště dotazů

Úložiště dotazů je historický záznam o provádění výkonu pro dotazy uložené v uživatelské databázi. Úložiště dotazů je ve výchozím nastavení pro Azure SQL zapnuté a používá se k poskytování možností, jako jsou automatické opravy plánu a automatické ladění. Pro Azure SQL jsou k dispozici sestavy SQL Server Management Studio (SSMS) pro úložiště. Tyto sestavy použijete k vyhledání hlavních dotazů, které mají největší nároky na prostředky, včetně rozdílů v plánu dotazů a hlavních typů čekání pro hledání ve scénářích čekání na prostředky.

Vizualizace výkonu

Pro Azure SQL Database jsme do webu Azure Portal prostřednictvím vizualizací integrovali informace o výkonu úložiště dotazů. Tímto způsobem můžete zobrazit některé ze stejných informací pro úložiště dotazů jako u klientského nástroje, jako je SSMS. Na webu Azure Portal použijte možnosti Přehled výkonu a Query Performance Insight.

Podrobnosti zobrazení dynamické správy

Zobrazení dynamické správy byla u SQL Serveru po řadu let hnacím motorem monitorování a odstraňování potíží s výkonem. V Azure SQL jsou k dispozici běžná zobrazení dynamické správy pro SQL Server a navíc nějaká další specifická pro Azure.

Azure SQL Managed Instance

Všechna zobrazení dynamické správy pro SQL Server jsou k dispozici pro spravovanou instanci SQL. Klíčové zobrazení dynamické správy se běžně sys.dm_exec_requestssys.dm_os_wait_stats používají k prozkoumání výkonu dotazů.

Zobrazení sys.server_resource_stats systému je specifické pro službu Azure SQL Managed Instance a zobrazuje historické využití prostředků. Toto je cenný nástroj pro zobrazení využití prostředků, protože nemáte přímý přístup k nástrojům operačního systému, jako je Sledování výkonu.

Azure SQL Database

Většina běžných zobrazení dynamické správy, která potřebujete k výkonu, včetně sys.dm_exec_requests a sys.dm_os_wait_stats, jsou k dispozici. Všimněte si, že tato zobrazení dynamické správy poskytují jenom informace specifické pro databázi, a ne pro všechny databáze pro logický server.

Zobrazení sys.dm_db_resource_stats dynamické správy je specifické pro službu Azure SQL Database a můžete ji použít k zobrazení historie využití prostředků pro databázi. Použijte toto zobrazení dynamické správy podobně, jako byste použili sys.server_resource_stats pro spravovanou instanci.

Zobrazení sys.elastic_pool_resource_stats dynamické správy je podobné sys.dm_db_resource_stats, ale můžete ho použít k zobrazení využití prostředků pro databáze elastického fondu.

Potřebná zobrazení dynamické správy

K řešení určitých scénářů výkonu pro Azure SQL budete potřebovat následující zobrazení dynamické správy:

  • sys.dm_io_virtual_file_stats je důležité, protože nemáte přímý přístup k metrikám operačního systému pro výkon vstupně-výstupních operací na jeden soubor.
  • sys.dm_os_performance_counters je k dispozici pro Azure SQL Database i pro spravovanou instanci SQL k zobrazení běžných metrik výkonu SQL Serveru. Pomocí tohoto zobrazení dynamické správy můžete zobrazit informace o čítači výkonu SQL Serveru, které jsou obvykle k dispozici v Sledování výkonu.
  • sys.dm_instance_resource_governance lze použít k zobrazení omezení prostředků pro spravovanou instanci. Tyto informace si můžete prohlédnout a zjistit, jaká by měla být očekávaná omezení prostředků bez použití webu Azure Portal.
  • sys.dm_user_db_resource_governance umožňuje zobrazit běžné limity prostředků podle možnosti nasazení, úrovně služby a velikosti pro nasazení Azure SQL Database. Tyto informace si můžete prohlédnout a zjistit, jaká by měla být očekávaná omezení prostředků bez použití webu Azure Portal.

Zobrazení dynamické správy pro podrobnější přehledy

Tato zobrazení dynamické správy poskytují hlubší přehled o omezeních prostředků a zásadách správného řízení prostředků pro Azure SQL. Nejsou určena k použití pro běžné situace, ale můžou být užitečná, pokud se chcete podívat hlouběji na složité problémy s výkonem. Všechny podrobnosti o těchto zobrazeních dynamické správy najdete v dokumentaci:

  • sys.dm_user_db_resource_governance_internal (pouze spravovaná instance SQL)
  • sys.dm_resource_governor_resource_pools_history_ex
  • sys.dm_resource_governor_workload_groups_history_ex

Podrobnosti k rozšířeným událostem

Funkce rozšířené události jsou mechanismus trasování pro SQL Server. Rozšířené události pro Azure SQL jsou založené na modulu SQL Serveru, a proto jsou téměř stejné pro Azure SQL s několika zajímavými rozdíly. Těmto rozdílům se věnují následující části.

Rozšířené události pro Azure SQL Database

Rozšířené události můžete použít pro Azure SQL Database, stejně jako SQL Server, vytvořením relací a použitím událostí, akcí a cílů. Při vytváření relací rozšířených událostí mějte na paměti tyto důležité body:

  • Jsou podporovány nejčastěji používané události a akce.
  • Jsou podporovány cíle soubor, ring_buffer a čítač.
  • Cíle soubor jsou podporovány v Azure Blob Storage, protože nemáte přístup k příslušným diskům operačního systému.

K vytvoření a spuštění relací můžete použít SSMS (SQL Server Management Studio) nebo T-SQL. SSMS můžete použít k zobrazení dat cíle relace rozšířené události nebo systémové funkce sys.fn_xe_file_target_read_file.

Poznámka:

SSMS není možné použít k zobrazení aktivních dat pro Azure SQL Database.

Je důležité vědět, že všechny rozšířené události, které jsou pro vaše relace vyvolány, jsou specifické pro vaši databázi a neplatí pro celý logický server.

Rozšířené události pro spravovanou instanci Azure SQL

Rozšířené události můžete použít pro spravovanou instanci Azure SQL stejně jako pro SQL Server vytvořením relací a používáním událostí, akcí a cílů. Při vytváření relací rozšířených událostí mějte na paměti tyto důležité body:

  • Jsou podporovány všechny události, cíle a akce.
  • Cíle soubor jsou podporovány v Azure Blob Storage, protože nemáte přístup k příslušným diskům operačního systému.
  • Některé konkrétní události jsou přidány pro spravovanou instanci SQL k trasování událostí specifických pro správu a spouštění instance.

K vytvoření a spuštění relací můžete použít SSMS (SQL Server Management Studio) nebo T-SQL. SSMS můžete použít k zobrazení dat cíle relace rozšířené události nebo systémové funkce sys.fn_xe_file_target_read_file. Schopnost SSMS zobrazovat živá data je podporovaná pro SQL Server a spravovanou instanci Azure SQL.

Scénáře výkonu pro Azure SQL

Aby bylo možné rozhodnout, jak použít nástroje a možnosti pro monitorování a řešení potíží s výkonem, je důležité, abyste se mohli podívat na výkon služby Azure SQL prostřednictvím scénářů.

Běžné scénáře výkonu

Běžnou technikou řešení potíží s výkonem SQL Serveru je zjistit, jestli je problém s výkonem spuštěný (vysoké využití procesoru) nebo čekání (čekání na prostředek). Následující diagram znázorňuje rozhodovací strom k určení, jestli problém s výkonem SQL Serveru běží nebo čeká, a jak určit příčinu a řešení pomocí nástrojů pro měření výkonu.

Diagram of running versus waiting.

Pojďme se podívat podrobně na jednotlivé aspekty diagramu.

Běh vs. čekání

Nejprve se podívejte na celkové využití prostředků. Pro standardní nasazení SQL Serveru můžete použít nástroje, jako jsou Sledování výkonu ve Windows nebo nahoře v Linuxu. V případě Azure SQL můžete použít následující metody:

  • Azure Portal/PowerShell/výstrahy

    Azure Monitor má integrované metriky k zobrazení využití prostředků pro Azure SQL. Můžete také nastavit výstrahy, které budou hlídat podmínky využívání prostředků.

  • sys.dm_db_resource_stats

    V případě Azure SQL Database se můžete podívat na toto zobrazení dynamické správy, kde najdete informace o využití procesoru, paměti a vstupně-výstupních prostředků pro nasazení databáze. Toto zobrazení dynamické správy pořídí snímek těchto dat každých 15 sekund.

  • sys.server_resource_stats

    Toto zobrazení dynamické správy se chová stejně jako sys.dm_db_resource_stats, ale slouží k zobrazení využití prostředků ve spravované instanci SQL pro procesor, paměť a vstupně-výstupní operace. Toto zobrazení dynamické správy také pořídí snímek každých 15 sekund.

  • sys.dm_user_db_resource_governance

    U služby Azure SQL Database vrátí tato zobrazení dynamické správy skutečné nastavení konfigurace a kapacity používané mechanismy zásad správného řízení prostředků v aktuální databázi nebo elastickém fondu.

  • sys.dm_instance_resource_governance

    U služby Azure SQL Managed Instance vrátí tato zobrazení dynamické správy podobné informace jako sys.dm_user_db_resource_governance, ale pro aktuální spravovanou instanci SQL.

Spuštěno

Pokud jste zjistili, že problémem je vysoké využití procesoru, jedná se o scénář spuštění. Scénář spuštění může zahrnovat dotazy, které spotřebovávají prostředky při kompilaci nebo spuštění. Pro další analýzu použijte následující nástroje:

  • Úložiště dotazů

    Pokud chcete zjistit, které dotazy spotřebovávají nejvíce prostředků procesoru, podívejte se na sestavy prostředků s největší spotřebou v nástroji SQL Server Management Studio, zobrazeních katalogu úložiště dotazů nebo nástroji Query Performance Insight na webu Azure Portal (platí pouze pro Azure SQL Database).

  • sys.dm_exec_requests

    Pomocí tohoto zobrazení dynamické správy v Azure SQL získáte snímek stavu aktivních dotazů. Vyhledejte dotazy se stavem RUNNABLE a typem SOS_SCHEDULER_YIELD čekání, abyste zjistili, jestli máte dostatečnou kapacitu procesoru.

  • sys.dm_exec_query_stats

    Toto zobrazení dynamické správy se dá použít podobně jako úložiště dotazů k vyhledání těch dotazů, které nejvíce využívají prostředky. Mějte na paměti, že je k dispozici pouze pro plány dotazů, které jsou uloženy v mezipaměti, zatímco úložiště dotazů poskytuje trvalý historický záznam o výkonu. Toto zobrazení dynamické správy umožňuje také vyhledat plán dotazů pro dotaz uložený v mezipaměti.

  • sys.dm_exec_procedure_stats

    Toto zobrazení dynamické správy poskytuje informace podobně jako sys.dm_exec_query_stats s výjimkou informací o výkonu, které je možné zobrazit na úrovni uložené procedury.

    Až zjistíte, který dotaz nebo dotazy využívají prostředky nejvíce, možná budete muset ověřit, jestli máte pro vaši úlohu dostatek prostředků procesoru. Můžete ladit plány dotazů pomocí nástrojů, jako jsou zjednodušená profilace dotazů, příkazy SET, úložiště dotazů nebo trasování rozšířených událostí.

Čeká

Pokud vaším problémem není vysoké využití procesoru, mohlo by jít o problém s výkonem, který zahrnuje čekání na prostředek. Mezi scénáře zahrnující čekání na prostředky patří:

  • Čekání na vstupně-výstupní operace
  • Čekání na zámek
  • Čekání na blokátor
  • Omezení fondu vyrovnávacích pamětí
  • Přidělení pamětí
  • Vyřazení mezipaměti plánů

Při analýze scénářů čekání byste se obvykle podívali na následující nástroje:

  • sys.dm_os_wait_stats

    Pomocí tohoto zobrazení dynamické správy můžete zjistit nejčastější typy čekání u databáze nebo instance. To vás může provést dalším postupem v závislosti na nejčastějších typech čekání.

  • sys.dm_exec_requests

    Pomocí tohoto zobrazení dynamické správy vyhledejte konkrétní typy čekání pro aktivní dotazy, abyste zjistili, na jaký prostředek čekají. Může se jednat o standardní scénář blokování, kdy se čeká na zámky od ostatních uživatelů.

  • sys.dm_os_waiting_tasks

    Pomocí tohoto zobrazení dynamické správy můžete najít typy čekání pro konkrétní úlohu konkrétního dotazu, který se právě spouští, abyste zjistili, proč trvá déle než obvykle. sys.dm_os_waiting_tasks obsahuje statistiky živého čekání, které sys.dm_os_wait_stats agregace v průběhu času.

  • Úložiště dotazů

    Úložiště dotazů poskytuje sestavy a zobrazení katalogu, které zobrazují agregaci nejčastějších čekání na spuštění plánu dotazů. Je důležité vědět, že čekání procesoru je ekvivalentem problému se spuštěním.

Tip

Pro všechny scénáře běhu nebo čekání můžete použít rozšířené události. Musíte nastavit relaci rozšířených událostí pro trasování dotazů. Tato metoda ladění problému s výkonem je pokročilejší a může vrátit spoustu informací výměnou za vyšší režii výkonu než zobrazení dynamické správy.

Scénáře specifické pro Azure SQL

Některé scénáře výkonu, běhu i čekání, jsou specifické pro Azure SQL. Patří sem zásady správného řízení protokolů, omezení pracovních procesů, čekání zaznamenaná u úrovní služby Pro důležité obchodní informace a čekání specifická pro nasazení Hyperscale.

Zásady správného řízení protokolů

Prostřednictvím zásad správného řízení rychlosti protokolů může Azure SQL vynutit omezení prostředků pro využití transakčních protokolů. Toto vynucení můžete potřebovat k zajištění omezení prostředků a ke splnění přislíbené smlouvy o úrovni služeb. Zásady správného řízení protokolů je možné zjistit z následujících typů čekání:

  • LOG_RATE_GOVERNOR: Čekání na Azure SQL Database
  • POOL_LOG_RATE_GOVERNOR: Čekání na elastické fondy
  • INSTANCE_LOG_GOVERNOR: Čekání na službu Azure SQL Managed Instance
  • HADR_THROTTLE_LOG_RATE*: Čekání na latenci Pro důležité obchodní informace a geografické replikace

Omezení pracovních procesů

SQL Server používá fond pracovních procesů vláken, ale má omezení maximálního počtu pracovních procesů. Aplikace s velkým počtem souběžných uživatelů můžou přistupovat k limitům pracovních procesů vynucovaných pro Azure SQL Database a sql Managed Instance:

  • Azure SQL Database má omezení na základě úrovně a velikosti služby. Pokud tento limit překročíte, nový dotaz obdrží chybu.
  • V současné době používá max worker threadsspravovaná instance SQL , takže pracovní procesy za tímto limitem můžou vidět THREADPOOL čekání.

Čekání HADR úrovně Pro důležité obchodní informace

Pokud používáte úroveň služby Pro důležité obchodní informace, mohou se neočekávaně zobrazit následující typy čekání:

  • HADR_SYNC_COMMIT
  • HADR_DATABASE_FLOW_CONTROL
  • HADR_THROTTLE_LOG_RATE_SEND_RECV

I když tato čekání nemusí vaši aplikaci zpomalovat, můžou vás překvapit. Obvykle jsou specifické pro použití skupiny dostupnosti Always On. Úrovně Pro důležité obchodní informace používají technologii skupin dostupnosti k implementaci funkcí SLA a dostupnosti úrovně služby Pro důležité obchodní informace, takže se tyto typy čekání očekávají. Mějte na paměti, že dlouhé doby čekání by mohly ukazovat na kritické body, jako je například latence V/V nebo replika.

Hyperškálování

Architektura hyperškálování může mít za následek některé jedinečné typy čekání, které jsou uvozeny předponou RBIO (možná indikace zásad správného řízení protokolů). Kromě toho došlo k vylepšení zobrazení dynamické správy, zobrazení katalogu a rozšířených událostí, aby zobrazovaly metriky čtení stránkovacího serveru.

V dalším cvičení se naučíte monitorovat a řešit problém s výkonem Azure SQL pomocí nástrojů a znalostí, které jste získali v této lekci.