Distribuie acum:
Cuprins ascunde

1. Introducere

1.1 Ce este SQL Server ActivityMonitor?

SQL Server Monitorul de activitate este un instrument de diagnosticare încorporat în SQL Server Management Studio care afișează informații despre SQL Server procese și efectul acestora asupra performanței serverului. Vă permite să urmăriți SQL Server procese, monitorizarea așteptărilor resurselor, analizarea interogărilor costisitoare și observarea modelelor I/O - toate dintr-o singură interfață.

SQL Server Monitor de activitate

1.2 De ce să utilizați SQL Server ActivityMonitor?

Monitorul de activitate servește drept primă linie de apărare atunci când depanați problemele de performanță. Acesta oferă vizibilitate imediată asupra a ceea ce se întâmplă pe dispozitivul dvs. SQL Server instanță fără a necesita interogări T-SQL complexe sau instrumente terțe.

Instrumentul excelează în a vă ajuta să identificați rapid problemele comune, cum ar fi blocarea sesiunilor, interogările care solicită intens procesorul, execuțiile excesive de interogări și blocajele I/O. Când utilizatorii raportează că o aplicație este lentă sau nu răspunde, Monitorul de activitate vă ajută să determinați dacă serverul bazei de date este vinovatul.

Pentru administratorii de baze de date care nu lucrează cu SQL Server Zilnic, Activity Monitor oferă un punct de intrare accesibil pentru înțelegerea activității serverului. Chiar și administratorii de baze de date cu experiență îl folosesc ca punct de plecare pentru investigațiile de performanță.

1.3 Monitorul de activitate vs. alte instrumente de monitorizare

Deși Monitorul de activitate este valoros, este important să înțelegem cum se compară cu alte opțiuni de monitorizare:

Monitor de activitate vs. sp_WhoIsActive: Monitorul de activitate oferă o interfață grafică cu panouri multiple, în timp ce sp_WhoIsActive este o procedură stocată cuprinzătoare care oferă informații mai detaliate într-un singur set de rezultate. sp_WhoIsActive afișează tipuri specifice de așteptare pe care Monitorul de activitate le grupează împreună și oferă informații mai granulare despre blocare.

Monitor de activitate vs. sp_who2: Comanda tradițională sp_who2 afișează informații de bază despre sesiune, dar Monitorul de activitate merge mai departe, afișând statistici de așteptare, interogări costisitoare și metrici I/O într-un format vizual organizat.

Monitor de activitate vs. instrumente terțe: Soluțiile comerciale de monitorizare precum SolarWinds Database Performance Analyzer oferă urmărire istorică, alerte și analize avansate, funcții care lipsesc în Activity Monitor. Cu toate acestea, Activity Monitor nu necesită costuri suplimentare sau instalare.

1.4 Beneficii cheie pentru administratorii de baze de date

Monitorul de activitate oferă mai multe avantaje care îl fac un instrument esențial pentru administratorul de baze de date:

  • Cost zero: Ca element încorporat SQL Server Management Studio, nu este necesară nicio taxă de licențiere sau efort de implementare.
  • Monitorizare în timp real: Vedeți activitatea curentă a serverului pe măsură ce se întâmplă, cu intervale de reîmprospătare configurabile de la 1 secundă la 1 oră.
  • Acțiuni integrate: Faceți clic dreapta pe procese pentru a închide sesiunile, a vizualiza detaliile interogării sau a lansa SQL Server Urme Profiler — toate din cadrul instrumentului.
  • Perspective multiple: Vizualizați starea serverului din unghiuri diferite prin intermediul a cinci panouri specializate, fiecare concentrându-se pe aspecte specifice ale performanței.
  • Depanare rapidă: Identificați cele mai frecvente probleme de performanță în câteva minute, accelerând timpul mediu de rezolvare.
  • Bariera scăzută la intrare: Nu sunt necesare cunoștințe avansate pentru a începe să utilizați instrumentul eficient, deși sunt necesare cunoștințe mai aprofundate SQL Server Expertiza ajută la interpretare.

2. Noțiuni introductive despre Monitorul de activitate

Înainte de a putea utiliza eficient Monitorul de activitate, trebuie să înțelegeți cerințele preliminare, permisiunile necesare și diversele metode de lansare a instrumentului.

2.1 Cerințe preliminare și cerințe de sistem

A folosi SQL Server Monitor de activitate, de care aveți nevoie SQL Server Management Studio (SSMS) instalat pe mașina locală sau pe un server de salt. Instrumentul Monitor de activitate a fost reproiectat semnificativ în SQL Server 2008, așadar informațiile din acest ghid se aplică SQL Server 2008 și versiunile ulterioare.

Trebuie să aveți conectivitate la rețea la SQL Server instanța pe care doriți să o monitorizați. Pentru bazele de date găzduite în cloud, veți avea nevoie de obicei de o conexiune VPN sau de reguli de firewall configurate corespunzător pentru a accesa instanța.

Monitorul de activitate funcționează cu toate edițiile de SQL Server, inclusiv Express, Standard și Enterprise. Instrumentul în sine rulează pe mașina client în cadrul SSMS, astfel încât resursele serverului sunt afectate doar de interogările de monitorizare pe care le execută.

2.2 Permisiuni necesare

Permisiunile corespunzătoare sunt esențiale pentru ca Monitorul de activitate să funcționeze corect. Fără drepturile corespunzătoare, este posibil să vedeți un ecran gol sau să primiți erori de acces refuzat.

2.2.1 Permisiunea VIZUALIZARE STARE SERVER

VIZUALIZARE STAREA SERVERULUI Permisiunea este cerința principală pentru utilizarea Monitorului de activitate. Această permisiune la nivel de server vă permite să vedeți toate procesele active și valorile asociate acestora.

Pentru a acorda această permisiune, un administrator de server poate executa:

GRANT VIEW SERVER STATE TO [YourLoginName];

Fără opțiunea VIZUALIZARE STARE SERVER, este posibil ca Monitorul de activitate să se deschidă, dar să nu afișeze date în niciunul dintre panourile sale.

2.2.2 Permisiuni la nivel de bază de date

Pentru a vizualiza informațiile din panoul I/O fișier de date, aveți nevoie de permisiuni suplimentare. Mai exact, trebuie să aveți una dintre următoarele combinații:

  • CREAȚI BAZA DE DATE permisiune sau
  • MODIFICAȚI ORICE BAZĂ DE DATE permisiune sau
  • VEZI ORICE DEFINIȚIE permisiune

Aceste permisiuni trebuie combinate cu VIZUALIZARE STAREA SERVERULUI pentru funcționalitatea completă a Monitorului de activitate.

2.2.3 Depanarea permisiunilor

Dacă Monitorul de activitate se deschide, dar nu afișează date, permisiunile sunt cea mai frecventă cauză. Verificați dacă datele de conectare au permisiunea VIEW SERVER STATE acordată la nivel de server. Puteți verifica permisiunile executând:

SELECT * FROM fn_my_permissions(NULL, 'SERVER');

Căutați „VIEW SERVER STATE” în ​​coloana permission_name. Dacă lipsește, contactați administratorul bazei de date pentru a i se acorda dreptul.

2.3 Cum se deschide Monitorul de activitate în SSMS

SQL Server Management Studio oferă patru metode diferite pentru a lansa Monitorul de activitate, oferindu-vă flexibilitate în funcție de preferințele fluxului de lucru.

2.3.1 Metoda 1: Din bara de instrumente

Cea mai rapidă metodă de a deschide Monitorul de activitate este utilizând pictograma barei de instrumente:

  1. Conectați-vă la SQL Server exemplu în SQL Server Studio de management.
  2. Localizați pictograma Monitor de activitate în bara de instrumente standard (seamănă cu o diagramă cu bare și un buton verde de redare).
  3. Faceți clic pe pictogramă pentru a lansa Monitorul de activitate.

acasă SQL Server Monitorul de activitate din pictograma barei de instrumente din SQL Server Studio de management.

Această metodă este cea mai rapidă atunci când lucrați deja în SSMS și trebuie să verificați rapid activitatea serverului.

2.3.2 Metoda 2: Din Exploratorul de obiecte

De asemenea, puteți lansa Monitorul de activitate direct din Exploratorul de obiecte:

  1. În Exploratorul de obiecte, localizați SQL Server instanța pe care doriți să o monitorizați.
  2. Faceți clic dreapta pe numele instanței.
  3. Selectați Monitor de activitate din meniul contextual.

acasă SQL Server Monitorul de activitate făcând clic dreapta pe instanță în Object Explorer în SQL Server Studio de management.

Această metodă este utilă atunci când vă conectați la mai multe servere, deoarece vă asigură că monitorizați instanța corectă.

2.3.3 Metoda 3: Utilizarea comenzilor rapide de la tastatură

Pentru utilizatorii axați pe tastatură, SQL Server Management Studio oferă o comandă rapidă dedicată:

  1. Asigurați-vă că SSMS este fereastra activă și că sunteți conectat la o instanță.
  2. Anunturi Ctrl + Alt + A.
  3. Monitorul de activitate se va deschide pentru instanța selectată în prezent în Object Explorer.

Rețineți că Monitorul de activitate se va conecta la orice instanță de server pe care ați selectat-o ​​în Exploratorul de obiecte, așadar asigurați-vă că ați selectat instanța corectă înainte de a utiliza această comandă rapidă.

2.3.4 Metoda 4: Din meniul Opțiuni (Configurare pornire)

Dacă utilizați frecvent Monitorul de activitate, puteți configura SSMS să îl lanseze automat de fiecare dată când porniți aplicația:

  1. In SQL Server Management Studio, navigați la Instrumente -> Opţiuni.
  2. În caseta de dialog Opțiuni, extindeți Mediu inconjurator, Și apoi selectați Startup.
  3. De la La pornire listă derulantă, selectați Deschideți Exploratorul de obiecte și Monitorul de activitate.
  4. Selectați OK.

Setați configurația de pornire pentru SQL Server Monitor de activitate în SQL Server Studio de management.

Data viitoare când lansați SSMS și vă conectați la un server, Monitorul de activitate se va deschide automat alături de Exploratorul de obiecte.

3. Înțelegerea panourilor Monitor de activitate

Monitorul de activitate organizează informațiile în cinci panouri extensibile, fiecare oferind o perspectivă diferită asupra activității serverului. Înțelegerea a ceea ce afișează fiecare panou este crucială pentru depanarea eficientă.

3.1 Panoul Prezentare generală

Panoul Prezentare generală prezintă patru grafice în timp real care vă oferă o imagine rapidă a stării de sănătate a SQL Server exemplu. Aceste grafice se actualizează la un interval configurabil și vă ajută să identificați dintr-o privire modelele anormale.

Panoul Prezentare generală din SQL Server Monitor de activitate.

3.1.1 % Timp de procesor

Acest grafic arată procentul de timp pe care procesorul îl petrece executând fire de execuție care nu sunt inactive pentru SQL Server instanță pe toate procesoarele. Valoarea reprezintă SQL Serverutilizarea procesorului, nu întreaga utilizare a CPU a serverului.

Dacă vedeți în mod constant timpul procesorului la sau aproape de 100%, serverul dvs. este limitat de CPU. Acest lucru ar putea indica interogări ineficiente, indexuri lipsă sau capacitate hardware insuficientă. Utilizați panoul Interogări recente costisitoare pentru a identifica ce interogări consumă cel mai mult CPU.

3.1.2 Sarcini în așteptare

Această metrică afișează numărul de activități care așteaptă eliberarea resurselor înainte de a putea continua. Activitățile pot aștepta resurse CPU, I/O, memorie sau blocări.

Un număr constant mare de sarcini în așteptare indică conflicte de resurse. Panoul Așteptări resurse oferă mai multe detalii despre tipurile de resurse care cauzează așteptări.

3.1.3 I/O în baza de date (MB/s)

Acest grafic arată rata de transfer de date între memorie și disc. Combină atât citirile, cât și scrierile, măsurate în megaocteți pe secundă.

Vârfurile mari ale activității I/O în baza de date pot indica interogări care efectuează scanări mari de tabele, activitate excesivă de înregistrare în jurnal sau operațiuni cu puncte de control. Panoul I/O pentru fișiere de date împarte activitatea I/O în funcție de baza de date și de fișier.

3.1.4 Cereri în lot/sec

Această metrică reprezintă numărul de SQL Server loturi primite de instanță pe secundă. Un lot poate fi o singură instrucțiune sau mai multe instrucțiuni trimise împreună.

Această valoare vă oferă o idee despre activitatea generală a serverului. Scăderile bruște ale numărului de solicitări în lot în timpul programului normal de lucru pot indica probleme de conectivitate a aplicațiilor sau probleme cu care se confruntă utilizatorii.

3.1.5 Setarea intervalelor de actualizare

Puteți personaliza frecvența cu care Monitorul de activitate își actualizează datele:

  1. Faceți clic dreapta oriunde în panoul Prezentare generală.
  2. Selectați Interval de reîmprospătare.
  3. Alegeți un interval din valorile predefinite: 1 secundă, 5 secunde, 10 secunde (implicit), 30 de secunde, 1 minut sau 1 oră.

