A teljesítmény monitorozása és hibaelhárítása

Befejeződött

A monitorozás és a hibaelhárítás kulcsfontosságú az egyenletes teljesítmény biztosításához. Az Azure SQL ugyanazokkal az eszközökkel és funkciókkal rendelkezik a teljesítmény monitorozásához és hibaelhárításához, mint az SQL Server, és ezeket további képességek egészítik ki. Ezek közé tartoznak például a dinamikus felügyeleti nézetek (DMV-k), a bővített események és az Azure Monitor. Azt is fontos megismerni, hogyan használhatók ezek az eszközök és képességek az Azure SQL különböző teljesítményhez kapcsolódó forgatókönyvei esetében. Ezek a forgatókönyvek közé tartozik a magas processzorkihasználtság vagy az erőforrásra való várakozás.

Teljesítménymonitorozási eszközök és képességek

Az Azure SQL monitorozási és hibaelhárítási képességeket biztosít az Azure-ökoszisztémában, valamint az SQL Server már ismert eszközeivel is rendelkezik. A következő szakaszok ezeket ismertetik röviden.

Azure Monitor

Az Azure Monitor az Azure-ökoszisztéma része, az Azure SQL pedig integrálva van az Azure-metrikák, -riasztások és -naplók támogatásához. Az Azure Monitor-adatokat az Azure Portalon jelenítheti meg, és az alkalmazások az Azure Event Hubson vagy API-kon keresztül férhetnek hozzá ezekhez az adatokhoz. A Windows Teljesítményfigyelőhöz hasonlóan az Azure Monitor is segít az Azure SQL erőforrás-használati metrikáinak elérésében SQL Server-eszközök használata nélkül.

Dinamikus felügyeleti nézetek (DMV)

Az Azure SQL majdnem ugyanazt a DMV-infrastruktúrát biztosítja, mint az SQL Server, néhány különbséggel. A DMV-k kulcsfontosságúak a teljesítménymonitorozás szempontjából, mivel így standard T-SQL-lekérdezések használatával tekintheti meg az SQL Server főbb teljesítményadatait. Olyan adatokat tekinthet meg például, mint az aktív lekérdezések, az erőforrás-használat, a lekérdezéstervek és az erőforrás-várakozás típusai. Az Azure SQL-sel rendelkező DMV-kkel kapcsolatos további részletekről a lecke későbbi részében olvashat.

Extended events

Az Azure SQL majdnem ugyanazt a kiterjesztett eseményinfrastruktúrát biztosítja, mint az SQL Server, néhány különbséggel. A bővített eseményekkel nyomon lehet követni az Azure SQL-t működtető SQL Serveren belüli futtatások főbb eseményeit. A teljesítmény tekintetében a bővített események lehetővé teszik az egyes lekérdezések futtatásának nyomon követését. Ebben a leckében további részleteket tudhat meg az Azure SQL kiterjesztett eseményeiről.

Egyszerűsített lekérdezésprofil-készítés

Az egyszerűsített profilkészítés egy speciális módszer olyan forgatókönyvek hibaelhárítására, amelyek megkövetelik a tényleges végrehajtási terv lekérését a repülés közbeni kérésekhez és a nagy értékű lekérdezésekhez. Alacsony terhelése miatt minden olyan kiszolgáló, amely még nem rendelkezik cpu-kötéssel, folyamatosan futtathat egyszerűsített profilkészítést, és lehetővé teszi az adatbázis-szakemberek számára, hogy bármikor bármilyen futó végrehajtásra koppinthassanak; például a Tevékenységfigyelő használata az SQL Server Management Studióban (SSMS) vagy közvetlenül lekérdezés sys.dm_exec_query_profiles vagy sys.dm_exec_query_statistics_xml.

