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

Rodinys: 19946|Atsakyti: 3

[Šaltinis] Duomenų bazių užraktai NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Kopijuoti nuorodą]
Paskelbta 2021-01-14 15:23:14 | | | |
NOLOCK
Pasirinkus šią parinktį, SQL serveris skaito arba modifikuoja duomenis be jokių užraktų. Tokiu atveju vartotojas gali nuskaityti duomenis iš neįvykdytos operacijos arba atšaukimo, vadinamų "nešvariais duomenimis".

UŽRAKTAS
Pasirinkus šią parinktį, SQL serveris išlaiko šį bendrai naudojamą užraktą iki visos operacijos pabaigos, neatleisdamas jo kelyje.

UPDLOCK
Pasirinkus šią parinktį, SQL serveris skaitydamas duomenis naudoja modifikavimo užraktą, o ne bendrai naudojamą užraktą ir išlaiko šį užraktą iki visos operacijos ar komandos pabaigos. Ši parinktis užtikrina, kad keli procesai gali nuskaityti duomenis vienu metu, tačiau tik šis procesas gali modifikuoti duomenis.

TABLOKAS
Pasirinkus šią parinktį, SQL serveris užraktuos visą lentelę, kol komanda baigsis. Ši parinktis užtikrina, kad kiti procesai gali tik nuskaityti, o ne keisti duomenis.

PAGLOCK
Ši parinktis yra numatytoji parinktis, o pasirinkus SQL serveris naudoja bendrai naudojamą puslapio užraktą.

TABLOCKX (išskirtinis stalo užraktas)
Pasirinkus šią parinktį, SQL serveris užrakins visą lentelę, kol baigsis komanda arba operacija. Tai neleis kitiems procesams skaityti ar modifikuoti lentelės duomenų.

HOLDLOCK išlaiko bendrai naudojamą užraktą, kol bus baigta visa operacija, ir turėtų būti atleistas, kai tik užrakintas objektas nebereikalingas, lygus SERIALIZABLE operacijos izoliavimo lygiui

NOLOCK pareiškimas vykdomas neišduodant bendro užrakto, leidžiant nešvarius nuskaitymus, kurie yra lygūs READ UNCOMMITTED operacijos izoliacijos lygiui

PAGLOCK naudoja kelis puslapių užraktus, kai naudojamas vienas stalo užraktas

READPAST leidžia sql serveriui praleisti visas užrakintas eilutes ir vykdyti operacijas, o READ UNCOMMITTED operacijų izoliavimo lygiams praleisti tik RID užraktus, o ne puslapių, zonų ir lentelių užraktus

ROWLOCK užtikrina rowlocks naudojimą

TABLOCKX priverčia naudoti išskirtinį stalo lygio užraktą, kuris neleidžia jokiai kitai operacijai naudoti lentelę operacijos metu

UPLOCK priverčia naudoti naujinimus skaitant lentelę be bendro užrakto

Pastaba: Skirtumas tarp lentelės užrakinimo duomenų bazėje
SELECT * FROM lentelė SU (HOLDLOCK) Kitos operacijos gali skaityti lentelę, bet negali atnaujinti ar panaikinti
SELECT * FROM lentelė SU (TABLOCKX) Kitos operacijos negali skaityti, atnaujinti ir ištrinti lentelių




Ankstesnis:Win10 nuotolinio darbalaukio dviejų ekranų ekranas
Kitą:.NET/C# Sukurkite ETH piniginės paskyrą ir patvirtinimo slaptažodį pagal Nethereum [su šaltinio kodu]
 Savininkas| Paskelbta 2021-01-14 16:53:24 |
Išbandykite TABLOCKX užraktą

Bandomasis sql yra toks:


C# kodo testavimas:


Atradimas,Visa lentelė užrakinta, o duomenų užklausą galima pateikti tik įvykdžius operaciją, kaip parodyta toliau pateiktame paveikslėlyje:



Ištrinkite WITH(TABLOCKX) ir atnaujinkite duomenis tik su ID 1, testas yra toks:



Kadangi 2 ir 4 užduotys neapima duomenų su ID 1, užklausa yra labai greita, o 3 ir 4 reikia palaukti, kol operacija bus baigta prieš pateikiant užklausą.

Veikimas modifikuojant duomenis

Patvirtintoje skaitymo operacijoje, kurioje naudojamas eilučių versijų kūrimas, pasirinkite eilutes, kurias norite atnaujinti naudodami blokavimo nuskaitymą, kai duomenų eilutei taikomas naujinimo užraktas (U užraktas), kai nuskaitoma duomenų reikšmė. Tai tas pats, kas patvirtinta skaitymo operacija, kuri nenaudoja eilutės versijų. Jei duomenų eilutė neatitinka naujinimo kriterijų, toje eilutėje atleidžiamas naujinimo užraktas, o kita eilutė užrakinama ir nuskaitoma.

Atnaujinimo užraktas (U): užrakto režimas, kuris apsaugo nuo aklavietės, kai dvi operacijos pirmiausia nuskaito duomenų išteklius Modifikavimo atveju bendrų spynų ir išskirtinių užraktų naudojimas kartais sukelia aklavietę, o naudojant atnaujinimo užraktus galima išvengti aklavietės. Ištekliaus naujinimo užraktas vienu metu gali būti priskirtas tik vienai operacijai, o jei išteklius reikia modifikuoti, naujinimo užraktas tampa išskirtiniu užraktu, kitu atveju jis tampa bendrai naudojamu užraktu.

Hipersaito prisijungimas matomas.

 Savininkas| Paskelbta 2021-01-28 17:30:51 |
Išduoti:

Jurgita Aleksandravičiūtė
nustatyti stulpelį1 = 1
kur idx = 1
Kai sqlserver vykdo atnaujinimo sakinį, jis užrakina visą lentelę

Analizė:

laikrodžio struktūra,Be pirminio rakto negalite užrakinti tik eilučių
 Savininkas| Paskelbta 2023-05-02 11:47:24 |
Objekto sistemos užklausų optimizavimas SU(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html
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