Setați intervalul de reîmprospătare în SQL Server Panoul de prezentare generală a Monitorului de activitate.

Setarea intervalelor de reîmprospătare sub 10 secunde crește costul de monitorizare al serverului. Pentru sistemele de producție aflate sub sarcină mare, luați în considerare utilizarea unor intervale de 30 de secunde sau mai lungi pentru a minimiza impactul.

3.2 Panoul Procese

Panoul Procese afișează informații despre sesiunile care rulează în prezent pe SQL Server exemplu. Acest panou este esențial pentru identificarea cine ce face și pentru detectarea problemelor de blocare.

Panoul Procese din SQL Server Monitor de activitate.

3.2.1 Înțelegerea informațiilor despre proces

Fiecare rând din panoul Procese reprezintă o sesiune activă pe server. Panoul afișează sesiuni din toate bazele de date și toți utilizatorii, oferindu-vă o imagine completă a activității serverului.

Informațiile afișate includ numele de utilizator, numele aplicației, numele gazdei, baza de date accesată și comanda curentă. Acest lucru vă ajută să corelați activitatea bazei de date cu utilizatori sau aplicații specifice.

3.2.2 Explicația coloanelor cheie

Înțelegerea coloanelor cheie vă ajută să interpretați eficient informațiile despre proces:

  • Sesiune ID: Un identificator unic pentru fiecare conexiune. Procesele de sistem utilizează ID-uri de sesiune negative.
  • Procesul utilizatorului: Indică dacă este vorba de o sesiune de utilizator (Da) sau de un proces de sistem (Nu).
  • Conectare: SQL Server datele de conectare sau contul Windows asociat sesiunii.
  • Bază de date: Contextul curent al bazei de date pentru sesiune.
  • Stare sarcină: Arată ce se întâmplă în prezent în cadrul sesiunii (ÎN RULEAZĂ, SUSPENDAT, INACTIV etc.).
  • Comanda: Tipul comenzii executate (SELECT, INSERT, UPDATE etc.).
  • Aplicare: Numele aplicației care a creat conexiunea.
  • Timp de așteptare: De cât timp (în milisecunde) sesiunea a așteptat resurse.
  • Tip de așteptare: Tipul specific de resursă pe care o așteaptă sesiunea.
  • Timp CPU: Timp total CPU consumat de această sesiune de la conectare.
  • Utilizarea memoriei: Cantitatea de memorie (în KB) alocată în prezent sesiunii.

3.2.3 Procese de filtrare și sortare

Panoul Procese include funcții puternice de filtrare care vă ajută să vă concentrați asupra sesiunilor relevante:

  1. Faceți clic pe săgeata derulantă din orice antet de coloană.
  2. Filtrul afișează valorile disponibile pentru coloana respectivă, inclusiv Toate soluțiile, Blanks și NonBlanks.
  3. Selectați valori specifice pentru a filtra afișarea doar la acele sesiuni.

Filtrați procesele din SQL Server Monitor de activitate.

De exemplu, puteți filtra Starea sarcinii pentru a afișa doar sesiunile ÎN RULE sau pentru a filtra Baza de date pentru a vedea activitatea dintr-o anumită bază de date.

De asemenea, puteți sorta după orice coloană făcând clic pe antetul acesteia. Faceți clic o dată pentru ordine crescătoare, de două ori pentru ordine descendentă.

Sortează procesele în SQL Server Monitor de activitate.

3.2.4 Identificarea sesiunilor blocante și a celor blocate

Panoul Procese vă ajută să identificați scenariile de blocare în care o sesiune împiedică continuarea altora:

  • Blocat de: Afișează ID-ul sesiunii care blochează această sesiune. Dacă această coloană conține o valoare, sesiunea așteaptă o blocare deținută de o altă sesiune.
  • Blocator de cap: Afișează „1” dacă această sesiune blochează alte sesiuni, dar nu este blocată ea însăși. Aceasta este cauza principală a unui lanț de blocări.

Afișează procesele blocante și cele blocate în SQL Server Monitor de activitate.

Pentru a investiga o problemă de blocare, identificați mai întâi blocantul principal (sesiunea marcată cu „1” în coloana Blocant principal), apoi examinați ce face și decideți dacă îl lăsați să o finalizeze sau să o încheiați.

3.2.5 Acțiuni de proces (Oprire, Detalii, Urmărire)

Monitorul de activitate vă permite să luați măsuri în cadrul sesiunilor individuale:

  1. Faceți clic dreapta pe orice sesiune din panoul Procese.
  2. Vei vedea mai multe opțiuni:
    • Detalii: Afișează ultima comandă executată de această sesiune.
    • Proces de eliminare: Încheie sesiunea (a se utiliza cu precauție).
    • Proces de urmărire în SQL Server profiler: Lansează SQL Server profil și filtrează automat pentru a afișa doar activitatea din această sesiune.

Efectuați acțiuni asupra proceselor din SQL Server Monitor de activitate.

Opțiunea Detalii vă afișează textul comenzii, dar rețineți că acesta este ultimul comandă executată — este posibil să nu mai ruleze. Opțiunea Urmărire este utilă în special atunci când trebuie să vedeți secvența completă de comenzi pe care le execută o sesiune.

3.3 Panoul Așteptări resurse

Panoul Așteptări resurse rezumă statisticile de așteptare, arătând ce tipuri de resurse sunt cel mai des așteptate de sesiuni. Aceste informații sunt esențiale pentru diagnosticarea blocajelor de performanță.

Panoul Așteptări resurse din SQL Server Monitor de activitate.

3.3.1 Înțelegerea statisticilor de așteptare

Atunci când SQL Server Dacă serverul nu poate acorda imediat o solicitare de resurse (cum ar fi o blocare, timpul CPU sau memoria), sarcina solicitantă intră într-o stare de așteptare. Statisticile de așteptare urmăresc aceste perioade de așteptare și vă ajută să înțelegeți unde își petrece serverul timpul așteptând, în loc să lucreze.

Panoul Așteptări resurse colectează date din vizualizări de gestionare dinamică a sistemului, cum ar fi sys.dm_os_wait_stats și sys.dm_exec_requests. La fiecare interval de reîmprospătare, calculează diferența dintre instantaneul curent și cel anterior, arătându-vă rata de acumulare pentru fiecare tip de așteptare.

3.3.2 Categorii de așteptare

Monitorul de activitate grupează sute de tipuri individuale de așteptare în categorii mai largi pentru a simplifica interpretarea:

  • CPU: Sarcini care așteaptă ca timpul CPU să devină disponibil.
  • Blocare tampon: Așteaptă obiecte de sincronizare pe termen scurt care protejează accesul la paginile de date din memorie. Această categorie include așteptările de blocare a paginii (PAGELATCH_*).
  • Blocare: Așteptări cauzate de sesiuni care dețin blocări de care au nevoie alte sesiuni.
  • Memorie: Așteaptă granturile de memorie necesare operațiunilor precum sortarea și hashing-ul.
  • I/O rețea: Așteaptă trimiterea de date către sau primirea de date de la clienți.
  • SQL CLR: Așteptări legate de execuția Common Language Runtime.

Deși această grupare simplifică vizualizarea, aceasta ascunde și detalii importante. De exemplu, „Buffer Latch” ar putea grupa așteptările PAGELATCH_SH, PAGELATCH_UP și PAGELATCH_EX, care au implicații diferite asupra performanței.

3.3.3 Interpretarea timpului de așteptare și a sarcinilor de așteptare

Panoul Așteptări resurse afișează două valori cheie pentru fiecare categorie de așteptare:

  • Timp de așteptare cumulativ (ms): Totalul milisecundelor acumulate în timpul intervalului de reîmprospătare curent pentru această categorie de așteptare.
  • Sarcini în așteptare: Numărul de activități care așteaptă în prezent resurse în această categorie.

Valoarea timpului de așteptare este deosebit de interesantă. Dacă aveți un interval de reîmprospătare de 10 secunde și vedeți un timp de așteptare de 20,000 ms pentru o categorie, aceasta indică mai multe așteptări simultane (20,000 ms / 10,000 ms = media a 2 așteptări simultane în timpul intervalului).

3.3.4 Identificarea blocajelor de performanță

Folosește panoul Așteptări resurse pentru a identifica unde serverul tău petrece cel mai mult timp în așteptare:

  1. Extindeți panoul Așteptări resurse.
  2. Observați categoriile de așteptare care acumulează cele mai mari timpi de așteptare.
  3. Filtrează după Timp de așteptare cumulativ pentru a vedea care resurse sunt cele mai restricționate.

Sortați după timpul de așteptare cumulativ în panoul Așteptări resurse pentru a găsi blocajul de performanță.

Așteptările mari pentru Buffer Latch indică adesea conflicte pentru paginile de date din memorie, ceea ce ar putea sugera blocaje I/O sau conflicte tempdb. Așteptările mari pentru Lock indică probleme de blocare. Așteptările mari pentru Memorie sugerează alocări insuficiente de memorie pentru operațiunile de interogare.

3.4 Panoul I/O pentru fișiere de date

Panoul I/O fișier de date afișează activitatea discului pentru fiecare fișier bază de date de pe server, ajutându-vă să identificați blocajele I/O și să înțelegeți modelele de utilizare a discului.

Panoul I/O fișier de date din SQL Server Monitor de activitate.

3.4.1 Înțelegerea metricilor I/O

Panoul I/O fișier de date afișează mai multe valori pentru fiecare fișier de bază de date:

  • Bază de date: Numele bazei de date.
  • Tip fișier: Fie Date (inclusiv tabele și indexuri), fie Jurnal (jurnalul de tranzacții).
  • Nume logic: Numele logic al fișierului, așa cum este definit în SQL Server.
  • MB/sec Citire: Rata de citire a datelor din acest fișier.
  • MB/sec Scris: Rata de scriere a datelor în acest fișier.
  • Timp de răspuns (ms): Timp mediu de răspuns pentru operațiunile I/O asupra acestui fișier.

Aceste valori se actualizează la același interval ca și panoul Prezentare generală, oferindu-vă vizibilitate în timp real asupra activității discului.

3.4.2 Identificarea blocajelor I/O

Urmăriți aceste modele care indică probleme de performanță I/O:

  • Timp mare de răspuns: Timpii de răspuns constant peste 15-20 ms sugerează subsisteme de disc lente. Timpii de răspuns peste 50 ms indică blocaje I/O serioase.
  • Sarcina dezechilibrata: Dacă un fișier de date prezintă rate de intrare/ieșire semnificativ mai mari decât altele din aceeași bază de date, este posibil să fie benefic adăugarea de fișiere suplimentare pentru a distribui sarcina.
  • Activitate excesivă Tempdb: Ratele mari de I/O pe fișierele tempdb indică adesea interogările care creează seturi mari de rezultate intermediare sau utilizează planuri de execuție ineficiente.

3.4.3 Analiza fișierelor bazei de date

Folosește panoul I/O fișiere de date pentru a înțelege cum utilizează bazele de date resursele de disc:

  1. Extindeți panoul I/O fișier de date.
  2. Filtrează după MB/sec Citire or MB/sec Scris pentru a identifica cele mai active fișiere.
  3. Notați orice fișiere cu activitate constantă ridicată sau cu timpi de răspuns lungi.
  4. Comparați aceste informații cu panoul Interogări costisitoare recente pentru a identifica ce interogări determină sarcina I/O.

Sortați după Citire sau Scriere pentru a identifica cele mai active fișiere din panoul I/O fișiere de date.

3.5 Panoul Interogări costisitoare recente

Panoul Interogări costisitoare recente este adesea cel mai valoros panou pentru depanarea problemelor de performanță ale aplicațiilor. Acesta afișează interogările care consumă resurse semnificative ale serverului, ajutându-vă să identificați oportunități de optimizare.

Panoul Interogări costisitoare recente din SQL Server Monitor de activitate.

3.5.1 Înțelegerea metricilor de interogare

Monitorul de activitate afișează mai multe valori pentru fiecare interogare costisitoare:

  • Execuții/min: De câte ori a fost executată interogarea în ultimul minut.
  • CPU (ms/sec): Timp CPU consumat de această interogare pe secundă.
  • Citiri fizice/sec: Numărul de citiri fizice pe disc pe secundă pentru această interogare.
  • Scrieri logice/sec: Numărul de scrieri logice (în memoria tampon cache) pe secundă.
  • Citiri logice/sec: Numărul de citiri logice (din memoria cache tampon) pe secundă.
  • Durată medie (ms): Timpul mediu de execuție pentru această interogare.
  • Număr de planuri: Numărul de planuri de execuție din memoria cache pentru această interogare.

Aceste valori vă ajută să înțelegeți nu doar care interogări sunt costisitoare, ci și de ce sunt scumpe și cât de des circulă.

3.5.2 Opțiuni de sortare

Puteți sorta panoul Interogări costisitoare recente după diferite valori pentru a găsi diferite tipuri de probleme:

  1. Faceți clic pe orice antet de coloană pentru a sorta după valoarea respectivă.
  2. Strategiile comune de sortare includ:
    • Sortează după procesor: Găsiți interogările care consumă cel mai mult timp de procesor.
    • Sortează după Execuții/min: Identificați interogările care se execută excesiv de des.
    • Sortează după citiri fizice: Găsiți interogările care cauzează cele mai multe I/O-uri pe disc.
    • Sortează după Durata medie: Localizați interogările cu execuție lungă.