Az egyszerűsített lekérdezésprofilozással megvizsgálhatja egy aktív lekérdezés lekérdezéstervét és futási állapotát. Ez egy fontos funkció, amellyel az utasítások futtatása közben el lehet végezni az utasítások lekérdezési teljesítményével kapcsolatos hibakeresést. E képességgel lerövidíthető a teljesítményproblémák elhárításához szükséges idő a lekérdezési teljesítmény nyomon követésére használt olyan eszközökhöz képest, mint a bővített események. Az egyszerűsített lekérdezésprofilozást DMV-ken keresztül érheti el, és alapértelmezés szerint be van kapcsolva az Azure SQL-ben, ahogy az SQL Server 2019 és újabb verziói esetében is.

A lekérdezésterv hibakeresési képességei

Előfordulhat, hogy bizonyos esetekben további információra van szüksége az egyes T-SQL-utasítások lekérdezési teljesítményével kapcsolatban. A T-SQL SET-utasítások (például a SHOWPLAN és a STATISTICS) használatával lekérdezhetők ezek az információk, és ezen utasítások ugyanúgy teljeskörűen támogatottak az Azure SQL esetében, mint az SQL Servernél.

Query Store

A lekérdezéstár a felhasználói adatbázisban tárolt lekérdezések végrehajtási teljesítményének előzményrekordja. A lekérdezéstár az Azure SQL esetében alapértelmezés szerint be van kapcsolva, és olyan képességeket biztosít, mint az automatikus tervkorrekció és az automatikus hangolás. Az SQL Server Management Studio (SSMS) tárolóra vonatkozó jelentései elérhetők az Azure SQL-ben. Ezekkel a jelentésekkel megkereshetők a legtöbb erőforrást használó lekérdezések, például a lekérdezéstervek eltérései és az erőforrás-várakozási forgatókönyvek leggyakoribb várakozási típusai.

Teljesítményvizualizációk

Az Azure SQL Database esetében vizualizációkon keresztül tekintheti meg a lekérdezéstár teljesítményadatait az Azure Portalon. Így ugyanazokat az információkat láthatja a Lekérdezéstárhoz, mint egy ügyféleszközhöz, például az SSMS-hez. Használja a Teljesítmény áttekintése és a Lekérdezés teljesítményelemzési beállításait az Azure Portalon.

DMV-vel kapcsolatos részletek

A DMV-k már sok éve a teljesítménymonitorozás és -hibaelhárítás fő összetevőinek számítanak az SQL Server esetében. Az Azure SQL-ben elérhetők az SQL Server gyakran használt DMV-i, valamint további Azure-specifikus DMV-k is.

Azure SQL Managed Instance

Az SQL Server valamennyi DMV-je elérhető az SQL Managed Instance-hez. A fő DMV-k kedvelik sys.dm_exec_requests és sys.dm_os_wait_stats gyakran használják a lekérdezési teljesítmény vizsgálatára.

A sys.server_resource_stats rendszernézet a felügyelt Azure SQL-példányra jellemző, és az előzményerőforrás-használatot jeleníti meg. Ez egy értékes eszköz az erőforrás-használat megtekintéséhez, mivel nincs közvetlen hozzáférése az operációs rendszer eszközeihez, például a Teljesítményfigyelőhöz.

Azure SQL Database

A teljesítményhez szükséges gyakori DMV-k többsége elérhető, beleértve sys.dm_exec_requests és sys.dm_os_wait_stats, Vegye figyelembe, hogy ezek a DMV-k csak az adatbázisra vonatkozó adatokat biztosítják, a logikai kiszolgáló összes adatbázisára vonatkozóan nem biztosítanak adatokat.

A sys.dm_db_resource_stats DMV az Azure SQL Database-hez tartozik, és segítségével megtekintheti az adatbázis erőforrás-használati előzményeit. Ez a DMV a felügyelt példányok esetében használható sys.server_resource_stats működéséhez hasonlít.

A sys.elastic_pool_resource_stats DMV hasonló sys.dm_db_resource_stats, de használhatja a rugalmas készletadatbázisok erőforrás-használatának megtekintéséhez.

