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)
|