Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 2617|Atsakyti: 2

[Patarimai] SQL serveris naudoja išplėstinius įvykius aklavietės problemoms sekti

[Kopijuoti nuorodą]
Paskelbta 2024-03-02 19:13:04 | | | |
Reikalavimai: Yra daug priežasčių, kodėl SQL serverio duomenų bazė sukelia aklavietes, gamyboje kiekvienas gali susidurti su aklavietės problemomis, o konkreti priežastis gali būti nustatyta ne pagal neįprastą informaciją apie programos aklavietes, todėl būtina naudoti plėtinio įvykius SQL serveryje, kad būtų galima stebėti aklavietės problemas ir įrašyti konkrečią informaciją apie aklavietę.

Išplėstinė įvykių apžvalga

Išplėstiniai įvykiai yra lengva našumo stebėjimo funkcija, leidžianti vartotojams rinkti duomenis, reikalingus problemoms stebėti ir spręsti. Ši funkcija leidžia peržiūrėti išsamią informaciją apie duomenų modulio vidines operacijas našumo stebėjimo ir problemų sprendimo tikslais.

Naudodami išplėstinių įvykių (XEvents) architektūrą, vartotojai gali naudoti tiek duomenų, kiek jiems reikia SQL serverio, "Azure SQL" duomenų bazės ir "Azure SQL Managed Instance" našumui stebėti, identifikuoti arba šalinti. Išplėstiniai įvykiai yra labai konfigūruojami, lengvi ir gerai keičiami.

Nuoroda:
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.


Aklavietės priežastys

Aklavietes sukelia konkuruojantys sutapimo užraktai duomenų bazėje, dažniausiai atliekant kelių veiksmų operacijas. Kiekviena vartotojo sesija gali turėti vieną ar daugiau užduočių, kurių kiekviena gali gauti arba laukti, kol gaus įvairius išteklius. Toliau nurodyti išteklių tipai gali sukelti blokavimą ir galiausiai sukelti aklavietę.

  • Užraktai: užraktai, laukiantys išteklių, pvz., objektų, puslapių, eilučių, metaduomenų ir programų, gali sukelti aklavietę. Pavyzdžiui, operacija T1 turi bendrą užraktą (S užraktą) r1 eilutėje ir laukia, kol gaus išskirtinį užraktą (X užraktą) r2 eilutei. Operacija T2 turi bendrą užraktą (S užraktą) r2 eilutėje ir laukia, kol gaus išskirtinį užraktą (X užraktą) r1 eilutei. Dėl to susidaro užrakto ciklas, kuriame T1 ir T2 laukia, kol vienas kitas išlaisvins užrakintą resursą.
  • Darbuotojo gijos: užduotys, esančios eilėje dėl galimų darbuotojų gijų, gali sukelti aklavietę. Jei eilėje esančioje užduotyje yra išteklius, kuris blokuoja visas darbuotojo gijas, tai sukels aklavietę. Pavyzdžiui, po sesijos S1 pradeda operaciją ir gauna bendrą užraktą (S-lock) linijai r1, ji pereina į miego režimą. Aktyvus seansas, veikiantis visose galimose darbininkų gijose, bando gauti išskirtinį užraktą (X-lock) linijai r1. Kadangi seansas S1 negali gauti darbininko gijos, jis negali patvirtinti operacijos ir atlaisvinti eilutės r1 užrakto. Tai sukels aklavietę.
  • Atmintis: Aklavietė gali įvykti, kai vienu metu užklausa laukia, kol gaus atmintį, o šiuo metu turimos atminties nepakanka jos poreikiams. Pavyzdžiui, dvi lygiagrečios užklausos (Q1 ir Q2) vykdomos kaip vartotojo nustatytos funkcijos, atitinkamai įgyjant 10 MB ir 20 MB atminties. Jei kiekvienai užklausai reikia 30 MB, o bendra laisva atmintis yra 20 MB, Q1 ir Q2 turi palaukti, kol vienas kitas atlaisvins atmintį, o tai sukels aklavietę.
  • Lygiagrečios užklausos ir vykdymo ištekliai: apdorojimo koordinatoriai, generatoriai arba vartotojų gijos, paprastai susijusios su perjungiamaisiais prievadais, gali blokuoti vienas kitą, kai juose yra bent vienas procesas, kuris nėra lygiagrečios užklausos dalis, todėl atsiranda aklavietė. Be to, kai pradedama vykdyti lygiagreti užklausa, SQL serveris nustato lygiagretumo laipsnį arba darbininkų gijų skaičių pagal esamą darbo krūvį. Aklavietė gali įvykti, jei netikėtai pasikeičia sistemos darbo krūvis, pvz., kai serveryje pradedama vykdyti nauja užklausa arba kai sistemoje baigiasi darbo gijos.
  • Kelių veiklos rezultatų rinkinio (MARS) ištekliai: šie ištekliai naudojami kelių veiklos užklausų kryžminiam vykdymui pagal MARS valdyti.


Nuoroda:
Hipersaito prisijungimas matomas.

Aklavietės išplėstinis įvykių registravimas

Sukurkite plėtinio įvykį, kad įrašytumėte aklavietės informaciją naudodami šią komandą:


Aklavietės įvykio seanso pradžia

Įvykio seanso sustabdymas

Įvykio seanso ištrynimas

Užklausos įvykio seanso duomenys


Bandymo aklavietės

Sukurkite naują Tab1 lentelę testavimui, sukurkite du naujus vykdymo langus ir atitinkamai vykdykite šias komandas:

Aklavietė įvyksta taip:

Operacija (proceso ID 68) su kitu procesu yra užblokuota užrakintame ištekliuje ir buvo pasirinkta kaip aklavietės auka. Paleiskite operaciją iš naujo.
Operacija (proceso ID 68) buvo užblokuota užrakto ištekliuose su kitu procesu ir buvo pasirinkta kaip aklavietės auka. Paleiskite operaciją iš naujo.


Peržiūrėkite įvykio seanso duomenis, kaip parodyta šiame paveikslėlyje:



Išsamūs XML duomenys yra tokie:


(Pabaiga)





Ankstesnis:.NET/C# našumo optimizavimas naudojant PLINQ lygiagrečią užklausą
Kitą:Kodo vykdymas "Visual Studio" naudojant C# interaktyvų langą
 Savininkas| Paskelbta 2024-03-02 19:14:35 |
Išplėsti numatytąjį įvykio failo kelią:

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\deadlock_monitor_0_133538477770860000.xel
 Savininkas| Paskelbta 2024-03-02 19:16:54 |
Sukurkite naują tab1 lentelę, kad išbandytumėte SQL scenarijų

Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com