Când depanați o problemă de performanță, încercați să sortați după mai multe coloane pentru a obține perspective diferite. O interogare cu utilizare moderată a CPU, dar cu un număr extrem de mare de execuții pe minut, ar putea fi problema reală.

3.5.3 Vizualizarea textului interogării

Pentru a vedea instrucțiunea SQL reală din spatele unei interogări costisitoare:

  1. Faceți clic dreapta pe rândul de interogare din panoul Interogări costisitoare recente.
  2. Selectați Editați textul interogării.
    Editați textul interogării în panoul Interogări costisitoare recente.
  3. Se deschide o nouă fereastră de interogare care afișează instrucțiunea SQL completă.
    Fereastră nouă de interogare după selectarea opțiunii „Editare text interogare” în panoul Interogări costisitoare recente.

Acest lucru vă permite să examinați logica interogării și să identificați potențiale oportunități de optimizare. Apoi, puteți copia textul interogării pentru a testa versiunile modificate.

3.5.4 Analizarea planurilor de execuție

Planurile de execuție vă arată cum SQL Server execută o interogare, dezvăluind ineficiențe precum indexuri lipsă sau tipuri de joncțiune nepotrivite:

  1. Faceți clic dreapta pe rândul de interogare din panoul Interogări costisitoare recente.
  2. Selectați Afișați planul de execuție.
    Afișați planul de execuție în panoul Interogări costisitoare recente.
  3. SQL Server Management Studio afișează o reprezentare grafică a modului în care se execută interogarea.
    Planul de execuție al interogării într-o fereastră nouă.

Căutați operațiuni care consumă procente mari din costul interogării, avertismente despre statistici sau indexuri lipsă și operațiuni neașteptate de scanare a tabelelor. Acestea indică adesea unde ar trebui să se concentreze eforturile de optimizare.

3.5.5 Identificarea interogărilor problematice

Urmăriți aceste modele în panoul Interogări costisitoare recente:

  • Execuții excesive: O interogare care se execută de mii de ori pe minut ar putea indica o problemă de interogare N+1 în care codul aplicației apelează baza de date în interiorul unei bucle.
  • Citiri fizice ridicate: Interogările cu rate mari de citire fizică accesează frecvent discul, ceea ce sugerează lipsă de indexuri sau interogări scrise prost.
  • CPU cu utilizare intensă și durată redusă: Multe interogări rapide care consumă mult CPU în total pot afecta performanța serverului la fel de mult ca câteva interogări lente.
  • Numărări multiple de planuri: Interogările cu multe planuri de execuție pot suferi de probleme de sniffing al parametrilor sau de interogări neparametrate, cauzând supraîncărcarea memoriei cache a planurilor.

4. Utilizarea Monitorului de activitate pentru depanarea performanței

Monitorul de activitate strălucește cu adevărat atunci când îl utilizați sistematic pentru a diagnostica și rezolva problemele de performanță. Această secțiune prezintă scenarii comune de depanare și cum să le abordați.

4.1 Diagnosticarea execuțiilor excesive de interogări

Una dintre cele mai frecvente probleme de performanță este reprezentată de interogările care se execută mult mai frecvent decât este necesar, adesea din cauza problemelor de proiectare a aplicației.

4.1.1 Identificarea interogărilor repetate

Pentru a identifica interogările care se execută prea des:

  1. Deschideți Monitorul de activitate și extindeți Interogări recente costisitoare panoul.
  2. Filtrează după Execuții/min (execuții pe minut).
  3. Căutați interogări în partea de sus a listei cu un număr de execuții care pare nerezonabil de mare.
  4. Faceți clic dreapta pe interogarea suspectă și selectați Editați textul interogării pentru a examina instrucțiunea SQL.

De exemplu, dacă vedeți o simplă instrucțiune SELECT care se execută de 37,000 de ori pe minut, întrebați-vă dacă aplicația chiar trebuie să apeleze această interogare atât de des. Majoritatea interogărilor care se execută de mai mult de câteva mii de ori pe minut necesită o investigare.

4.1.2 Analiza cauzelor principale

Execuțiile excesive de interogări provin de obicei din următoarele probleme:

  • Problemă de interogare N+1: Codul aplicației preia o listă de elemente, apoi execută o interogare separată pentru fiecare element pentru a obține date aferente. Aceasta creează N interogări suplimentare, unde N este numărul de elemente.
  • Lipsește memorarea în cache: Aplicația interoghează baza de date pentru date care se modifică rar, în loc să le stocheze în cache în memoria aplicației.
  • Bucle de interogare: Codul interoghează în mod repetat baza de date verificând modificările de stare, în loc să utilizeze notificări de modificare sau cozi de mesaje.
  • Ineficiența ORM: Entity Framework și instrumente similare generează uneori modele de interogare ineficiente atunci când dezvoltatorii nu înțeleg cum se traduce codul lor în SQL.

Pentru a determina cauza principală, urmăriți interogarea până la codul aplicației. Rețineți Aplicatii și Intră în cont coloane din panoul Procese atunci când interogarea se execută. De asemenea, puteți face clic dreapta pe proces și selecta Proces de urmărire în SQL Server profil pentru a vedea modelul de apel.

4.1.3 Soluții și bune practici

După ce ați identificat execuțiile excesive de interogări, luați în considerare aceste soluții:

  • Procesare în lot: Modificați codul aplicației pentru a prelua mai multe elemente dintr-o singură interogare folosind joncțiuni sau clauze IN, în loc să executați interogări separate într-o buclă.
  • Cache-ul rezultatelor: Cache accesat frecvent, date din memoria aplicației care se modifică rar, cu timpi de expirare corespunzători.
  • Încărcare nerăbdătoare: Configurați ORM-urile să utilizeze strategii de încărcare rapidă care preiau date conexe în mai puține interogări și mai eficiente.
  • Parametrizarea interogării: Asigurați-vă că interogările utilizează parametri în loc să concateneze valori, ceea ce îmbunătățește reutilizarea memoriei cache a planului și reduce costurile de compilare.

4.2 Investigarea problemelor de blocare

Blocarea apare atunci când o sesiune conține blocaje care împiedică continuarea altor sesiuni. Aceasta se manifestă prin timpi de răspuns lenți ai aplicațiilor și utilizatori frustrați.

4.2.1 Identificarea lanțurilor de blocare

Pentru a detecta și analiza blocajele:

  1. Deschideți Monitorul de activitate și extindeți procese panoul.
  2. Căutați sesiuni cu valori în Blocat de coloană — acestea așteaptă blocări deținute de alte sesiuni.
  3. Găsiți sesiuni cu „1” în Blocator de cap coloană — acestea sunt cauza principală a blocării lanțurilor.
  4. Rețineți ID-ul sesiunii al blocatorului cu capul.
  5. Faceți clic dreapta pe sesiunea de blocare a capului și selectați Detalii să vadă ce comandă execută.

Înțelegerea lanțului de blocare este crucială. Blocantul principal este sesiunea pe care trebuie să o investigați, nu sesiunile blocate în aval.

4.2.2 Înțelegerea tipurilor de încuietori

Tip de așteptare Coloana din panoul Procese indică ce tip de sesiuni blocate așteaptă:

  • LCK_M_X: Așteptare de blocare exclusivă, cauzată de obicei de operațiunile UPDATE, DELETE sau INSERT.
  • LCK_M_S: Așteptare blocare partajată, de obicei instrucțiuni SELECT care așteaptă eliberarea blocărilor exclusive.
  • LCK_M_U: Așteptare blocare actualizare, un tip de blocare intermediară utilizat în timpul actualizărilor.
  • LCK_M_IX: Așteptare de blocare exclusivă a intenției, indicând o concurență la nivel de pagină sau de rând.

Resursă de așteptare Coloana arată ce obiect al bazei de date este blocat, ajutându-vă să înțelegeți ce tabel sau index este implicat în conflict.

4.2.3 Rezolvarea problemelor de blocare

După ce ați identificat sesiunea blocantă și ce face aceasta, aveți mai multe opțiuni:

  1. Așteptați finalizarea: Dacă blocatorul principal rulează o interogare legitimă care se va finaliza în curând, ar fi mai bine să o lăsați să se termine natural.
  2. Opriți sesiunea: Dacă blocatorul de antete este blocat sau rulează o interogare care ar trebui anulată:
    • Faceți clic dreapta pe sesiune în panoul Procese.
    • Selectați Kill Process.
    • Confirmați acțiunea în caseta de dialog.
  3. Optimizați interogările: Dacă blocarea se repetă cu aceleași interogări, optimizați-le pentru a reduce durata blocării.
  4. Ajustați nivelurile de izolare: Luați în considerare utilizarea READ COMMITTED SNAPSHOT ISOLATION pentru a reduce blocarea în sarcinile de lucru cu citire intensă.
  5. Ajustare index: Adăugați indexuri pentru a accelera interogările, reducând durata de timp în care acestea rețin blocări.

4.3 Analizarea utilizării ridicate a procesorului

Când panoul Prezentare generală afișează constant timpul procesorului la sau aproape de 100%, trebuie să identificați interogările responsabile și să determinați dacă acestea pot fi optimizate.

4.3.1 Identificarea interogărilor care solicită intens procesorul

Pentru a găsi interogări care consumă excesiv de CPU:

  1. Deschideți Interogări recente costisitoare panoul.
  2. Filtrează după CPU (ms/sec) pentru a afișa interogările utilizând cel mai mult timp CPU.
  3. Examinați primele interogări din listă.
  4. Faceți clic dreapta pe interogările cu procesor ridicat și selectați Editați textul interogării pentru a vizualiza instrucțiunea SQL.
  5. Selectați Afișați planul de execuție pentru a înțelege cum se execută interogarea.

Acordați atenție nu doar utilizării CPU a interogărilor individuale, ci și Execuții/min coloană. O interogare care utilizează un consum moderat de CPU per execuție, dar care rulează de mii de ori pe minut, poate fi cel mai mare consumator de CPU.

4.3.2 Tehnici de optimizare a interogărilor

Printre abordările comune pentru reducerea consumului de procesor se numără:

  • Adăugați indexuri lipsă: Căutările de indexare utilizează mult mai puțin CPU decât scanările de tabele. Căutați recomandări de indexare lipsă în planurile de execuție.
  • Rescrieți interogările ineficiente: Înlocuiți cursorii cu operații bazate pe seturi, eliminați funcțiile inutile din clauzele WHERE și eliminați joncțiunile redundante.
  • Actualizare statistică: Statisticile învechite cauzează SQL Server pentru a alege planuri de execuție ineficiente. Rulați UPDATE STATISTICS pe tabelele afectate.
  • Reduceți volumul de date: Adăugați clauze WHERE pentru a filtra datele mai devreme, utilizați TOP sau OFFSET/FETCH pentru paginare și evitați SELECT *.
  • Corecție de detectare a parametrilor: Folosiți OPTION (RECOMPILE), indicii de interogare sau ghiduri de plan atunci când sniffing-ul parametrilor cauzează probleme.

4.4 Investigarea problemelor de memorie

Presiunea excesivă asupra memoriei poate cauza revărsarea interogărilor pe disc, degradând semnificativ performanța. Monitorul de activitate vă ajută să identificați operațiunile care consumă multă memorie.

4.4.1 Înțelegerea metricilor de memorie

Utilizarea memoriei Coloana din panoul Procese afișează memoria alocată fiecărei sesiuni în kiloocteți. Utilizarea ridicată a memoriei de către o singură sesiune indică adesea:

  • Operațiuni mari de sortare sau hash care nu au încăput în memoria acordată inițial
  • Interogări care preiau seturi enorme de rezultate
  • Paralelism excesiv care creează multe copii ale operatorilor planului de execuție
  • Pierderi de memorie în procedurile sau funcțiile stocate CLR

Panoul Așteptări resurse poate afișa Așteptări memorie atunci când interogările nu pot obține suficiente granturi de memorie și trebuie să aștepte ca memoria să devină disponibilă.

4.4.2 Identificarea interogărilor care necesită multă memorie

Pentru a găsi interogările care cauzează presiune asupra memoriei:

  1. În procese panou, sortare după Utilizarea memoriei pentru a vedea sesiunile care consumă cea mai mare memorie.
  2. Faceți clic dreapta pe sesiunile cu utilizare ridicată a memoriei și selectați Detalii pentru a vizualiza interogările lor.
  3. În Interogări recente costisitoare panou, căutați interogări cu valoare ridicată Citiri logice or Scrieri logice, deoarece acestea se corelează adesea cu utilizarea memoriei.
  4. Examinați planurile de execuție pentru operatorii Sort și Hash Match, care utilizează granturi de memorie.

Interogările care afișează avertismente „Memory Grant” (Acordare memorie) în planurile de execuție sau avertismente de scurgere indică probleme de presiune a memoriei.

4.5 Detectarea problemelor de performanță ale aplicațiilor

