Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 19946|Atbildi: 3

[Avots] Datu bāzes slēdzenes NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Kopēt saiti]
Publicēts 14.01.2021 15:23:14 | | | |
NOLOCK
Ja šī opcija ir atlasīta, SQL Server lasa vai modificē datus bez bloķēšanas. Šādā gadījumā lietotājs var nolasīt datus no neveikta darījuma vai atcelšanas, ko sauc par "netīrajiem datiem".

AIZTURĒŠANA
Ja šī opcija ir atlasīta, SQL Server saglabā šo koplietojamo bloķēšanu līdz visas transakcijas beigām, neatlaižot to ceļā.

UPDLOCK
Ja šī opcija ir atlasīta, SQL Server izmanto modificēšanas bloķēšanu, nevis koplietojamo slēdzeni, lasot datus, un saglabā šo bloķēšanu līdz visas transakcijas vai komandas beigām. Šī opcija nodrošina, ka vairāki procesi var lasīt datus vienlaicīgi, bet tikai šis process var modificēt datus.

TABLOCK
Ja šī opcija ir atlasīta, SQL Server ievieto koplietojamu bloķēšanu visai tabulai, līdz komanda beidzas. Šī opcija nodrošina, ka citi procesi var tikai nolasīt, nevis modificēt datus.

PAGLOCK
Šī opcija ir noklusējuma opcija, un, ja tā ir atlasīta, SQL Server izmanto koplietojamu lapas bloķēšanu.

TABLOCKX (ekskluzīva galda slēdzene)
Ja šī opcija ir atlasīta, SQL Server bloķē visu tabulu līdz komandas vai transakcijas beigām. Tas neļaus citiem procesiem lasīt vai modificēt datus tabulā.

HOLDLOCK saglabā koplietojamo bloķēšanu, līdz visa transakcija ir pabeigta, un tā ir jāatlaiž, tiklīdz bloķētais objekts nav nepieciešams, kas ir vienāds ar SERIALIZABLE transakcijas izolācijas līmeni

NOLOCK priekšraksts tiek izpildīts, neizsniedzot koplietojamu slēdzeni, pieļaujot netīrus lasījumus, kas ir vienādi ar READ UNCOMMITTED darījumu izolācijas līmeni

PAGLOCK izmanto vairākas lappušu bloķēšanas, kur tiek izmantota viena tabulas bloķēšana

READPAST ļauj sql serverim izlaist visas bloķētās rindas un izpildīt transakcijas, un READ UNCOMMITTED transakciju izolācijas līmeņiem izlaist tikai RID slēdzenes, nevis lapas, zonas un tabulas bloķēšanas

ROWLOCK piespiež airu slēdzenes izmantošanu

TABLOCKX ievieš ekskluzīvas tabulas līmeņa bloķēšanas izmantošanu, kas neļauj jebkuram citam darījumam izmantot tabulu darījuma laikā

UPLOCK piespiež izmantot atjauninājumus, lasot tabulu bez koplietojamas bloķēšanas

Piezīme: Atšķirība starp tabulas bloķēšanu datu bāzē
SELECT * FROM tabula AR (HOLDLOCK) Citas transakcijas var nolasīt tabulu, bet nevar atjaunināt vai izdzēst
SELECT * FROM tabula AR (TABLOCKX) Citi darījumi nevar lasīt, atjaunināt un dzēst tabulas




Iepriekšējo:Win10 attālās darbvirsmas divu ekrānu displejs
Nākamo:.NET/C# Izveidojiet ETH maka kontu un verifikācijas paroli, pamatojoties uz Nethereum [ar avota kodu]
 Saimnieks| Publicēts 14.01.2021 16:53:24 |
Pārbaudiet TABLOCKX slēdzeni

Testa sql ir šāds:


C# koda pārbaude:


Atklāšana,Visa tabula ir bloķēta, un datus var vaicāt tikai tad, kad darījums ir izpildīts, kā parādīts attēlā:



Izdzēsiet AR(TABLOCKX) un atjauniniet datus tikai ar ID 1, tests ir šāds:



Tā kā 2. un 4. uzdevums neietver datus ar ID 1, vaicājums ir ļoti ātrs, un 3 un 4 pirms vaicājuma veikšanas ir jāgaida, līdz darījums tiks pabeigts.

Darbība, modificējot datus

Izpildītā lasīšanas transakcijā, kurā tiek izmantota rindu versiju izveide, atlasiet atjaunināmās rindas, izmantojot bloķēšanas skenēšanu, kur, nolasot datu vērtību, datu rindai tiek lietota atjaunināšanas bloķēšana (U-lock). Tas ir tas pats, kas apstiprināta lasīšanas transakcija, kurā netiek izmantota rindas versiju izveide. Ja datu rinda neatbilst atjaunināšanas kritērijiem, šajā rindā tiek atbrīvota atjaunināšanas bloķēšana, un nākamā rinda tiek bloķēta un skenēta.

Atjaunināšanas bloķēšana (U): bloķēšanas režīms, kas novērš strupceļu, kur divi darījumi vispirms nolasa datu resursu Modifikācijas gadījumā koplietojamu slēdzeņu un ekskluzīvu slēdzeņu izmantošana dažkārt izraisa strupceļus, savukārt atjaunināšanas slēdzeņu izmantošana var izvairīties no strupceļa rašanās. Resursa atjaunināšanas bloķēšanu vienlaikus var piešķirt tikai vienai transakcijai, un, ja resurss ir jāmodificē, atjaunināšanas bloķēšana kļūst par ekskluzīvu slēdzeni, pretējā gadījumā tā kļūst par koplietojamu slēdzeni.

Hipersaites pieteikšanās ir redzama.

 Saimnieks| Publicēts 28.01.2021 17:30:51 |
Jautājums:

A A
iestatīt kolonnu1 = 1
kur idx = 1
Kad sqlserver izpilda atjaunināšanas paziņojumu, tas bloķē visu tabulu

Analīze:

pulksteņa struktūra,Bez primārās atslēgas nevar bloķēt tikai rindas
 Saimnieks| Publicēts 02.05.2023 11:47:24 |
Entītiju struktūras vaicājumu optimizācija ar(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com