Explorați scenariile de performanță

Finalizat

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.

Diagrama de rulare versus așteptare.

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_stats

    Pentru 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_stats

    Acest 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_governance

    Pentru 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_governance

    Pentru 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_requests

    Utilizaț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 de SOS_SCHEDULER_YIELD pentru a vedea dacă aveți suficientă capacitate CPU.

  • sys.dm_exec_query_stats

    Acest 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_stats

    Acest 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_stats

    Utilizaț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_requests

    Utilizaț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_tasks

    Puteț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_tasks conț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 vedea THREADPOOL aș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_COMMIT
  • HADR_DATABASE_FLOW_CONTROL
  • HADR_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.