Szükséges DMV-k

Az alábbi DMV-k szükségesek az Azure SQL egyes teljesítménnyel kapcsolatos forgatókönyveinek kezeléséhez:

  • A sys.dm_io_virtual_file_stats azért fontos, mert Ön nem rendelkezik közvetlen hozzáféréssel az operációs rendszer metrikáihoz a fájlonkénti I/O-teljesítményre vonatkozóan.
  • A sys.dm_os_performance_counters az Azure SQL Database-ben és az SQL Managed Instance-ben egyaránt elérhető az SQL Server gyakran használt teljesítménymetrikáinak megtekintéséhez. Ezzel a DMV-rel megtekintheti az SQL Server teljesítményszámlálóinak általában a Teljesítményfigyelőben elérhető adatait.
  • A sys.dm_instance_resource_governance lehetővé teszi egy felügyelt példány erőforráskorlátainak megtekintését. Az Azure Portal használata nélkül tekintheti meg az erőforráskorlátok várt értékeit.
  • A sys.dm_user_db_resource_governance lehetővé teszi a gyakori erőforráskorlátok az üzembehelyezési beállítások, a szolgáltatási szintek és az Azure SQL Database-beli üzemelő példány mérete szerinti megtekintését. Az Azure Portal használata nélkül tekintheti meg az erőforráskorlátok várt értékeit.

Részletesebb betekintést nyújtó DMV-k

Ezek a DMV-k részletesebb betekintést nyújtanak az Azure SQL erőforráskorlátai és erőforrás-szabályozása kapcsán. Ezeket nem az általános forgatókönyvekhez fejlesztették, viszont hasznosak lehetnek az összetett teljesítményproblémák részletes vizsgálatához. A következő DMV-kkel kapcsolatos részletekért tekintse meg a dokumentációt:

  • sys.dm_user_db_resource_governance_internal (csak SQL Managed Instance esetén)
  • sys.dm_resource_governor_resource_pools_history_ex
  • sys.dm_resource_governor_workload_groups_history_ex

A bővített események részletei

A bővített események szolgáltatás az SQL Server nyomkövetési mechanizmusa. Az Azure SQL kiterjesztett eseményei az SQL Server motoron alapulnak, ezért szinte ugyanaz az Azure SQL esetében, néhány jelentős különbséggel. A következő szakaszokban ezeket az eltéréseket mutatjuk be.

Bővített események az Azure SQL Database-ben

Az Azure SQL Database-hez – az SQL Serverhez hasonlóan – bővített eseményeket is használhat munkamenetek létrehozásával, valamint események, műveletek és célok használatával. A bővítettesemény-munkamenetek létrehozásakor tartsa szem előtt a következő fontos szempontokat:

  • A legtöbb, gyakran használt esemény és művelet támogatott.
  • A fájl, ring_buffer és számláló típusú célok támogatottak.
  • A fájl típusú célok az Azure Blob Storage használatával támogatottak, mivel Ön nem rendelkezik hozzáféréssel a mögöttes operációsrendszer-lemezekhez.

A munkameneteket az SSMS vagy T-SQL segítségével lehet létrehozni és elindítani. Az SSMS használatával megtekintheti a kiterjesztett esemény-munkamenet céladatait vagy a rendszerfüggvényt sys.fn_xe_file_target_read_file.

Megjegyzés:

Az SSMS nem használható az Azure SQL Database aktív adatainak megtekintésére.

Fontos tudni, hogy a munkamenetek esetében indított bővített események adatbázis-specifikusak, nem a teljes logikai kiszolgálóra vonatkoznak.

Bővített események az Azure SQL Managed Instance-ben

