See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 2617|Vastuse: 2

[Nõuanded] SQL Server kasutab pikendatud sündmusi, et jälgida seiskumisprobleeme

[Kopeeri link]
Postitatud 02.03.2024 19:13:04 | | | |
Nõuded: SQL Serveri andmebaas põhjustab ummikseisusid mitmel põhjusel; tootmises võivad kõik kokku puutuda ummikseisuga ning konkreetset põhjust ei pruugi leida ainult rakenduse ummikseisu ebanormaalse info põhjal, seega on vajalik kasutada SQL Serveri laiendussündmusi, et jälgida ummikseisu probleeme ja salvestada täpsed andmed, millal ummikseisud tekivad.

Pikendatud sündmuse ülevaade

Extended Events on kerge jõudluse jälgimise funktsioon, mis võimaldab kasutajatel koguda vajalikke andmeid probleemide jälgimiseks ja lahendamiseks. See funktsioon võimaldab teil vaadata andmemootori sisemiste toimingute üksikasju jõudluse jälgimiseks ja probleemide lahendamisega seotud eesmärkidel.

Extended Events (XEvents) arhitektuuriga saavad kasutajad kasutada nii palju või vähe andmeid, kui vaja, et jälgida, tuvastada või tõrkeotsingut teha SQL Serveri, Azure SQL Database'i ja Azure SQL Managed Instance'i jõudlust. Pikendatud sündmused on väga konfigureeritavad, kerged ja hästi skaleeritavad.

Viide:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.


Ummikseisu põhjused

Ummikseisud tekivad konkureerivate samaaegsete lukustuste tõttu andmebaasis, tavaliselt mitmeastmelistes tehingutes. Iga kasutajasessiooni nimel võib olla üks või mitu ülesannet, kus iga ülesanne võib tuua või oodata erinevate ressursside toomist. Järgnevad ressursid võivad põhjustada blokeerimist ja lõpuks viia ummikseisuni.

  • Lukud: Lukud, mis ootavad ressursside nagu objektid, lehed, read, metaandmed ja rakendused toomist, võivad põhjustada ummikseisu. Näiteks tehingul T1 on jagatud lukk (S lukk) reas r1 ja see ootab, et saada eksklusiivne lukk (X lukk) reas r2. Tehingul T2 on jagatud lukk (S lukk) reas r2 ja see ootab, et saada eksklusiivne lukk (X lukustus) reas r1. See tekitab lukustusahela, kus nii T1 kui T2 ootavad, kuni üksteist lukustatud ressursi vabastatakse.
  • Töötajate lõimed: Tööde järjekorras olevad töötajalõimed võivad põhjustada ummikseisu. Kui järjekorras oleval ülesandel on ressurss, mis blokeerib kõik töötaja lõimed, tekib ummik. Näiteks pärast seda, kui sessioon S1 alustab tehingut ja omandab jagatud luku (S-luku) rea r1 jaoks, läheb see unerežiimi. Aktiivne sessioon, mis töötab kõigil saadaolevatel töölõimedel, püüab saada eksklusiivset lukku (X-lukustust) joone r1 jaoks. Kuna sessioon S1 ei saa töötajalõime, ei saa ta tehingut kinnitada ja lukustust r1 reale vabastada. See viib ummikseisuni.
  • Mälu: Ummik võib tekkida siis, kui samaaegne päring ootab mälu saamist ja hetkel saadaolev mälu ei kata selle vajadusi. Näiteks käivitatakse kaks samaaegset päringut (Q1 ja Q2) kasutaja määratud funktsioonidena, omandades vastavalt 10 MB ja 20 MB mälu. Kui iga päring nõuab 30 MB ja kogu vaba mälu on 20 MB, peavad Q1 ja Q2 ootama, kuni mälu vabanevad, mis põhjustab ummikseisu.
  • Paralleelsete päringute ja täitmisega seotud ressursid: Töötlemiskoordinaatorid, generaatorid või tarbijalõimed, mis on tavaliselt seotud lülitatud portidega, võivad üksteist blokeerida, kui neil on vähemalt üks protsess, mis ei kuulu paralleelpäringusse, põhjustades ummikseisu. Lisaks, kui paralleelpäring alustab täitmist, määrab SQL Server paralleelsuse astme või töölõimede arvu vastavalt praegusele töökoormusele. Ummik võib tekkida, kui süsteemi töökoormuses toimub ootamatu muutus, näiteks kui serveris hakkab jooksma uus päring või kui süsteemil saavad töölõimed otsa.
  • Mitme tegevuse tulemuskomplekti (MARS) ressursid: Neid ressursse kasutatakse mitme tegevuspäringu risttäitmise juhtimiseks MARS-i raames.


Viide:
Hüperlingi sisselogimine on nähtav.

Deadlock pikendatud sündmuste logimine

Loo laienduse sündmus, et salvestada surma info järgmise käsuga:


Alusta ummikseisu ürituse sessiooni

Peata ürituse sessioon

Kustuta sündmuse sessioon

Päringu sündmuste sessiooni andmed


Testi ummikseisud

Loo uus Tab1 tabel testimiseks, loo kaks uut täitmisakent ja täida vastavalt järgmised käsud:

Seisakus tekib järgmiselt:

Tehing (protsessi ID 68) teise protsessiga on lukustatud ressursil ummikus ja valitud ummikseisu ohvriks. Palun tee tehing uuesti.
Tehing (Protsessi ID 68) oli lukustusressurssides teise protsessiga ummikus ja on valitud ummikseisu ohvriks. Tee tehing uuesti.


Vaadake sündmuste sessiooni andmeid järgmiselt joonisel:



Üksikasjalikud XML-andmed on järgmised:


(Lõpp)





Eelmine:.NET/C# jõudluse optimeerimine PLINQ paralleelse päringu abil
Järgmine:Koodi täitmine Visual Studios, kasutades C# interaktiivset akent
 Üürileandja| Postitatud 02.03.2024 19:14:35 |
Laienda sündmusfaili vaikimisi rada:

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\deadlock_monitor_0_133538477770860000.xel
 Üürileandja| Postitatud 02.03.2024 19:16:54 |
Loo uus tab1 tabel SQL-skripti testimiseks

Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com