Explorați scenariile de performanță
Pentru a decide cum să utilizați instrumentele de performanță și capacitățile, este important să analizați performanța pentru Azure SQL prin scenarii.
Înțelegerea scenariilor de performanță comune
O tehnică obișnuită pentru depanarea performanței SQL Server este să examinați dacă o problemă de performanță este Rulează (procesor înalt) sau de așteptare (în așteptarea unei resurse). Diagrama următoare afișează un arbore de decizie pentru a determina dacă o problemă de performanță SQL Server rulează sau așteaptă și cum să utilizați instrumentele de performanță pentru a determina cauza și soluția.
Mai întâi, uitați-vă la utilizarea generală a resurselor. Pentru o implementare STANDARD SQL Server, puteți utiliza instrumente cum ar fi Monitor de performanță în Windows sau superior în Linux. Pentru Azure SQL, puteți utiliza următoarele metode:
Portal Azure/PowerShell/avertizări
Azure Monitor are măsurători integrate pentru a vizualiza utilizarea resurselor pentru Azure SQL. De asemenea, puteți configura avertizări pentru a căuta condițiile de utilizare a resurselor.
sys.dm_db_resource_statsPentru baza de date SQL Azure, puteți consulta acest DMV pentru a vedea utilizarea resurselor CPU, memorie și I/O pentru implementarea bazei de date. Acest DMV face un instantaneu al acestor date la fiecare 15 secunde.
sys.server_resource_statsAcest DMV se comportă la fel ca
sys.dm_db_resource_stats, dar este utilizat pentru a vedea utilizarea resurselor pentru instanța gestionată SQL pentru CPU, memorie și I/O. Acest DMV face, de asemenea, un instantaneu la fiecare 15 secunde.sys.dm_user_db_resource_governancePentru baza de date Azure SQL, acest DMV returnează setările reale de configurare și capacitate utilizate de mecanismele de guvernanță a resurselor din baza de date curentă sau rezervorul elastic.
sys.dm_instance_resource_governancePentru Instanța gestionată Azure SQL, acest DMV returnează informații similare ca
sys.dm_user_db_resource_governance, dar pentru instanța gestionată SQL curentă.
Rulează
Dacă ați determinat problema este utilizarea intensă a procesorului, aceasta se numește scenariu de rulare. Un scenariu în rulare poate implica interogări care consumă resurse prin compilare sau execuție. Utilizați următoarele instrumente pentru analiză aprofundată:
Depozit de interogări
Utilizați rapoartele de resurse de consum de top în vizualizările catalog SSMS, depozit de interogări sau Detalii despre performanța interogării în portalul Azure (numai pentru baza de date SQL Azure) pentru a găsi ce interogări consumă cele mai multe resurse CPU.
sys.dm_exec_requestsUtilizați acest DMV în Azure SQL pentru a obține un instantaneu al stării interogărilor active. Căutați interogări cu starea de
RUNNABLEși un tip de așteptare deSOS_SCHEDULER_YIELDpentru a vedea dacă aveți suficientă capacitate CPU.sys.dm_exec_query_statsAcest DMV poate fi utilizat la fel ca Depozitul de interogări pentru a găsi interogări consumatoare de resurse de top. Este disponibil doar pentru planurile de interogare memorate în cache, în timp ce Depozitul de interogări furnizează o înregistrare istorică persistentă a performanței. Acest DMV vă permite, de asemenea, să găsiți planul de interogare pentru o interogare memorată în cache.
sys.dm_exec_procedure_statsAcest DMV oferă informații la fel ca
sys.dm_exec_query_stats, cu excepția informațiilor despre performanță pot fi vizualizate la nivelul procedurii stocate.După ce determinați ce interogare sau interogări consumă cele mai multe resurse, poate fi necesar să examinați dacă aveți suficiente resurse CPU pentru volumul de lucru. Puteți să depanați planurile de interogare cu instrumente precum profilarea simplă a interogărilor, instrucțiunile SET, Depozitul de interogări sau urmărirea extinsă a evenimentelor.
Se așteaptă
Dacă problema dvs. nu pare să fie o utilizare intensă a resurselor CPU, poate fi faptul că problema de performanță implică așteptarea unei resurse. Printre scenariile care implică așteptarea resurselor se numără:
- Așteptări I/O
- Așteptări de blocare
- Așteptări înlănțuire
- Limite rezervor tampon
- Granturi de memorie
- Planificarea evacuării memoriei cache
Pentru a efectua analize privind scenariile de așteptare, de obicei consultați următoarele instrumente:
sys.dm_os_wait_statsUtilizați acest DMV pentru a vedea principalele tipuri de așteptare pentru baza de date sau instanță. Acest lucru vă poate ghida cu privire la ce acțiune să efectuați în continuare, în funcție de tipurile de așteptare principale.
sys.dm_exec_requestsUtilizați acest DMV pentru a găsi anumite tipuri de așteptare pentru interogările active, pentru a vedea ce resursă așteaptă. Acesta poate fi un scenariu de blocare standard, care așteaptă blocări de la alți utilizatori.
sys.dm_os_waiting_tasksPuteți utiliza acest DMV pentru a găsi tipuri de așteptare pentru o anumită activitate pentru o anumită interogare care se execută în prezent, poate pentru a vedea de ce durează mai mult decât în mod normal.
sys.dm_os_waiting_tasksconține statisticile de așteptare în direct care sys.dm_os_wait_stats agregă în timp.Depozit de interogări
Depozitul de interogări furnizează rapoarte și vizualizări de catalog care afișează o agregare a principalelor așteptări pentru executarea planului de interogare. Este important să știți că o așteptare de CPU este echivalentă cu o problemă care rulează.
Scenarii specifice azure SQL
Există unele scenarii de performanță, atât în rulare, cât și în așteptare, care sunt specifice pentru Azure SQL. Printre acestea se numără guvernanța jurnalului, limitele de lucru, așteptările întâlnite pentru niveluri de serviciu critic de business și așteaptă specific pentru o implementare Hyperscale.
Guvernanță jurnal
Azure SQL poate utiliza guvernanța ratei de jurnal pentru a impune limite de resurse pentru utilizarea jurnalului de tranzacții. Este posibil să aveți nevoie de această impunere pentru a asigura limitele resurselor și pentru a îndeplini sla promis. Guvernanța jurnalului poate fi văzută din următoarele tipuri de așteptare:
-
LOG_RATE_GOVERNOR: așteaptă baza de date Azure SQL -
POOL_LOG_RATE_GOVERNOR: așteaptă piscine elastice -
INSTANCE_LOG_GOVERNOR: așteaptă instanța gestionată Azure SQL -
HADR_THROTTLE_LOG_RATE*: așteaptă latența de latență critică și geografică pentru afaceri
Limite pentru lucrători
SQL Server utilizează un rezervor de fire de lucru, dar are limite pentru numărul maxim de lucrători. Aplicațiile cu un număr mare de utilizatori simultani pot aborda limitele de lucru impuse pentru baza de date SQL Azure și instanța gestionată SQL:
- Baza de date Azure SQL are limite pe baza nivelului și dimensiunii serviciului. Dacă depășiți această limită, o interogare nouă primește o eroare.
- În momentul curent, Instanța gestionată SQL utilizează
max worker threads, astfel încât lucrătorii care trec de această limită pot vedeaTHREADPOOLașteptări.
Așteptări BUSINESS Critical HADR
Dacă utilizați un nivel de serviciu critic de firmă, este posibil să vedeți în mod neașteptat următoarele tipuri de așteptare:
HADR_SYNC_COMMITHADR_DATABASE_FLOW_CONTROLHADR_THROTTLE_LOG_RATE_SEND_RECV
Chiar dacă este posibil ca aceste așteptări să nu încetinească aplicația, este posibil să nu vă așteptați să le vedeți. Acestea sunt în mod normal specifice utilizării unui grup de disponibilitate Întotdeauna activat. Niveluri critice de afaceri utilizează tehnologia de grup de disponibilitate pentru a implementa caracteristicile SLA și de disponibilitate ale unui nivel de serviciu critic de business, astfel încât aceste tipuri de așteptare să fie așteptate. Timpii de așteptare lungi pot indica o întârziere, cum ar fi latența I/O sau reproducerea din spate.
Hiperscale
Arhitectura Hyperscale poate avea ca rezultat unele tipuri unice de așteptare care sunt prefixate cu RBIO (o posibilă indicație a guvernanței jurnalului). În plus, DMV-uri, vizualizări de catalog și evenimente extinse sunt îmbunătățite pentru a afișa măsurătorile pentru citirea serverului de pagini.
În următorul exercițiu, veți afla cum să monitorizați și să rezolvați o problemă de performanță pentru Azure SQL utilizând instrumentele și cunoștințele pe care le-ați obținut în această unitate.