Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 8936|Răspunde: 0

Blocări SQL NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Copiază linkul]
Postat pe 20.07.2016 14:02:51 | | |

NOLOCK
Când această opțiune este selectată, SQL Server citește sau modifică datele fără niciun blocaj. În acest caz, utilizatorul poate citi date dintr-o Tranzacție Neangajată sau Anulare, cunoscută sub numele de "date murdare".

BLOCAT DE REZERVĂ
Când această opțiune este selectată, SQL Server menține această blocare partajată până la sfârșitul întregii tranzacții, fără a o elibera pe drum.

ACTUALIZARE
Când această opțiune este selectată, SQL Server folosește un blocaj modify în loc de un blocaj partajat la citirea datelor și menține acest blocaj până la sfârșitul întregii tranzacții sau comenzi. Această opțiune asigură că mai multe procese pot citi datele simultan, dar doar acel proces poate modifica datele.

TABLOCK
Când această opțiune este selectată, SQL Server va plasa un blocaj comun pe întregul tabel până la sfârșitul comenzii. Această opțiune asigură că alte procese pot doar citi, nu pot modifica datele.

PAGLOCK
Această opțiune este cea implicită, iar când este selectată, SQL Server folosește un blocat de pagină partajat.

TABLOCKX (Blocare exclusivă a tabelului)
Când această opțiune este selectată, SQL Server va plasa un blocat pe întregul tabel până la încheierea comenzii sau tranzacției. Acest lucru va împiedica alte procese să citească sau să modifice datele din tabel.

HOLDLOCK menține blocajul partajat până la finalizarea întregii tranzacții și ar trebui să fie eliberat imediat ce obiectul blocat nu mai este necesar, egal cu nivelul de izolare al tranzacțiilor SERIALIZABILE

Instrucțiunea NOLOCK este executată fără a emite un blocaj partajat, permițând citiri murdare, care este egal cu nivelul de izolare al tranzacțiilor READ UNCOMMITTED

PAGLOCK folosește multiple blocări de pagină unde se folosește un blocaj de tabel

READPAST permite serverului sql să sară peste orice linii blocate și să execute tranzacții, iar pentru nivelurile de izolare a tranzacțiilor READ UNCOMMITTED, să sară doar blocările RID, nu și blocările de pagină, zonă și tabel

ROWLOCK impune utilizarea rowlock-urilor

TABLOCKX impune utilizarea unui blocaj exclusiv la nivel de tabel, care împiedică orice altă tranzacție să folosească tabelul în timpul tranzacției

UPLOCK forțează utilizarea actualizărilor atunci când citești un tabel fără blocare partajată

Notă: Diferența dintre blocarea unui tabel într-o bază de date
SELECT * FROM table WITH (HOLDLOCK) Alte tranzacții pot citi tabelul, dar nu pot actualiza sau șterge
SELECT * FROM table WITH (TABLOCKX) Alte tranzacții nu pot citi, actualiza și șterge tabele




Precedent:Blocări, citiri murdare, citiri de nerepetat și citiri false în SQL
Următor:SQL Server analizează blocajul și îl eliberează
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com