Când utilizatorii raportează timpi de răspuns lenți ai aplicațiilor, Monitorul de activitate vă ajută să determinați dacă baza de date este cauza blocajului.

4.5.1 Corelarea Monitorului de Activitate cu Problemele Aplicației

Pentru a investiga lentoarea aplicației:

  1. Rețineți momentul exact la care utilizatorii raportează problemele și aplicațiile afectate.
  2. Deschideți Monitorul de activitate și verificați Descriere panou pentru vârfurile de resurse din acel moment.
  3. În procese panou, filtrare după Aplicatii pentru a afișa doar conexiunile din aplicația afectată.
  4. Căutați un nivel ridicat Timp de așteptare valori, care indică întârzieri în baza de date.
  5. Verifică Interogări recente costisitoare panou pentru interogările din aplicația respectivă care consumă resurse semnificative.

Dacă baza de date nu prezintă nicio activitate neobișnuită în timp ce utilizatorii se confruntă cu lentoarea, problema constă probabil în codul aplicației, latența rețelei sau performanța clientului.

4.5.2 Identificarea modelelor de aplicații ineficiente

Monitorul de activitate dezvăluie mai multe anti-șabloane în designul aplicațiilor:

  • Aplicații Chatty: Multe interogări mici în loc de mai puține, interogări mai eficiente. Identificate prin numărul mare de conexiuni și numeroase interogări simple în secțiunea Interogări costisitoare recente.
  • N+1 interogări: O interogare urmată de N interogări suplimentare pentru date conexe. Se afișează ca o interogare simplă cu un număr extrem de mare de execuții pe minut.
  • Seturi mari de rezultate: Aplicațiile preiau mult mai multe date decât este necesar. Căutați date ridicate Citiri logice combinate cu interogări SELECT * simple.
  • Expirări lipsă: Aplicațiile care nu setează timeout-uri pentru comenzi pot lăsa conexiunile deschise pe termen nelimitat, vizibile ca sesiuni de lungă durată în panoul Procese.

5. Metode alternative: Obținerea datelor de monitorizare a activității prin T-SQL

Deși Monitorul de activitate oferă o interfață grafică convenabilă, uneori este nevoie să recuperați informații echivalente programatic sau să creați soluții de monitorizare personalizate.

5.1 Utilizarea vizualizărilor de gestionare dinamică (DMV)

SQL Server expune informații despre activitate prin intermediul vizualizărilor de gestionare dinamică, pe care Monitorul de activitate le interoghează în culise.

5.1.1 Principalele DMV-uri pentru monitorizarea activității

Cele mai importante DMV-uri pentru replicarea funcționalității Monitorului de Activitate includ:

  • sys.dm_exec_requests: Afișează cererile care se execută în prezent, împreună cu informații despre CPU, I/O și așteptare.
  • sys.dm_exec_sessions: Conține informații la nivel de sesiune, cum ar fi numele de utilizator, numele gazdei și numele programului.
  • sys.dm_os_wait_stats: Oferă statistici cumulative de așteptare pentru întreaga instanță.
  • sys.dm_exec_query_stats: Conține statistici agregate de performanță pentru interogările memorate în cache.
  • sys.dm_io_virtual_file_stats: Returnează statistici I/O pentru date și fișiere jurnal.
  • sys.dm_exec_sql_text: Preia textul SQL pentru un anumit sql_handle sau plan_handle.
  • sys.dm_exec_query_plan: Returnează planul de execuție pentru o interogare memorată în cache.

5.1.2 Exemple de interogări pentru informații despre proces

Pentru a replica funcționalitatea panoului Procese, puteți interoga:

SELECT 
    s.session_id AS [Session ID],
    CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
    s.login_name AS [Login],
    ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), '') AS [Database],
    ISNULL(t.task_state, '') AS [Task State],
    ISNULL(r.command, '') AS [Command],
    r.cpu_time AS [CPU Time],
    r.total_elapsed_time AS [Elapsed Time],
    r.wait_time AS [Wait Time],
    r.wait_type AS [Wait Type],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

5.1.3 Exemple de interogări pentru statistici de așteptare

Pentru a vedea statistici de așteptare similare cu panoul Așteptări resurse:

SELECT TOP 10
    wait_type AS [Wait Type],
    wait_time_ms / 1000.0 AS [Wait Time (sec)],
    waiting_tasks_count AS [Waiting Tasks],
    wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
    AND wait_type NOT LIKE '%IDLE%'
    AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;

5.2 Utilizarea sp_WhoIsActive

sp_WhoIsActive este o procedură stocată puternică, creată de comunitate, care oferă informații mai detaliate decât Activity Monitor într-un singur set de rezultate.

5.2.1 Instalarea sp_WhoIsActive

Pentru a instala sp_WhoIsActive:

  1. Descărcați cea mai recentă versiune de la http://whoisactive.com.
  2. Descărcarea este un script SQL care conține definiția procedurii.
  3. Deschideți scriptul în SQL Server Studio de management.
  4. Conectați-vă la SQL Server instanță.
  5. Executați scriptul pentru a crea procedura în baza de date principală.
  6. Acordați permisiuni de execuție utilizatorilor corespunzători.

Deoarece sp_WhoIsActive este instalat în master, este accesibil din orice context de bază de date.

5.2.2 Exemple de utilizare de bază

Cea mai simplă metodă de a utiliza sp_WhoIsActive este:

EXEC sp_WhoIsActive;

Aceasta returnează un set de rezultate care afișează toate sesiunile active cu interogările, tipurile de așteptare, informațiile de blocare și utilizarea resurselor aferente.

Pentru un eșantion de 10 secunde care prezintă activitatea în acea perioadă:

EXEC sp_WhoIsActive @delta_interval = 10;

Aceasta calculează deltele pentru valori precum CPU și citiri, arătând ce s-a întâmplat în acele 10 secunde.

5.2.3 Parametri avansați

sp_WhoIsActive acceptă numeroși parametri pentru personalizare:

  • @filtra: Filtrați rezultatele după sesiuni, baze de date sau autentificări specifice.
  • @filter_type: Specificați la ce se aplică filtrul (sesiune, bază de date, autentificare etc.).
  • @get_plans: Includeți planurile de execuție în rezultate (setate la 1).
  • @get_locks: Afișează informații detaliate despre blocare (setat la 1).
  • @get_transaction_info: Afișează detaliile tranzacției (setat la 1).
  • @sort_order: Ordonați rezultatele după diferite valori (CPU, citiri, durată etc.).
  • @destination_table: Introduceți rezultatele într-un tabel pentru urmărirea istorică.

Exemplu care prezintă planuri sortate după CPU:

EXEC sp_WhoIsActive 
    @get_plans = 1,
    @sort_order = '[CPU] DESC';

5.3 Utilizarea procedurilor stocate de sistem

SQL Server include proceduri stocate tradiționale pentru monitorizarea activității, deși oferă mai puține informații decât DMV-urile sau Activity Monitor.

5.3.1 sp_who și sp_who2

Procedura sp_who afișează informații de bază despre sesiune:

EXEC sp_who;

Procedura sp_who2 oferă puțin mai multe detalii:

EXEC sp_who2;

Ambele proceduri afișează ID-urile de sesiune, numele de utilizator, timpul procesorului și informațiile de blocare. Cu toate acestea, le lipsește detaliile bogate disponibile prin intermediul DMV-urilor sau al Monitorului de activitate. Sunt cele mai utile pentru verificări rapide atunci când aveți nevoie rapid de informații minime.

5.3.2 Alte proceduri utile ale sistemului

Procedurile suplimentare ale sistemului pentru monitorizare includ:

  • sp_lock: Afișează informații despre blocare (depreciat; folosiți în schimb sys.dm_tran_locks).
  • sp_monitor: Afișează statistici despre SQL Server activitate.
  • sp_help: Afișează definițiile și metadatele obiectelor.
  • DBCC SQLPERF: Afișează utilizarea spațiului din jurnalul de tranzacții și statisticile de așteptare.

5.4 Crearea de scripturi de monitorizare personalizate

Pentru mediile care necesită monitorizare specifică dincolo de ceea ce oferă Activity Monitor, puteți crea soluții personalizate folosind DMV-uri.

5.4.1 Script echivalent complet pentru Monitorul de activitate

Iată un script complet care reproduce majoritatea funcționalităților Monitorului de activitate:

-- Processes Information
SELECT 
    s.session_id AS [Session ID],
    CONVERT(CHAR(1), s.is_user_process) AS [User Process],
    s.login_name AS [Login],
    ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), N'') AS [Database],
    ISNULL(t.task_state, N'') AS [Task State],
    ISNULL(r.command, N'') AS [Command],
    SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
        ((CASE r.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE r.statement_end_offset 
        END - r.statement_start_offset) / 2) + 1) AS [Statement],
    st.text AS [Command Text],
    r.cpu_time AS [CPU Time (ms)],
    r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
    r.wait_time AS [Wait Time (ms)],
    r.wait_type AS [Wait Type],
    r.wait_resource AS [Wait Resource],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    c.client_net_address AS [Net Address],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id 
    AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

-- Recent Expensive Queries
SELECT TOP 20
    qs.execution_count / 
        DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
    qs.total_worker_time / 1000 AS [CPU Time (ms)],
    qs.total_physical_reads AS [Physical Reads],
    qs.total_logical_writes AS [Logical Writes],
    qs.total_logical_reads AS [Logical Reads],
    qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
    SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset 
        END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;

5.4.2 Automatizarea monitorizării cu joburi SQL Agent

Puteți programa scripturi de monitorizare personalizate folosind SQL Server Agenți:

  1. Creați un tabel pentru a stoca rezultatele monitorizării.
  2. Modificați scriptul de monitorizare pentru a insera rezultatele în acest tabel.
  3. In SQL Server Studio de management, extindere SQL Server Agent în Exploratorul de obiecte.
  4. Faceți clic dreapta Locuri de munca și selectați Nou loc de muncă.
  5. Configurați jobul să ruleze scriptul de monitorizare la intervale regulate.
  6. Configurați alerte sau rapoarte pe baza datelor colectate.

Această abordare permite urmărirea istorică și analiza tendințelor pe care Monitorul de activitate nu le oferă.

6. Limitări și considerații privind monitorul de activitate

Deși Monitorul de activitate este valoros, înțelegerea limitelor sale vă ajută să îl utilizați corespunzător și să îl suplimentați cu alte instrumente atunci când este necesar.

6.1 Înțelegerea costurilor suplimentare ale Monitorului de activitate

Monitorul de activitate nu este gratuit — consumă resurse de server pentru a colecta și afișa informații. Înțelegerea acestei suprasarcini te ajută să îl utilizezi în mod responsabil.

6.1.1 Impactul asupra resurselor serverului

Monitorul de activitate rulează interogări împotriva DMV-urilor de sistem de fiecare dată când se actualizează. Aceste interogări consumă CPU, generează citiri logice și pot menține pentru scurt timp blocări pe tabelele de sistem. Pe serverele ocupate, această supraîncărcare poate afecta performanța.

Panourile Procese și Interogări recente costisitoare sunt deosebit de scumpe, deoarece trebuie să scaneze DMV-uri și tabele din cache potențial mari. Pe serverele cu mii de planuri de interogare memorate în cache, actualizarea Interogărilor recente costisitoare poate dura câteva secunde.

Documentația Microsoft avertizează că intervalele de reîmprospătare sub 10 secunde pot afecta considerabil performanța serverului, în special pe sistemele deja încărcate.

6.1.2 Cele mai bune practici pentru intervalul de reîmprospătare

Alegeți intervale de actualizare potrivite situației dumneavoastră:

  • 1-5 secunde: Numai pentru depanarea imediată a problemelor critice de pe serverele sub încărcare. Nu lăsați Monitorul de activitate să ruleze la aceste intervale.
  • 10 secunde (implicit): Rezonabil pentru majoritatea scenariilor de depanare și monitorizare generală.
  • 30-60 secunde: O alegere mai bună pentru serverele de producție aflate sub sarcină mare sau pentru monitorizare pe perioade lungi de timp.
  • Numai actualizare manuală: Pentru situațiile în care doriți să verificați ocazional starea curentă fără interogare continuă.

Închideți întotdeauna Monitorul de activitate după ce ați terminat de investigat. Nu îl lăsați să ruleze continuu, mai ales în cazul în care există mai multe instanțe de la utilizatori diferiți.

6.2 Probleme legate de gruparea tipurilor de așteptare

Abordarea Monitorului de activitate pentru clasificarea așteptărilor, deși simplifică vizualizarea, poate ascunde informații importante de diagnostic.

6.2.1 Cum așteaptă grupurile de monitorizare a activității

SQL Server Monitorul de activitate urmărește sute de tipuri distincte de așteptare, fiecare indicând o resursă sau o condiție specifică. Monitorul de activitate le grupează în categorii largi, cum ar fi „Buffer Latch”, „Lock” și „Memory”.

De exemplu, categoria „Buffer Latch” include PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX și alte câteva tipuri specifice de așteptare. Deși toate sunt legate de accesul la pagină, au cauze și soluții diferite.