A bővített események használata ugyanúgy történik az SQL Managed Instance-ben, mint az SQL Server esetében: munkamenetek létrehozásával, valamint események, műveletek és célok használatával. A bővítettesemény-munkamenetek létrehozásakor tartsa szem előtt a következő fontos szempontokat:

  • Valamennyi esemény, cél és művelet támogatott.
  • A fájl típusú célok az Azure Blob Storage használatával támogatottak, mivel Ön nem rendelkezik hozzáféréssel a mögöttes operációsrendszer-lemezekhez.
  • Az SQL Managed Instance-hez hozzá lettek adva bizonyos események a példány felügyeletével és végrehajtásával kapcsolatos események nyomon követéséhez.

A munkameneteket az SSMS vagy T-SQL segítségével lehet létrehozni és elindítani. Az SSMS használatával megtekintheti a kiterjesztett esemény-munkamenet céladatait vagy a rendszerfüggvényt sys.fn_xe_file_target_read_file. Az SSMS élő adatok megtekintésének képessége az SQL Server és az Azure SQL Managed Instance esetében támogatott.

Az Azure SQL teljesítménnyel kapcsolatos forgatókönyvei

Ahhoz, hogy eldönthesse, hogyan alkalmazza a monitorozás és a hibaelhárítás teljesítményével kapcsolatos eszközöket és képességeket, fontos forgatókönyveken keresztül látni az Azure SQL teljesítményét.

Teljesítménnyel kapcsolatos gyakori forgatókönyvek

Az SQL Server teljesítményprobléma-hibaelhárításának egyik gyakori módszere annak vizsgálata, hogy egy teljesítményprobléma fut-e (magas CPU- vagy várakozási állapotban van-e egy erőforráson). Az alábbi ábrán látható döntési fával meghatározható, hogy az SQL Server teljesítményével kapcsolatos probléma futó vagy várakozó-e, illetve az is, hogy miként állapítható meg az ok és a megoldás a teljesítménynövelő eszközökkel.

Diagram of running versus waiting.

Tekintsük meg részletesebben az ábra különböző elemeit.

Futó vagy várakozó

Először az általános erőforrás-használattal foglalkozunk. Egy szabványos SQL Server-telepítéshez olyan eszközöket használhat, mint a Windows teljesítményfigyelője vagy a Linux felső része. Az Azure SQL-hez a következő módszereket használhatja:

  • Azure Portal/PowerShell/riasztások

    A Azure Monitor integrált metrikákkal rendelkezik az Azure SQL erőforrás-használatának megtekintéséhez. Az erőforrás-használati feltételek figyeléséhez riasztásokat is beállíthat.

  • sys.dm_db_resource_stats

    Az Azure SQL Database esetében ezt a DMV-t megtekintve láthatja az adatbázispéldány processzor-, memória- és I/O-erőforráshasználatát. A DMV 15 másodpercenként készíti pillanatképet ezekről az adatokról.

  • sys.server_resource_stats

    Ez a DMV ugyanúgy viselkedik, mint a sys.dm_db_resource_stats, de az SQL Managed Instance erőforrás-felhasználásának megtekintésére szolgál a processzorra, a memóriára és az I/O-ra vonatkozóan. Ez a DMV szintén 15 másodpercenként készít pillanatképet.

  • sys.dm_user_db_resource_governance

    Az Azure SQL Database esetében ez a DMV az aktuális adatbázis vagy rugalmas készlet erőforrás-szabályozási mechanizmusai által használt tényleges konfigurációs és kapacitásbeállításokat adja vissza.

  • sys.dm_instance_resource_governance

    A felügyelt Azure SQL-példány esetében ez a DMV a jelenlegi felügyelt SQL-példányhoz hasonló sys.dm_user_db_resource_governanceadatokat ad vissza.

Running

