Teljesítményforgatókönyvek felfedezése
A teljesítményeszközök és képességek használatának eldöntéséhez fontos, hogy forgatókönyveken keresztül vizsgálja meg az Azure SQL teljesítményét.
A gyakori teljesítményforgatókönyvek ismertetése
Az SQL Server teljesítményproblémáinak hibaelhárításának egyik gyakori módszere annak vizsgálata, hogy egy teljesítményprobléma fut-e (magas CPU-használat) vagy várakozik (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.
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_statsAz 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_statsEz 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_governanceAz 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_governanceA 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.
Futás
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:
Lekérdezéstár
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_requestsAz 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ípusaSOS_SCHEDULER_YIELDvan, és ellenőrizze, hogy elegendő processzorkapacitással rendelkezik-e.sys.dm_exec_query_statsEz 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ó. Ez csak gyorsítótárazott lekérdezési csomagokhoz érhető el, míg a Lekérdezéstár állandó előzményrekordot biztosít a teljesítményről. 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_statsEz 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ás
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_statsEzzel 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_requestsEzzel 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_tasksEzzel 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_tasksazokat az élő várakozási statisztikákat tartalmazza, amelyeket sys.dm_os_wait_stats az idő függvényében összesít.Lekérdezéstár
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 CPU várakozás egyenértékű egy futófolyamat problémával.
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áthatnakTHREADPOOL.
Ü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_COMMITHADR_DATABASE_FLOW_CONTROLHADR_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. A hosszú várakozási idő szűk keresztmetszetet jelezhet, például az I/O-késést vagy a replikált másolat lemaradását.
rugalmas skálázás
A Hyperscale architektúra olyan egyedi várakozási típusokat eredményezhet, amelyek RBIO előtaggal vannak ellátva (ami a naplószabályozás lehetséges jele lehet). Emellett a DMV-k, a katalógusnézetek és a kiterjesztett események is javulnak, így megjeleníthetők a lapkiszolgáló olvasási metrikái.
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.