Microsoft nu documentează exact ce tipuri de așteptare se corelează cu ce categorii, ceea ce face dificilă înțelegerea a ceea ce vedeți cu adevărat.

6.2.2 Tipuri de așteptare lipsă

Monitorul de activitate nu afișează toate tipurile de așteptare. În special, omite adesea așteptările CXPACKET, care indică executarea paralelă a interogărilor. Așteptările CXPACKET sunt frecvente și de obicei nu sunt problematice, dar cunoașterea prezenței lor vă ajută să înțelegeți caracteristicile sarcinii de lucru.

Când Activity Monitor afișează „Buffer Latch” ca fiind cel mai important interval de așteptare, dar alte instrumente arată că CXPACKET este dominant, discrepanța provine din logica de filtrare și grupare a Activity Monitor.

6.2.3 De ce contează anumite tipuri de așteptare

Cunoașterea tipului specific de așteptare este importantă pentru depanare:

  • PAGELATCH_EX: Adesea indică o dispută tempdb pe paginile de alocare. Soluția implică adăugarea mai multor fișiere de date tempdb.
  • PAGELATCH_SH: Ar putea indica pagini fierbinți în tabelele utilizatorilor. Soluția implică partiționarea sau reorganizarea indexului.
  • PAGELATCH_UP: Frecvent în timpul actualizărilor. Poate indica o funcționare normală, mai degrabă decât o problemă.

Monitorul de activitate grupează toate acestea sub „Buffer Latch”, ceea ce îngreunează diagnosticarea. Instrumente precum sp_WhoIsActive și interogările DMV afișează tipuri specifice de așteptare.

6.3 Acuratețea și actualitatea datelor

Monitorul de activitate oferă o vizualizare aproape în timp real, dar „aproape” este cuvântul cheie. Înțelegerea metodei sale de colectare a datelor vă ajută să interpretați corect rezultatele.

6.3.1 Instantaneu vs. monitorizare continuă

Monitorul de activitate afișează instantanee la un moment dat realizate la fiecare interval de actualizare. Evenimentele care au loc între instantanee nu sunt capturate. Dacă o interogare rulează timp de 2 secunde și actualizați la fiecare 10 secunde, este posibil să o vedeți o singură dată sau deloc, în funcție de moment.

Asta înseamnă că Monitorul de activitate excelează în identificarea problemelor persistente (blocarea minutelor care durează, utilizarea constantă a CPU-ului), dar poate trece cu vederea problemele tranzitorii (blocări temporare, vârfuri ocazionale de interogări).

6.3.2 Agregare și eșantionare

Panoul Interogări recente costisitoare afișează datele agregate de când planurile de interogare au intrat în memoria cache. Două interogări identice cu valori diferite ale parametrilor apar ca un singur rând dacă partajează un plan. Această agregare poate masca problemele legate de anumite combinații de parametri (probleme de detectare a parametrilor).

Panoul Așteptări resurse calculează ratele prin compararea instantaneelor. Dacă statisticile de așteptare se resetează între instantanee (caz rar, dar posibil), ratele calculate pot fi incorecte.

6.4 Când NU se recomandă utilizarea Monitorului de activitate

Monitorul de activitate nu este potrivit pentru fiecare scenariu de monitorizare. Recunoașteți când instrumentele alternative sunt alegeri mai bune.

6.4.1 Cerințe privind analiza istorică

Monitorul de activitate afișează doar activitatea curentă sau recentă. Nu stochează date istorice. Dacă trebuie să analizați tendințele pe parcursul a zile sau săptămâni, să comparați performanța actuală cu valorile de referință sau să generați rapoarte despre modelele de performanță, Monitorul de activitate nu este suficient.

Pentru analiza istorică, utilizați SQL ServerTabloul de bord de performanță încorporat, evenimentele extinse cu ținte de fișiere sau soluțiile de monitorizare terțe.

6.4.2 Nevoi detaliate în ceea ce privește statisticile de așteptare

Când aveți nevoie de informații precise despre tipul de așteptare pentru reglaje avansate, gruparea și filtrarea Monitorului de activitate le fac inadecvate. Folosiți direct interogările DMV sau sp_WhoIsActive în schimb.

Pentru o analiză completă a statisticilor de așteptare, interogați direct sys.dm_os_wait_stats și filtrați manual așteptările benigne.

6.4.3 Considerații privind serverul de producție

Pe serverele de producție aflate sub sarcină mare, supraîncărcarea Monitorului de Activitate poate fi problematică. Nu ar trebui ca mai mulți administratori de baze de date să ruleze Monitorul de Activitate simultan pe același server.

Pentru monitorizarea producției, luați în considerare alternative ușoare, cum ar fi instantaneele DMV programate stocate într-o bază de date de monitorizare sau utilizați rutarea Read-Only pentru a monitoriza replicile secundare în configurațiile Always On.

7. Cele mai bune practici pentru utilizarea Monitorului de activitate

Respectarea celor mai bune practici vă asigură că obțineți valoare maximă din Monitorul de activitate, minimizând în același timp impactul negativ asupra serverelor dumneavoastră.

7.1 Când se utilizează Monitorul de activitate

Monitorul de activitate se remarcă în anumite situații. Folosește-l atunci când punctele sale forte se aliniază nevoilor tale.

7.1.1 Probleme de performanță în timp real

Monitorul de activitate este ideal atunci când utilizatorii întâmpină probleme în prezent și trebuie să diagnosticați problema imediat. Vizualizarea în timp real vă ajută să vedeți ce se întâmplă chiar acum.

Când primiți un apel care vă spune că „aplicația este lentă”, deschiderea Monitorului de activitate ar trebui să fie unul dintre primii pași. Puteți determina rapid dacă baza de date este ocupată, blocată sau inactivă.

7.1.2 Investigarea încetinirii aplicației

Când o anumită aplicație nu mai răspunde, Monitorul de activitate vă ajută să determinați dacă problemele legate de baza de date sunt cauza. Filtrați panoul Procese după numele aplicației pentru a vedea doar activitatea din baza de date a aplicației respective.

Dacă aplicația nu prezintă nicio activitate în baza de date în timp ce utilizatorii raportează probleme, problema se află în altă parte a stivei. Dacă observați blocaje extinse sau interogări costisitoare, ați găsit cauza.

7.1.3 Verificări rapide ale stării de sănătate

Monitorul de activitate oferă un tablou de bord excelent pentru verificări rapide ale stării de funcționare în timpul administrării de rutină. Deschideți-l, aruncați o privire la graficele de prezentare generală și verificați dacă nimic nu pare anormal.

Această verificare superficială durează câteva secunde și poate dezvălui probleme înainte ca acestea să devină critice. Include-o în rutina ta zilnică.

7.2 Setări de configurare optime

Configurarea Monitorului de activitate în mod corespunzător îmbunătățește atât utilitatea acestuia, cât și amprenta resurselor sale.

7.2.1 Intervale de actualizare recomandate

Potriviți intervalul de actualizare la scopul tău:

  • Depanare activă: 10 secunde oferă o bună capacitate de răspuns cu un cost suplimentar rezonabil.
  • Monitorizare extinsă: 30-60 de secunde reduc impactul asupra serverului în timpul perioadelor de observație mai lungi.
  • Diagnosticarea problemei critice: 5 secunde oferă o granularitate ridicată atunci când fiecare secundă contează, dar utilizați-l pe scurt.
  • Controale regulate de sanatate: Reîmprospătare manuală (interval de 1 oră) atunci când nu vizionați activ.

Nu uita să închizi Monitorul de activitate când ai terminat. Setarea unui interval lung și uitarea de el irosește resurse ale serverului.

7.2.2 Strategii de filtrare

Folosește filtre pentru a te concentra pe informațiile relevante și a reduce efortul cognitiv:

  • Filtrare procese după Baza de date pentru a vedea doar activitatea față de anumite baze de date.
  • Filtreaza dupa Intră în cont pentru a urmări activitatea unui anumit utilizator.
  • Filtreaza dupa Starea sarcinii = RUNNING pentru a ascunde sesiunile inactive.
  • Filtreaza dupa Aplicatii pentru a izola traficul de la anumite programe.
  • Afișează doar spații nespațiale în Blocat de să vadă doar situații de blocare.

7.2.3 Selectarea și sortarea coloanelor

Dezvoltați o abordare sistematică pentru revizuirea datelor din Monitorul de activitate:

  1. Începeți cu o prezentare generală: Verificați graficele pentru vârfuri sau anomalii evidente.
  2. Verificați procesele pentru blocare: Sortați după ID-ul sesiunii, apoi căutați valorile „Blocat de”.
  3. Revizuirea așteptărilor resurselor: Sortați după timpul de așteptare cumulativ pentru a identifica blocajele resurselor.
  4. Analizați interogările costisitoare: Sortează după diferite valori (CPU, execuții, citiri) pentru a găsi diferite tipuri de probleme.
  5. Verificare cu panoul I/O: Confirmați dacă interogările cu utilizare intensivă de I/O se corelează cu o activitate ridicată a discului.

7.3 Integrare cu alte instrumente

Monitorul de activitate funcționează cel mai bine ca parte a unui set de instrumente mai amplu, decât ca o soluție independentă.

7.3.1 Utilizarea cu SQL Server profil

Monitor de activitate și SQL Server Profiler se completează bine. Când identificați o sesiune problematică în Monitorul de activitate, faceți clic dreapta pe ea și selectați Proces de urmărire în SQL Server profil.

Aceasta lansează Profiler cu filtre deja configurate pentru a capta doar activitatea sesiunii respective. Vedeți secvența completă de instrucțiuni executate, informații despre temporizare și mesaje de eroare - detalii pe care Monitorul de activitate nu le oferă.

Pentru a afla mai multe despre SQL Server Capacități de profilare și tehnici avansate de urmărire, consultați cuprinzător SQL Server Ghidul Profiler.

7.3.2 Completarea cu evenimente extinse

Evenimentele extinse oferă o monitorizare detaliată, cu costuri reduse, care capturează informațiile pe care Monitorul de activitate le omite. Creați sesiuni de evenimente extinse pentru a urmări evenimente specifice, cum ar fi blocaje, interogări cu rulare lungă sau recompilări excesive.

Folosește Monitorul de activitate pentru investigații imediate și Evenimente extinse pentru monitorizare continuă și analiză istorică. Cele două instrumente răspund unor nevoi diferite.

Pentru a afla mai multe despre SQL Server Capacități de evenimente extinse și tehnici avansate de monitorizare, consultați cuprinzător SQL Server Ghid pentru evenimente extinse.

7.3.3 Soluții de monitorizare de la terți

Instrumente comerciale precum SolarWinds Database Performance Analyzer, Redgate SQL Monitor și Quest Spotlight oferă funcții care lipsesc în Activity Monitor: alerte, tendințe istorice, planificare a capacității și diagnosticare automată.

Aceste instrumente sunt completări valoroase la Monitorul de activitate, nu înlocuitori. Monitorul de activitate rămâne util pentru verificări și investigații rapide chiar și atunci când sunt disponibile instrumente sofisticate de monitorizare.

7.4 greșeli frecvente de evitat

Înțelegerea greșelilor frecvente din Monitorul de activitate vă ajută să îl utilizați mai eficient.

7.4.1 Menținerea monitorului de activitate în funcțiune continuă

Cea mai frecventă greșeală este deschiderea Monitorului de activitate și lăsarea lui să ruleze pe termen nelimitat. Aceasta risipește resursele serverului și oferă o valoare redusă, deoarece nu urmărești în mod activ.

Închide Monitorul de activitate atunci când nu îl folosești în mod activ. Dacă ai nevoie de monitorizare continuă, implementează în schimb o soluție de monitorizare adecvată cu colectare programată a datelor.

7.4.2 Bazarea excesivă doar pe Monitorul de activitate

Monitorul de activitate oferă o perspectivă asupra stării serverului. Nu vă bazați exclusiv pe el. Suplimentați-l cu Monitorul de performanță Windows pentru indicatori la nivel de sistem de operare, Evenimente extinse pentru urmărire detaliată și analiza planului de execuție pentru optimizarea interogărilor.

Monitorul de activitate te ajută să identifici problemele, dar rezolvarea lor necesită adesea instrumente suplimentare și analize mai aprofundate.

Aflați mai multe despre SQL Server monitor de performanță în cadrul nostru ghid complet.

7.4.3 Ignorarea tendințelor istorice

Monitorul de activitate arată starea actuală, dar problemele de performanță au adesea tipare vizibile doar în timp. Implementați colectarea datelor istorice pentru a putea compara valorile actuale cu valorile de referință și a identifica tendințe.

Fără context istoric, este posibil să nu realizați că utilizarea „normală” a procesorului în prezent este cu 30% mai mare decât valoarea de referință de luna trecută, ceea ce indică o degradare treptată.

8. Depanarea problemelor legate de Monitorul de activitate

Monitorul de activitate în sine întâmpină uneori probleme. Cunoașterea modului de depanare a acestor probleme previne frustrarea.

8.1 Monitorul de activitate nu se deschide sau nu afișează date

Când Monitorul de activitate se deschide, dar afișează panouri goale sau nu se deschide deloc, pot fi responsabili mai mulți factori.