Ha azt állapította meg, hogy a problémát a magas processzorhasználat jelenti, ezt futó forgatókönyvnek nevezzük. A futó forgatókönyvek olyan lekérdezéseket tartalmazhatnak, amelyek fordítás vagy végrehajtás révén használnak erőforrásokat. A következő eszközökkel végezzen további elemzést:

  • Query Store

    Az SSMS a Legnagyobb fogyasztású erőforrásokra vonatkozó jelentéseivel, a Lekérdezéstár katalógusnézeteivel vagy az Azure Portal Lekérdezési terheléselemzőjével (csak az Azure SQL Database esetén) keresheti meg, hogy mely lekérdezések fogyasztják a legtöbb processzor-erőforrást.

  • sys.dm_exec_requests

    Az Azure SQL ezen DMV-jével szerezheti be az aktív lekérdezések állapotának pillanatképét. Keressen olyan lekérdezéseket, amelyek állapota RUNNABLE és várakozási típusa SOS_SCHEDULER_YIELD van, és ellenőrizze, hogy elegendő processzorkapacitással rendelkezik-e.

  • sys.dm_exec_query_stats

    Ez a DMV a lekérdezéstárhoz hasonlóan a legtöbb erőforrást használó lekérdezések megkereséséhez használható. Azonban vegye figyelembe, hogy csak olyan lekérdezéstervekhez érhető el, amelyek gyorsítótárazva vannak, míg a lekérdezéstár megőrzi a teljesítmény előzményrekordjait. Ez a DMV azt is lehetővé teszi, hogy megkeresse a gyorsítótárazott lekérdezések lekérdezéstervét.

  • sys.dm_exec_procedure_stats

    Ez a DMV hasonló információkat nyújt, mint a sys.dm_exec_query_stats, de itt a teljesítménnyel kapcsolatos információk a tárolt eljárás szintjén tekinthetők meg.

    Miután meghatározta, hogy melyik lekérdezés vagy lekérdezések használják a legtöbb erőforrást, előfordulhat, hogy meg kell vizsgálnia, hogy elegendő processzor-erőforrással rendelkezik-e a számítási feladatokhoz. Előfordulhat, hogy hibakeresést kell végeznie a lekérdezéstervek kapcsán, például egyszerűsített lekérdezésprofil-készítéssel, SET-utasításokkal, a lekérdezéstárral vagy bővítettesemény-nyomkövetéssel.

Várakozó

Ha úgy tűnik, hogy a problémát nem a magas processzorhasználat jelenti, akkor lehetséges, hogy a teljesítménnyel kapcsolatos probléma egy erőforrásra való várakozással kapcsolatos. Többek között a következő forgatókönyvek kapcsolódnak az erőforrásokra való várakozáshoz:

  • I/O-várakozások
  • Zárolási várakozások
  • Reteszes zárolási várakozások
  • Pufferkészlet korlátai
  • Memóriabeli ideiglenes tárak
  • Terv gyorsítótárának kiürítése

A várakozási forgatókönyvek elemzéséhez általában a következő eszközöket kell megvizsgálnia:

  • sys.dm_os_wait_stats

    Ezzel a DMV-vel megtekintheti az adatbázis vagy a példány leggyakoribb várakozástípusait. Ez a leggyakoribb várakozástípusoktól függően útmutatást nyújthat az elvégzendő művelettel kapcsolatban.

  • sys.dm_exec_requests

    Ezzel a DMV-t használva konkrét várakozási típusokat kereshet az aktív lekérdezésekhez, hogy lássa, milyen erőforrásra várnak. Ez lehet egy, a többi felhasználó zárolásaira váró standard letiltási forgatókönyv.

  • sys.dm_os_waiting_tasks

    Ezzel a DMV-sel megkeresheti egy adott feladat várakozási típusait egy jelenleg futó lekérdezéshez, talán azért, hogy megtudja, miért tart a szokásosnál hosszabb ideig. sys.dm_os_waiting_tasks azokat az élő várakozási statisztikákat tartalmazza, amelyeket sys.dm_os_wait_stats az idő függvényében összesít.

  • Query Store

    A Lekérdezéstár olyan jelentéseket és katalógusnézeteket biztosít, amelyek a lekérdezésterv végrehajtása leggyakoribb várakozásainak összesítését jelenítik meg. Fontos tudni, hogy a processzorra való várakozás futó problémának felel meg.

