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

Vaade: 8936|Vastuse: 0

SQL lukustab NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Kopeeri link]
Postitatud 20.07.2016 14:02:51 | | |

NOLOCK
Kui see valik on valitud, loeb või muudab SQL Server andmeid ilma lukustusteta. Sellisel juhul võib kasutaja lugeda andmeid Uncommitted Transaction ehk Roll Back'ist, mida nimetatakse "räpasteks andmeteks".

KINNIHOIDMINE
Kui see valik on valitud, hoiab SQL Server seda jagatud lukku kuni kogu tehingu lõpuni, ilma et seda teel vabastaks.

UPDLOCK
Kui see valik on valitud, kasutab SQL Server andmete lugemisel jagatud luku asemel modify lock'i ja hoiab seda lukku kuni kogu tehingu või käsu lõpuni. See valik tagab, et mitu protsessi saavad andmeid korraga lugeda, kuid ainult see protsess saab andmeid muuta.

TABLOCK
Kui see valik on valitud, paneb SQL Server kogu tabelile jagatud luku kuni käsu lõpuni. See valik tagab, et teised protsessid saavad andmeid lugeda, mitte muuta.

PAGLOCK
See valik on vaikimisi valik ning kui see valitakse, kasutab SQL Server jagatud lehe lukku.

TABLOCKX (eksklusiivne laualukk)
Kui see valik on valitud, paneb SQL Server luku kogu tabelile, kuni käsk või tehing lõpeb. See takistab teistel protsessidel tabelis olevaid andmeid lugeda või muuta.

HOLDLOCK hoiab jagatud lukku kuni kogu tehingu lõpetamiseni ning peaks vabastama kohe, kui lukustatud objekti enam vaja ei ole, mis võrdub SERIALISEERITAVA tehinguisolatsiooni tasemega

NOLOCK-lause täidetakse ilma jagatud lukustuseta, võimaldades räpaseid lugemisi, mis on võrdne READ UNCOMMITTED tehingu isoleerimise tasemega

PAGLOCK kasutab mitut leheküljelukku, kus kasutatakse ühte tabelilukku

READPAST võimaldab SQL serveril vahele jätta kõik lukustatud read ja täita tehinguid ning READ UNCOMCOMITY-tehingu isolatsioonitasemete puhul vahele jätta ainult RID-lukud, mitte lehe-, tsooni- ja tabelilukud

ROWLOCK nõuab ridalukkude kasutamist

TABLOCKX rakendab eksklusiivset tabelitasandi lukustust, mis takistab teistel tehingutel tabelit tehingu ajal kasutada

UPLOCK sunnib uuendusi kasutama, kui loetakse tabelit ilma jagatud lukustuseta

Märkus: Erinevus tabeli lukustamise vahel andmebaasis
SELECT * FROM tabelist WITH (HOLDLOCK) Teised tehingud võivad tabelit lugeda, kuid ei saa uuendada ega kustutada
SELECT * FROM table WITH (TABLOCKX) Teised tehingud ei saa tabeleid lugeda, uuendada ega kustutada




Eelmine:Lukud, räpased lugemised, kordumatud lugemised ja valed lugemised SQL-is
Järgmine:SQL Server vaatab ummikseisu ja vabastab selle
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