8.1.1 Probleme legate de permisiuni

Cea mai frecventă cauză a problemelor legate de Monitorul de activitate este permisiunea insuficientă. Pentru a verifica și rezolva:

  1. Verificați permisiunile la nivel de server:
    SELECT * FROM fn_my_permissions(NULL, 'SERVER')
    WHERE permission_name = 'VIEW SERVER STATE';
    
  2. Dacă nu se returnează niciun rând, nu aveți permisiunea VIEW SERVER STATE.
  3. Cereți unui administrator de server să acorde acest drept:
    USE master;
    GRANT VIEW SERVER STATE TO [YourLogin];
    
  4. Închideți și redeschideți Monitorul de activitate după acordarea permisiunilor.

8.1.2 Probleme de compatibilitate a versiunilor

Folosind o versiune veche de SQL Server Management Studio pentru a se conecta la un nou SQL Server versiunea poate cauza erori ale Monitorului de activitate. Este posibil ca instrumentul să nu înțeleagă noile tipuri de așteptare sau coloanele vizualizării sistemului.

Folosește întotdeauna versiunea SSMS care corespunde sau este mai nouă decât cea a ta. SQL Server versiune. Microsoft oferă cea mai recentă versiune SSMS ca descărcare gratuită separată de SQL Server însăși.

8.1.3 Probleme legate de firewall și rețea

Monitorul de activitate necesită conectivitate la SQL Server instanță pe porturi standard (1433 în mod implicit). Dacă vă puteți conecta prin Object Explorer, dar Activity Monitor eșuează, este posibil ca regulile firewall să blocheze anumite conexiuni.

Verificați dacă clientul dvs. poate ajunge la SQL Server computerul pe toate porturile necesare. Verificați atât Paravanul de protecție Windows, cât și orice paravane de protecție de rețea dintre client și server.

8.2 Monitorul de activitate este pus permanent în pauză

O problemă comună, în special în SQL Server 2019, Monitorul de activitate se deschide într-o stare de pauză și refuză să se reia.

8.2.1 Înțelegerea stării de pauză

Când Monitorul de activitate se întrerupe, toate panourile afișează starea „Întrerupt” cu un buton de reluare care este posibil să nu funcționeze. Acest lucru vă împiedică să vedeți orice activitate a serverului.

Starea de pauză apare de obicei din cauza unor probleme de permisiuni, restricții de conexiune la distanță sau erori ale versiunii SSMS, mai degrabă decât din cauza unei acțiuni intenționate de pauză.

8.2.2 Cauze frecvente

Monitorul de activitate poate intra în stare de pauză permanentă din cauza:

  • Lipsește permisiunea VIEW SERVER STATE pe panourile mai noi adăugate recent. SQL Server Versiunile
  • Conexiunile la distanță sunt dezactivate pe SQL Server instanță
  • Eșecuri de autentificare pentru anumite interogări de sistem
  • Erori în anumite versiuni SSMS, în special în versiunile 18.0 până la 18.3
  • Probleme de conectivitate între client și server

8.2.3 Pași de rezoluție

Pentru a rezolva problemele legate de starea de pauză a Monitorului de activitate:

  1. Actualizare SSMS: Descărcați și instalați cele mai recente SQL Server Versiunea Management Studio de pe site-ul web Microsoft. Multe erori legate de starea în pauză au fost remediate în versiunile ulterioare.
  2. Verificați permisiunile: Asigurați-vă că aveți permisiunile VIEW SERVER STATE și VIEW ANY DEFINITION.
  3. Verificați conexiunile la distanță: Verificați dacă SQL Server Instanța permite conexiuni la distanță:
    EXEC sp_configure 'remote access';
    

    Dacă valoarea este 0, solicitați unui administrator să o activeze.

  4. Reporniți SSMS: Uneori, pur și simplu închideți toate ferestrele și reporniți SQL Server Management Studio rezolvă problema.
  5. Conectați-vă cu autentificarea Windows: Dacă utilizați autentificarea SQL, încercați în schimb autentificarea Windows, deoarece uneori ocolește problemele de întrerupere legate de autentificare.

8.3 Probleme de performanță la utilizarea Monitorului de activitate

Dacă Monitorul de activitate devine lent sau provoacă o degradare a performanței serverului, sunt necesare ajustări.

8.3.1 Reducerea cheltuielilor generale de monitorizare

Pentru a minimiza impactul Monitorului de activitate:

  1. Măriți intervalul de reîmprospătare la 30 de secunde sau 1 minut.
  2. Închideți panourile pe care nu le utilizați în mod activ făcând clic pe butonul de restrângere.
  3. Când panourile sunt restrânse, Monitorul de activitate nu interoghează datele pentru acestea.
  4. Evitați să rulați simultan mai multe instanțe ale Monitorului de activitate.
  5. Închideți complet Monitorul de activitate atunci când nu investigați activ problemele.

8.3.2 Metode alternative de monitorizare ușoară

Dacă Monitorul de activitate necesită prea multe resurse pentru mediul dvs., luați în considerare alternative:

  • Interogați direct DMV-urile: Scrieți interogări T-SQL specifice care preiau doar informațiile de care aveți nevoie.
  • Folosește sp_WhoIsActive: Această procedură stocată este extrem de optimizată și are de obicei o suprasarcină mai mică decât Monitorul de activitate.
  • Implementați eșantionarea: Programați joburi SQL Agent care capturează instantanee ale datelor DMV la intervale regulate, stocând rezultatele în tabele pentru analiză ulterioară.
  • Monitorizați replicile secundare: In Grupuri de disponibilitate Always On, rulați Monitorul de activitate pe o unitate secundară lizibilă, în loc de cea principală.

8.4 Informații inexacte sau lipsă

Uneori, Monitorul de activitate afișează informații care par incorecte sau incomplete.

8.4.1 Verificarea datelor cu DMV-urile

Când rezultatele Monitorului de activitate par suspecte, verificați-le interogând direct DMV-urile subiacente. De exemplu, dacă panoul Procese nu afișează nicio blocare, dar utilizatorii o raportează, interogați:

SELECT 
    blocking_session_id,
    session_id,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;

Dacă această interogare arată o blocare pe care Monitorul de activitate a omis-o, ați confirmat o problemă de afișare.

8.4.2 Înțelegerea temporizării reîmprospătării datelor

Rețineți că Monitorul de activitate afișează instantanee. O interogare care a rulat între intervale de actualizare nu va apărea în Interogări costisitoare recente decât dacă planul său de execuție rămâne în memoria cache.

În mod similar, statisticile de așteptare din panoul Așteptări resurse reflectă acumularea de la ultima instantanee. Volumul de lucru care se schimbă rapid poate afișa modele diferite la fiecare reîmprospătare.

9. Tehnici avansate de monitorizare a activității

Administratorii de baze de date experimentați utilizează Monitorul de activitate în moduri sofisticate pentru a extrage valoarea maximă de diagnosticare.

9.1 Combinarea mai multor panouri pentru analiza cauzei principale

Adevărata putere a Monitorului de activitate apare atunci când corelezi informații din mai multe panouri pentru a înțelege problemele complexe de performanță.

9.1.1 Corelarea așteptărilor cu procesele

Când panoul Așteptări resurse afișează timpi de așteptare mari într-o categorie, utilizați panoul Procese pentru a identifica sesiunile care se confruntă cu aceste așteptări:

  1. Rețineți categoria de așteptare cu timp de așteptare cumulativ ridicat (de exemplu, „Blocare”).
  2. Comutați la panoul Procese.
  3. Filtrează după Tip de așteptare la sesiunile de grup în funcție de așteptarea lor actuală.
  4. Căutați sesiuni care afișează tipuri de așteptare în categoria problematică.
  5. Pentru acele sesiuni, examinați Resursă de așteptare pentru a vedea ce obiecte ale bazei de date sunt implicate.
  6. Faceți clic dreapta și selectați Detalii pentru a vedea textul interogării.

Această corelație vă ajută să treceți de la „avem așteptări de blocare” la „această interogare specifică așteaptă blocări pe acest tabel”.

9.1.2 Legarea interogărilor costisitoare la problemele I/O

Când panoul I/O fișier de date afișează o activitate ridicată a discului într-o anumită bază de date:

  1. Rețineți care fișiere ale bazei de date au rate mari de citire sau scriere în MB/sec.
  2. Comutați la Interogări costisitoare recente.
  3. Filtrează după Citiri fizice/sec pentru a identifica interogările care citesc intens de pe disc.
  4. Filtrați sau identificați vizual interogările care rulează pe baza de date cu un număr mare de I/O.
  5. Examinați planurile de execuție ale acelor interogări pentru scanări de tabele sau indexuri lipsă care cauzează I/O excesive.

Această analiză multi-panou conectează simptomele (volum ridicat de I/O pe disc) cu cauzele (interogări ineficiente specifice).

9.2 Utilizarea Monitorului de activitate pentru planificarea capacității

Deși Monitorul de activitate nu stochează date istorice, îl puteți utiliza strategic pentru observații privind planificarea capacității.

9.2.1 Identificarea modelelor de utilizare maximă

Monitorizați activitatea serverului la diferite ore ale zilei pentru a identifica modelele de utilizare:

  1. Deschideți Monitorul de activitate în timpul orelor de vârf cunoscute.
  2. Rețineți valorile maxime ale graficului % Processor Time.
  3. Înregistrați numărul maxim de sarcini în așteptare.
  4. Respectați solicitările pe lot/sec în orele de vârf.
  5. Documentați cele mai aglomerate baze de date în panoul Procese.
  6. Repetați în afara orelor de vârf pentru comparație.

Dacă timpul procesorului în orele de vârf depășește constant 80%, vă apropiați de limitele capacității procesorului. În mod similar, creșterea numărului de așteptări indică o creștere a conflictelor legate de resurse.

9.2.2 Analiza tendințelor resurselor

Deși Monitorul de activitate afișează starea curentă, îl puteți folosi pentru verificarea oportună a tendințelor prin înregistrarea indicatorilor cheie în timp:

  • Faceți capturi de ecran ale panoului Prezentare generală la aceeași oră în fiecare zi
  • Înregistrați valorile de vârf din fiecare grafic
  • Comparați de la o săptămână la alta pentru a identifica tendințele de creștere
  • Urmăriți creșterile treptate ale timpului mediu al procesorului sau ale ratelor I/O

Această monitorizare manuală a tendințelor completează soluții de monitorizare mai sofisticate și ajută la justificarea extinderii capacității.

9.3 Documentarea parametrilor de referință ai performanței

Stabilirea unor indicatori de performanță de referință vă ajută să recunoașteți când performanța scade.

9.3.1 Capturarea indicatorilor de referință

În perioadele în care se știe că performanța este bună, documentați valorile indicatorului de activitate:

  1. Deschideți Monitorul de activitate în timpul operațiunilor normale de afaceri (nu în orele de vârf sau în afara orelor de vârf).
  2. Valorile panoului Prezentare generală a înregistrărilor:
    • Interval tipic de timp al procesorului (%)
    • Numărul mediu de sarcini în așteptare
    • Rată normală de intrare/ieșire a bazei de date
    • Cereri tipice în lot/sec
  3. Rețineți categoriile din panoul Așteptări resurse care afișează cel mai mare timp de așteptare.
  4. Documentați numărul de procese active, de obicei în panoul Procese.
  5. Înregistrați valori reprezentative ale execuției interogărilor din Interogările costisitoare recente.

Păstrați această documentație de bază pentru referințe ulterioare atunci când investigați problemele de performanță.

9.3.2 Compararea performanței actuale cu cea de bază

Când apar probleme de performanță, comparați citirile actuale ale Monitorului de activitate cu valorile de referință documentate:

  • Este timpul procesorului semnificativ mai mare decât valoarea inițială? Concentrați-vă pe interogările care solicită intens procesorul.
  • Sunt sarcinile în așteptare de 2-3 ori mai mari decât nivelurile de bază? Investigați așteptările resurselor.
  • Este I/O substanțial mai mare? Verificați panoul I/O al fișierului de date și interogările costisitoare.
  • Numărul de solicitări în lot este mai mic decât cel de bază în timpul orelor de vârf? Căutați probleme de blocare sau conectivitate.

Această comparație vă ajută să identificați ce s-a schimbat și să concentrați eforturile de depanare în mod corespunzător.

9.4 Crearea fluxurilor de lucru de monitorizare personalizate

Dezvoltați fluxuri de lucru sistematice pentru scenarii comune de investigare, pentru a asigura o analiză amănunțită și repetabilă.

9.4.1 Procesul de investigație pas cu pas

Când utilizatorii raportează probleme de performanță, urmați un flux de lucru consecvent:

  1. Verificare rapidă a stării de sănătate: Deschideți Monitorul de activitate și scanați graficele din panoul Prezentare generală pentru anomalii evidente.
  2. Verificați dacă există blocaje: Extindeți panoul Procese, filtrați pentru spații nespațiale în coloana Blocat de.
  3. Identificați conflictul de resurse: Revizuirea panoului Așteptări resurse sortate după timpul de așteptare.
  4. Găsiți interogări costisitoare: Examinați interogările costisitoare recente sortate după CPU, apoi execuții, apoi citiri.
  5. Corelarea modelelor I/O: Faceți referințe încrucișate la interogările costisitoare cu activitatea panoului I/O Fișier de date.
  6. Constatările documentului: Faceți capturi de ecran și înregistrați ID-urile sesiunilor relevante, tipurile de așteptare și detaliile interogărilor.
  7. Scufundare adâncă: Folosește urme Profiler, analiza planului de execuție și interogările DMV pentru investigarea detaliată a problemelor identificate.