Tipp.

A bővített eseményeket bármely futási vagy várakozási forgatókönyvben használhatja. Ehhez be kell állítania egy bővítettesemény-munkamenetet a lekérdezések nyomon követéséhez. A teljesítményproblémák hibakeresésének ez a módszere fejlettebb, és sok információt képes visszaadni a DMV-knél nagyobb teljesítményterhelésért cserébe.

Az Azure SQL-re vonatkozó forgatókönyvek

Vannak olyan teljesítménnyel kapcsolatos futási és várakozási forgatókönyvek, amelyek kifejezetten az Azure SQL-re jellemzőek. Ilyen a naplószabályozás, a feldolgozói korlátok, az üzletileg kritikus szolgáltatásszintek használatakor tapasztalt várakozások és a rugalmas skálázású üzembe helyezésre jellemző várakozások.

Naplószabályozás

Az Azure SQL naplószabályozás használatával kényszeríti ki a tranzakciós naplók használatára vonatkozó erőforráskorlátokat. Előfordulhat, hogy szükség van a kényszerítésre az erőforráskorlátok és az ígért SLA biztosítása érdekében. A naplószabályozás a következő várakozástípusok esetén figyelhető meg:

  • LOG_RATE_GOVERNOR: várakozás az Azure SQL Database-hez
  • POOL_LOG_RATE_GOVERNOR: várakozás a rugalmas készletekre
  • INSTANCE_LOG_GOVERNOR: várakozások a felügyelt Azure SQL-példányra
  • HADR_THROTTLE_LOG_RATE*: várakozás a üzletileg kritikus és a georeplikációs késésre

Feldolgozói korlátok

Az SQL Server szálakból álló feldolgozói készletet használ, de a feldolgozók maximális száma korlátozott. A nagy számú egyidejű felhasználóval rendelkező alkalmazások megközelíthetik az Azure SQL Database és a felügyelt SQL-példány esetében kikényszerített feldolgozói korlátokat:

  • Az Azure SQL Database a szolgáltatásszinttől és a mérettől függő korlátokkal rendelkezik. Ha meghaladja ezt a korlátot, az új lekérdezések hibaüzenetet kapnak.
  • Jelenleg a felügyelt SQL-példányok használják max worker threads, így a korlátot túllépő feldolgozók várakozásokat láthatnak THREADPOOL .

Üzletileg kritikus HADR várakozások

Ha üzletileg kritikus szolgáltatásszintet használ, előfordulhat, hogy váratlanul a következő várakozástípusok merülnek fel:

  • HADR_SYNC_COMMIT
  • HADR_DATABASE_FLOW_CONTROL
  • HADR_THROTTLE_LOG_RATE_SEND_RECV

Bár lehet, hogy ezek a várakozások nem lassítják le az alkalmazást, előfordulhat, hogy nem számít rájuk. Általában egy Always On rendelkezésreállási csoport használatára vonatkoznak. Az üzletileg kritikus szintek a rendelkezésreállási csoportok technológiáit használják az üzletileg kritikus szolgáltatásszint SLA- és rendelkezésreállási funkcióinak implementálásához, így ezekre a várakozástípusokra számítani lehet. Vegye figyelembe, hogy a hosszú várakozási idő szűk keresztmetszetet jelezhet, például I/O-késést vagy lemaradó replikát.

Hyperscale

A rugalmas skálázású architektúra olyan egyedi várakozástípusokat eredményezhet, amelyek az RBIO előtaggal rendelkeznek (a naplószabályozás lehetséges jelzése). Ezenkívül a DMV-k, a katalógusnézetek és a bővített események tovább lettek fejlesztve, hogy megjelenítsék a lapkiszolgáló-olvasások metrikáit.

A következő gyakorlatban megtanulhatja, hogyan figyelheti és oldhatja meg az Azure SQL teljesítményproblémáját az ebben a leckében megszerzett eszközökkel és ismeretekkel.