Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 2617|Răspunde: 2

[Bacșișuri] SQL Server folosește evenimente extinse pentru a urmări problemele de blocaj

[Copiază linkul]
Postat pe 02.03.2024 19:13:04 | | | |
Cerințe: Există multe motive pentru care baza de date SQL Server cauzează blocaje; în producție, oricine poate întâmpina probleme de blocaje, iar cauza specifică poate să nu fie localizată doar pe baza informațiilor anormale ale blocajelor aplicațiilor, așa că este necesar să se folosească evenimente de extensie în SQL Server pentru a urmări problemele blocajelor și a înregistra detaliile specifice privind momentul în care apar blocajele.

Prezentare generală extinsă a evenimentului

Evenimentele extinse sunt o funcție ușoară de monitorizare a performanței care permite utilizatorilor să colecteze datele necesare pentru a monitoriza și rezolva problemele. Această funcție vă permite să vizualizați detalii despre operațiunile interne ale motorului de date pentru monitorizarea performanței și rezolvarea problemelor.

Cu arhitectura Extended Events (XEvents), utilizatorii pot folosi cât de multe sau cât de puține date au nevoie pentru a monitoriza, identifica sau depana performanța SQL Server, Azure SQL Database și Azure SQL Managed Instance. Evenimentele extinse sunt foarte configurabile, ușoare și scalabile foarte bine.

Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.


Cauzele blocajelor

Blocajele sunt cauzate de blocaje concurente de concurență într-o bază de date, de obicei în tranzacții în mai mulți pași. Fiecare sesiune utilizator poate avea una sau mai multe sarcini care rulează în numele său, fiecare sarcină poate prelua sau aștepta să recupereze diverse resurse. Următoarele tipuri de resurse pot cauza blocaje și, în cele din urmă, pot duce la blocaje.

  • Blocaje: Blocajele care așteaptă să preia resurse precum obiecte, pagini, rânduri, metadate și aplicații pot cauza blocaje. De exemplu, tranzacția T1 are un blocaj partajat (blocaj S) pe rândul r1 și așteaptă să obțină un blocaj exclusiv (blocaj X) pentru rândul r2. Tranzacția T2 are un blocaj partajat (blocaj S) pe rândul r2 și așteaptă să obțină un blocaj exclusiv (blocaj X) pentru rândul r1. Aceasta duce la o buclă de blocare în care atât T1, cât și T2 așteaptă ca celălalt să elibereze resursa blocată.
  • Fire de lucruri: Coada sarcinilor pentru firele de lucru disponibile poate cauza blocaje. Dacă o sarcină aflată în coadă are o resursă care blochează toate firele worker fire, va rezulta un blocaj. De exemplu, după ce sesiunea S1 începe o tranzacție și dobândește un blocaj partajat (S-lock) pentru linia r1, acesta intră în repaus. O sesiune activă care rulează pe toate firele worker disponibile încearcă să obțină un blocaj exclusiv (X-lock) pentru linia r1. Pentru că sesiunea S1 nu poate obține un thread de lucru, nu poate să commită tranzacția și să elibereze blocajul pe linia r1. Acest lucru va duce la un blocaj.
  • Memorie: Un blocaj poate apărea atunci când o cerere concurentă așteaptă să câștige memorie, iar memoria disponibilă în prezent nu este suficientă pentru nevoile sale. De exemplu, două interogări concurente (Q1 și Q2) sunt executate ca funcții definite de utilizator, dobândind 10 MB, respectiv 20 MB de memorie. Dacă fiecare interogare necesită 30 MB și memoria totală disponibilă este de 20 MB, Q1 și Q2 trebuie să aștepte ca cealaltă să elibereze memoria, ceea ce va duce la un blocaj.
  • Interogări paralele și resurse legate de execuție: Coordonatorii de procesare, generatoarele sau firele de consum asociate de obicei porturilor comutate se pot bloca reciproc atunci când conțin cel puțin un proces care nu face parte dintr-o interogare paralelă, rezultând blocaje. În plus, atunci când o interogare paralelă începe execuția, SQL Server determină gradul de paralelism sau numărul de fire de lucru pe baza sarcinii de lucru curente. Un blocaj poate apărea dacă apare o schimbare neașteptată a sarcinii de lucru a sistemului, de exemplu, când o nouă interogare începe să ruleze în server sau când sistemul rămâne fără fire de lucru de lucru.
  • Resurse cu Set de Rezultate de Activitate Multiplă (MARS): Aceste resurse sunt folosite pentru a controla execuția încrucișată a mai multor cereri de activitate sub MARS.


Referință:
Autentificarea cu hyperlink este vizibilă.

Înregistrarea extinsă a evenimentelor prin blocaje

Creează un eveniment de extensie pentru a înregistra informațiile deadlock cu următoarea comandă:


Începe o sesiune de eveniment de blocaj

Opriți o sesiune de eveniment

Șterge o sesiune de eveniment

Interoghează datele sesiunilor evenimentelor


Blocaje de teste

Creează un nou tabel Tab1 pentru testare, creează două ferestre noi de execuție și execută următoarele comenzi, respectiv:

Un blocaj apare astfel:

O tranzacție (ID proces 68) cu un alt proces este blocată pe o resursă blocată și a fost selectată ca victimă a blocajului. Vă rugăm să reluați tranzacția.
Tranzacția (ID proces 68) a fost blocată pe resurse de blocare cu un alt proces și a fost aleasă ca victimă a blocajului. Rerulează tranzacția.


Vizualizați datele sesiunii evenimentului așa cum sunt prezentate în figura următoare:



Datele XML detaliate sunt următoarele:


(Sfârșit)





Precedent:Optimizarea performanței .NET/C# folosind interogarea paralelă PLINQ
Următor:Execuția codului în Visual Studio folosind fereastra C# Interactive
 Proprietarul| Postat pe 02.03.2024 19:14:35 |
Extinde calea implicită a fișierului de eveniment:

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\deadlock_monitor_0_133538477770860000.xel
 Proprietarul| Postat pe 02.03.2024 19:16:54 |
Creează un nou tabel tab1 pentru a testa scriptul SQL

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com