9.4.2 Criterii de escalare

Stabilirea unor criterii pentru momentul în care se escaladează problemele versus continuarea investigației:

  • Escalați imediat: Lanțuri de blocare care durează >5 minute, timp de procesor la 100% timp de >2 minute, procese critice de sistem care afișează starea SUSPENDATĂ.
  • Escalați cu analiza: Interogări recurente și costisitoare care consumă >50% din CPU, timpi de răspuns I/O constant mari >50 ms, acordarea de memorie eșuează în mod repetat.
  • Investigați mai departe: Așteptări temporare rezolvate în câteva minute, interogări cu planuri suboptime, dar cu performanță acceptabilă, blocări minore cu durată <30 de secunde.

10. Monitor de activitate în diferite SQL Server versiuni

Monitorul de activitate a evoluat în SQL Server versiuni, fiecare lansare aducând îmbunătățiri și ocazional probleme noi.

Monitorul de activitate 10.1 în SQL Server 2008 și mai târziu

SQL Server În 2008 a fost introdus designul modern al Monitorului de Activitate, care a rămas în mare parte neschimbat și astăzi.

10.1.1 funcții noi introduse în SQL Server 2008

SQL Server Reproiectarea Monitorului de Activitate din 2008 a adus îmbunătățiri semnificative:

  • Tablou de bord grafic cu diagrame în timp real în panoul Prezentare generală
  • Interfață cu panouri extensibile/pliabile care înlocuiește vechea vizualizare doar cu grilă
  • Panoul Interogări costisitoare recente care afișează date agregate despre performanța interogărilor
  • Panoul I/O fișiere de date pentru monitorizarea activității discului per fișier
  • Panou îmbunătățit Așteptări resurse cu clasificare a așteptărilor
  • Faceți clic dreapta pe meniurile contextuale pentru acțiunile de proces, cum ar fi închiderea sesiunilor și lansarea Profiler
  • Intervale de reîmprospătare configurabile de la 1 secundă la 1 oră

Aceste modificări au transformat Monitorul de Activitate dintr-o simplă listă de procese într-un tablou de bord de monitorizare cuprinzător.

10.1.2 Modificări față de SQL Server 2005

SQL Server Monitorul de activitate din 2005 a fost mult mai limitat:

  • Accesat prin folderul Management din Object Explorer, nu prin bara de instrumente
  • Grilă unică care prezintă lista de procese cu informații de bază
  • Fără diagrame grafice sau panouri multiple
  • Fără interogări costisitoare sau monitorizare I/O
  • Informații statistice privind așteptarea limitată

Reproiectarea din 2008 a reprezentat o reimaginare completă, mai degrabă decât o îmbunătățire incrementală.

Monitorul de activitate 10.2 în SQL Server 2014/2016

SQL Server În 2014 și 2016 s-au adus îmbunătățiri incrementale colectării de date subiacente a Monitorului de Activitate, dar puține modificări vizuale.

10.2.1 Îmbunătățiri și îmbunătățiri

Îmbunătățirile cheie ale acestor versiuni au inclus:

  • Performanță mai bună la monitorizarea serverelor cu mii de planuri memorate în cache
  • Capacități îmbunătățite de filtrare în panoul Procese
  • Acuratețe îmbunătățită a agregării statisticilor de așteptare
  • Gestionare mai bună a sortării și filtrării pe coloane cu seturi mari de rezultate
  • Interogări DMV mai eficiente, reducând cheltuielile de monitorizare

Interfața principală a rămas consistentă cu SQL Server 2008, menținând familiaritatea pentru administratori.

Monitorul de activitate 10.3 în SQL Server 2019/2022

Recent SQL Server Versiunile continuă evoluția Monitorului de Activitate, concentrându-se pe performanță și stabilitate.

10.3.1 Cele mai recente caracteristici și capacități

SQL Server Monitorul de activitate pentru 2019 și 2022 include:

  • Suport pentru noile tipuri de așteptare introduse în aceste versiuni
  • Performanță îmbunătățită de randare în SSMS folosind tehnologia WPF
  • Gestionare mai bună a unui număr mare de sesiuni active
  • Compatibilitate îmbunătățită cu platformele SQL în cloud
  • Metrici CPU și I/O mai precise

10.3.2 Probleme cunoscute în versiunile recente

SQL Server În 2019 au fost introduse mai multe erori în Monitorul de activitate:

  • Stare de pauză permanentă: Monitorul de activitate intră frecvent în starea de pauză și nu se reia, în special în SSMS 18.0-18.3. Remediat în versiunile ulterioare de SSMS.
  • Erori de conectare la distanță: Unele configurații împiedică deschiderea Monitorului de activitate pe instanțele la distanță. Soluțiile includ activarea anumitor semnalizatoare de urmărire sau utilizarea unor versiuni SSMS mai noi.
  • Probleme cu permisiunea: Noile vizualizări de sistem necesită permisiuni suplimentare care nu sunt documentate clar, ceea ce duce la afișaje goale chiar și cu VIEW SERVER STATE.

Folosiți întotdeauna cea mai recentă versiune de SSMS atunci când lucrați cu SQL Server 2019 și 2022 pentru a evita aceste probleme.

11. Cazuri practice de utilizare și exemple

Exemple din lumea reală demonstrează cum se aplică eficient Monitorul de activitate în scenarii comune de depanare.

11.1 Studiu de caz: Diagnosticarea unei aplicații web lente

O echipă de dezvoltare raportează că aplicația lor web a devenit inacceptabil de lentă, încărcarea paginilor durând 20-30 de secunde în loc de 2-3 secunde, câte este normal.

11.1.1 Investigație inițială cu panoul de prezentare generală

Deschideți Monitorul de activitate și examinați panoul Prezentare generală:

  1. Graficul % timp procesor arată o utilizare a procesorului de 85-95%, semnificativ mai mare decât valoarea normală de 30-40%.
  2. Sarcinile în așteptare fluctuează între 10-20 de sarcini, față de o valoare normală de 0-3.
  3. Activitatea I/O a bazei de date este moderată, în jur de 50 MB/s.
  4. Numărul de solicitări în lot/sec este mai mic decât cel așteptat, de 100/sec, față de 300-400/sec în timpul programului de lucru.

Acest model sugerează o blocare a procesorului, cu conflict de resurse, care cauzează o reducere a debitului. Serverul lucrează intens, dar nu procesează multe solicitări.

11.1.2 Identificarea interogării problematice

Extindeți panoul Interogări costisitoare recente și sortați după Execuții/min:

  1. Interogarea de top arată 15,000 de execuții pe minut.
  2. Faceți clic dreapta și selectați Editați textul interogării pentru a examina interogarea.
  3. Interogarea este o simplă instrucțiune SELECT care preia o singură înregistrare de utilizator: SELECT * FROM Users WHERE UserId = @UserId.
  4. Această interogare nu ar trebui să se execute de 15,000 de ori pe minut pentru utilizarea normală a aplicației.

Faceți clic dreapta pe interogare și selectați Afișați planul de execuțiePlanul afișează o scanare a tabelului Utilizatori cu un avertisment despre un index lipsă în coloana UserId.

Filtrați panoul Procese după Aplicație pentru a afișa doar conexiunile aplicației web. Mai multe sesiuni afișează aceeași interogare rulând în mod repetat.

11.1.3 Rezoluție și verificare

Problema provine din două aspecte: execuții excesive de interogări și un index lipsă. Pași de rezolvare:

  1. Creați indexul lipsă:
    CREATE NONCLUSTERED INDEX IX_Users_UserId 
    ON Users (UserId);
    
  2. Contactați echipa de dezvoltare despre execuțiile excesive. Investigația relevă o problemă de interogare N+1 în codul aplicației, unde o buclă preia detalii despre utilizator pentru fiecare element dintr-o listă.
  3. Modificați aplicația pentru a grupa căutările utilizatorilor într-o singură interogare utilizând o clauză IN sau un parametru cu valori de tabel.
  4. Verificați remedierea prin monitorizarea Monitorului de activitate după implementare. Utilizarea procesorului scade la 35-40%, execuțiile pe minut scad la 200-300, iar timpii de răspuns ai aplicațiilor revin la normal.

11.2 Studiu de caz: Rezolvarea unei probleme de blocare

Utilizatorii raportează că sistemul de introducere a comenzilor se blochează periodic timp de 30-60 de secunde înainte de a relua funcționarea normală.

11.2.1 Detectarea lanțului de blocare

Deschideți Monitorul de activitate în timpul unuia dintre aceste evenimente de blocare și extindeți panoul Procese:

  1. Filtrează după ID-ul sesiunii pentru a vedea toate sesiunile organizate.
  2. Mai multe sesiuni arată valori în Blocat de coloană, toate indicând ID-ul sesiunii 73.
  3. Sesiunea 73 arată „1” în Blocator de cap coloană, confirmând că este cauza principală.
  4. Tip de așteptare pentru sesiunile blocate afișează LCK_M_X, indicând faptul că așteaptă blocări exclusive.
  5. Resursă de așteptare coloana arată că blocarea se află în tabelul Comenzi.

11.2.2 Analizarea cauzei

Faceți clic dreapta pe Sesiunea 73 și selectați Detalii pentru a vizualiza comanda:

UPDATE Orders 
SET Status = 'Processing', 
    LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);

Această actualizare face parte dintr-o lucrare de procesare în lot care rulează la fiecare oră. Verificarea Intră în cont Coloana confirmă că sesiunea aparține contului de serviciu de procesare în lot.

Interogarea blochează tabelul Orders în timp ce procesează mii de comenzi. Timp de așteptare pentru sesiunile blocate crește constant, confirmând că această operațiune de lungă durată este problema.

11.2.3 Implementarea remedierii

Rezoluție pe termen scurt:

  1. Detaliile sesiunii 73 a documentului, inclusiv textul interogării și durata.
  2. Permiteți finalizarea naturală a actualizării, deoarece este o procesare în lot legitimă.
  3. După finalizare, verificați dacă sesiunile blocate sunt șterse și operațiunile normale sunt reluate.

Soluții pe termen lung implementate:

  1. Reprogramarea jobului în lot să funcționeze în afara orelor de vârf (2-4 dimineața în loc de în timpul programului de lucru).
  2. Modificarea procesării în lot pentru a actualiza comenzile în loturi mai mici de câte 100 de înregistrări simultan, eliberând blocările între loturi.
  3. Adăugați un index în coloana OrderId pentru a accelera operațiunea de actualizare.
  4. Luați în considerare izolarea SNAPSHOT pentru operațiunile de citire pentru a reduce impactul blocării.

11.3 Studiu de caz: Identificarea execuțiilor excesive de interogări

Monitorizarea bazei de date arată că utilizarea procesorului a crescut treptat în ultima lună, dar nu au avut loc modificări evidente în codul aplicației.

11.3.1 Identificarea numărului de execuții anormale

Deschideți Monitorul de activitate și examinați panoul Interogări recente costisitoare:

  1. Filtrează după Execuții/min pentru a vedea interogările executate cel mai frecvent.
  2. Interogarea principală arată 37,000 de execuții pe minut - mult mai mult decât orice altă interogare.
  3. Faceți clic dreapta și selectați Editați textul interogării.
  4. Interogarea preia informații despre categoria de produse:
    SELECT CategoryId, CategoryName 
    FROM ProductCategories 
    WHERE CategoryId = @CategoryId;
    
  5. Această interogare simplă ar trebui să fie rapidă și memorabilă în cache, dar se execută de zeci de mii de ori pe minut.

11.3.2 Urmărirea către codul aplicației

În panoul Procese, găsiți sesiunile care execută această interogare:

  1. Rețineți Aplicatii coloana arată „ProductCatalogService”.
  2. Faceți clic dreapta pe una dintre aceste sesiuni și selectați Proces de urmărire în SQL Server profil.
  3. SQL Profiler arată că interogarea se execută în mod repetat, în succesiune rapidă, cu valori CategoryId diferite.
  4. Contactați echipa de dezvoltare care gestionează ProductCatalogService pentru revizuirea codului.

Revizuirea codului relevă problema: o modificare recentă preia liste de produse cu categorii. Pentru fiecare produs din setul de rezultate (adesea peste 1,000 de produse), codul efectuează un apel separat al bazei de date pentru a prelua informații despre categorie - o problemă clasică de interogare N+1.

11.3.3 Optimizarea aplicației

Implementați o soluție corectă:

  1. Modificați interogarea aplicației pentru a utiliza o JOIN care să preia produse și categoriile acestora într-un singur apel de bază de date:
    SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName
    FROM Products p
    INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId
    WHERE p.Active = 1;
    
  2. Implementați codul actualizat și monitorizați Monitorul de activitate.
  3. Verificați remedierea: Execuțiile pe minut pentru interogarea de categorie scad de la 37,000 la sub 100, iar utilizarea totală a procesorului scade cu 40%.
  4. Documentați lecția învățată și să le distribuiți echipei de dezvoltare pentru a preveni probleme similare în viitoarele modificări de cod.

12. Detectarea potențialei corupții a bazei de date

Deși Monitorul de activitate nu este conceput special pentru a detecta coruperea bazei de date, anumite modele din afișajul său pot sugera probleme de corupție subiacente care necesită investigații suplimentare.

12.1 Simptome ale unei potențiale corupții a bazei de date

Dacă există o corupție a bazei de date și aceasta este accesată, este posibil să observați ocazional:

1. În panoul Procese:

  • Sesiunile au fost blocate în starea SUSPENDATĂ cu tipuri de așteptare neobișnuite
  • Procese care afișează stări de eroare
  • Interogările eșuează în mod repetat

2. În panoul Așteptări resurse:

  • Tipuri de așteptare neobișnuite legate de I/O care ar putea indica probleme la disc (deși acest lucru indică mai probabil probleme hardware decât corupție logică)

3. În interogările recente despre costuri ridicate:

  • Interogări cu citiri fizice anormal de mari dacă încearcă în mod repetat să citească pagini corupte

12.2 Verificare suplimentară cu DBCC CHECKDB

Când Monitorul de activitate afișează simptome care sugerează o posibilă corupere, trebuie să executați imediat DBCC CHECKDB pentru a verifica integritatea bazei de date. Această comandă scanează toate paginile bazei de date, validează sumele de control și verifică dacă există erori de consistență logică.

Pentru a afla mai multe despre cum să utilizați DBCC CHECKDB pentru a verifica și remedia corupțiile bazei de date, consultați ghid complet DBCC CHECKDB.

12.3 Reparații cu unelte profesionale

Dacă DBCC CHECKDB confirmă coruperea bazei de date, aveți mai multe opțiuni pentru reparare:

13. Concluzie

SQL Server Monitorul de activitate reprezintă un instrument neprețuit pentru administratorii de baze de date, oferind informații imediate despre performanța serverului și ajutând la diagnosticarea rapidă și eficientă a problemelor.

13.1 Rezumatul punctelor cheie

În acest ghid, am explorat cum vă ajută Monitorul de activitate să înțelegeți și să depanați SQL Server performanţă:

  • Monitorul de activitate oferă vizibilitate în timp real asupra proceselor, așteptărilor, interogărilor și operațiunilor I/O prin intermediul unei interfețe grafice organizate.
  • Cele cinci panouri — Prezentare generală, Procese, Așteptări resurse, I/O fișiere de date și Interogări costisitoare recente — oferă fiecare perspective unice asupra activității serverului.
  • Scenariile comune de depanare, cum ar fi execuțiile excesive de interogări, lanțurile de blocare și utilizarea ridicată a CPU, devin gestionabile cu ajutorul unei investigații sistematice prin intermediul Monitorului de activitate.
  • Deși este puternic, Monitorul de activitate are limitări, inclusiv lipsa datelor istorice, gruparea tipurilor de așteptare și supraîncărcarea monitorizării, care îi afectează aplicabilitatea.
  • Suplimentarea Monitorului de activitate cu interogări DMV, sp_WhoIsActive, evenimente extinse și, eventual, instrumente terțe creează o strategie de monitorizare cuprinzătoare.
  • Respectarea celor mai bune practici pentru intervalele de reîmprospătare, închiderea Monitorului de activitate atunci când nu este utilizat și combinarea mai multor panouri pentru corelare maximizează valoarea acestuia, minimizând în același timp impactul.

13.2 Monitorul de activitate ca parte a setului dvs. de instrumente

Monitorul de activitate ar trebui să servească drept instrument de primă intervenție pentru investigațiile de performanță, nu ca singurul instrument. Punctul său forte constă în oferirea de vizibilitate imediată în timpul depanării active, ajutându-vă să determinați rapid dacă baza de date este blocajul și să identificați ce aspecte specifice necesită o investigație mai aprofundată.

Gândește-te la Monitorul de Activitate ca la un tablou de bord al mașinii tale - îți spune imediat dacă ceva este în neregulă și te ajută să identifici zona generală de problemă. Așa cum tabloul de bord al mașinii tale nu îți spune exact de ce s-a aprins martorul motorului, Monitorul de Activitate te îndreaptă către probleme fără a le dezvălui întotdeauna cauza completă. Această analiză mai profundă necesită instrumente și expertiză suplimentare.

Integrați Monitorul de activitate într-un set de instrumente mai amplu care include analiza planului de execuție, urmărirea statisticilor de așteptare, soluții de monitorizare istorică și cele mai bune practici de performanță. Folosiți-l împreună cu strategii de indexare adecvate, tehnici de optimizare a interogărilor și planificare a capacității.

13.3 Continuarea călătoriei tale de învățare

Stăpânirea instrumentului Activity Monitor este doar un pas în a deveni un administrator de baze de date eficient. Continuă să-ți dezvolți abilitățile prin:

  • Învățarea interpretării planurilor de execuție și identificarea operațiunilor ineficiente
  • Înțelegerea SQL Server Statisticile de așteptare și implicațiile acestora
  • Studierea tehnicilor de proiectare și optimizare a indexului
  • Explorarea SQL ServerArhitectura și modul în care procesează interogările
  • Practicarea metodologiilor sistematice de depanare a problemelor
  • Construirea de experiență cu evenimente extinse pentru urmărire detaliată
  • Înțelegerea nivelurilor de izolare a tranzacțiilor și a impactului acestora asupra performanței

Fiecare investigație de performanță cu Monitorul de activitate vă învață ceva nou despre cum SQL Server funcționează și modul în care aplicațiile interacționează cu bazele de date. Documentați-vă descoperirile, împărtășiți cunoștințe cu colegii și construiți o bibliotecă de soluții pentru probleme comune.

13.4 Resurse suplimentare

Extinde-ți cunoștințele cu aceste resurse valoroase:

14. Întrebări frecvente (FAQ)

Î: Ce este SQL Server ActivityMonitor?

A: SQL Server Monitorul de activitate este un instrument încorporat în SQL Server Management Studio care afișează informații în timp real despre procesele care rulează pe un SQL Server instanța și impactul acesteia asupra resurselor serverului. Acesta oferă un tablou de bord grafic cu cinci panouri care prezintă diferite aspecte ale activității serverului, inclusiv utilizarea procesorului, sarcinile în așteptare, ratele I/O, sesiunile active și interogările costisitoare.

Î: Cum deschid Monitorul de activitate în SSMS?

R: Puteți deschide Monitorul de activitate folosind patru metode: (1) Faceți clic pe pictograma Monitor de activitate din bara de instrumente SSMS, (2) Faceți clic dreapta pe SQL Server numele instanței în Object Explorer și selectați Monitor de activitate, (3) Apăsați Ctrl + Alt + A, sau (4) Configurați SSMS să îl lanseze automat prin Instrumente -> Opţiuni -> Mediu inconjurator -> Startup.

Î: Ce permisiuni am nevoie pentru a utiliza Monitorul de activitate?

A: Ai nevoie de VIZUALIZARE STAREA SERVERULUI permisiunea de a vedea majoritatea informațiilor din Monitorul de activitate. Pentru panoul I/O fișier de date, aveți nevoie și de fie CREAȚI BAZA DE DATE, MODIFICAȚI ORICE BAZĂ DE DATE, VEZI ORICE DEFINIȚIE permisiuni. Fără aceste permisiuni, Monitorul de activitate se poate deschide, dar afișează panouri goale.

Î: De ce este Monitorul meu de activitate pus în pauză sau nu funcționează?

A: Monitorul de activitate se întrerupe de obicei din cauza unor probleme de permisiuni, a unor versiuni SSMS învechite sau a conexiunilor la distanță dezactivate. Pentru a rezolva: (1) Actualizați la cea mai recentă versiune SSMS, (2) Verificați că aveți permisiunea VIEW SERVER STATE, (3) Verificați dacă conexiunile la distanță sunt activate pe SQL Server De exemplu, (4) Reporniți SSMS și (5) Încercați conectarea cu autentificarea Windows în loc de autentificarea SQL, dacă este cazul.

Î: Care este diferența dintre Monitorul de activitate și sp_WhoIsActive?

A: Activity Monitor este un instrument grafic încorporat în SSMS care oferă panouri organizate pentru diferite aspecte de monitorizare. sp_WhoIsActive este o procedură stocată gratuită, creată de comunitate, care returnează informații detaliate despre sesiune într-un singur set de rezultate, cu tipuri de așteptare mai specifice, detalii de blocare și opțiuni de personalizare decât Activity Monitor. Activity Monitor este mai bun pentru explorarea vizuală, în timp ce sp_WhoIsActive excelează la monitorizarea scriptată și oferă informații mai detaliate.

Î: Monitorul de activitate afectează performanța serverului?

R: Da, Monitorul de activitate are o suprasarcină măsurabilă, deoarece interoghează DMV-urile sistemului la fiecare interval de reîmprospătare. Impactul crește odată cu ratele de reîmprospătare mai mici - Microsoft avertizează că intervalele sub 10 secunde pot afecta performanța serverului. Închideți întotdeauna Monitorul de activitate atunci când nu îl utilizați în mod activ și luați în considerare intervale de reîmprospătare de 30-60 de secunde pe serverele de producție aflate sub sarcină mare.

Î: Pot obține date din Monitorul de activitate folosind T-SQL?

R: Da, Monitorul de activitate interoghează vizualizări de gestionare dinamică a sistemului, cum ar fi sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats și sys.dm_exec_query_stats. Puteți interoga aceste DMV-uri direct folosind T-SQL pentru a recupera informații echivalente programatic, permițând scripturi de monitorizare personalizate și colectarea automată a datelor.

Î: Care este intervalul implicit de actualizare?

A: Intervalul de reîmprospătare implicit este de 10 secunde. Puteți modifica acest interval făcând clic dreapta oriunde în panoul Prezentare generală, selectând Interval de reîmprospătareși alegând dintre opțiunile predefinite: 1 secundă, 5 secunde, 10 secunde, 30 de secunde, 1 minut sau 1 oră. Intervalele mai mici oferă mai multe vizualizări în timp real, dar cresc cheltuielile de monitorizare.

Î: Cum pot deschide automat Monitorul de activitate la pornirea SSMS?

A: Configurați lansarea automată prin opțiunile SSMS: Navigați la Instrumente -> Opţiuni -> Mediu inconjurator -> Startup, Apoi selectați Deschideți Exploratorul de obiecte și Monitorul de activitate de la La pornire meniul derulant. Monitorul de activitate se va deschide automat de fiecare dată când vă conectați la un server din SSMS.

Î: Care sunt limitările Monitorului de activitate?

R: Printre limitările cheie se numără: (1) Nu există stocarea datelor istorice sau capacități de evidențiere a tendințelor, (2) Tipurile de așteptare sunt grupate în categorii, nu sunt afișate în mod specific, (3) Este posibil ca unele tipuri de așteptare, cum ar fi CXPACKET, să nu apară, (4) Instantaneele la un moment dat pot omite probleme tranzitorii, (5) Suprasarcina de monitorizare poate afecta serverele ocupate, (6) Nu există un mecanism de alertare pentru monitorizare proactivă și (7) Nu se pot agrega date pe mai multe SQL Server instanțe. Pentru aceste nevoi, suplimentați Monitorul de activitate cu Evenimente extinse, seturi de colectare a datelor sau instrumente de monitorizare terțe.


Despre autor

Yuan Sheng este un administrator senior de baze de date (DBA) cu peste 10 ani de experiență în SQL Server medii de lucru și managementul bazelor de date la nivel de întreprindere. A rezolvat cu succes sute de scenarii de recuperare a bazelor de date în cadrul unor organizații din domeniul serviciilor financiare, al sănătății și al producției.

Yuan este specializat în SQL Server recuperarea bazei de date, soluții de înaltă disponibilitateși optimizarea performanței. Experiența sa practică vastă include gestionarea bazelor de date de mai mulți terabyți, implementarea grupurilor de disponibilitate Always On și dezvoltarea de strategii automate de backup și recuperare pentru sistemele critice ale afacerii.

Prin expertiza sa tehnică și abordarea practică, Yuan se concentrează pe crearea de ghiduri complete care ajută administratorii de baze de date și profesioniștii IT să rezolve probleme complexe. SQL Server provocări eficiente. El se menține la curent cu cele mai recente SQL Server versiunilor de software și tehnologiilor de baze de date în continuă evoluție ale Microsoft, testând periodic scenarii de recuperare pentru a se asigura că recomandările sale reflectă cele mai bune practici din lumea reală.

Ai întrebări despre SQL Server recuperare sau aveți nevoie de îndrumări suplimentare pentru depanarea bazei de date? Yuan vă urează bun venit pentru a vă ajuta. feedback și sugestii pentru îmbunătățirea acestor resurse tehnice.

Distribuie acum: