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: 10821|Răspunde: 0

[Sursă] sql SELECT

[Copiază linkul]
Postat pe 08.01.2016 17:58:31 | | |

Obișnuiam să-i văd pe dezvoltatorii mei seniori folosind WITH (NOLOCK) când interogau în SQL Server și mă întrebam de ce folosesc asta. Acum am explorat-o și am descoperit că este utilă pentru a îmbunătăți performanța la executarea interogării. Totuși, există un dezavantaj în a o folosi. Dezavantajul este că s-ar putea să nu fii sigur că primești datele care sunt actualizate în prezent în tabel, adică, fără protecție la blocare, nu poți fi garantat că datele nu sunt se schimbă în timpul rulării interogării. Am consultat acest link și l-am găsit destul de util.

Pentru a îmbunătăți performanța interogărilor SQL, în general, prima considerație este crearea unui index. De fapt, pe lângă stabilirea indexurilor, atunci când plasăm comenzi SQL, adăugarea unei secțiuni WITH (NOLOCK) la sintaxă poate îmbunătăți fenomenul de blocare a seturilor de date într-un mediu cu un număr mare de interogări online, îmbunătățind astfel performanța interogării.

Totuși, un lucru de reținut este că SQL SELECT cu (NOLOCK) poate cauza o citire murdară.

De exemplu:




Pentru că SQL Server efectuează verificarea corespunzătoare a consistenței blocărilor. Pentru a îmbunătăți performanța generală a interogării bazei de date, adăugați WITH (NOLOCK) la finalul numelui tabelului în sintaxa SELECT, deși (NOLOCK) este de asemenea acceptabil, dar Microsoft recomandă în continuare adăugarea WITH.

Pe lângă simpla SELECT, poți folosi și sintaxa SELECT cu JOIN. Dar comenzile DELETE, INSERT, UPDATE și alte comenzi care necesită tranzacții nu sunt bune...

Unele fișiere spun că eficiența interogărilor SQL poate fi crescută cu 33% cu WITH (NOLOCK).
Adăugarea WITH (NOLOCK) indică SQL Server că comanda noastră SELECT nu trebuie să ia în considerare starea blocării tranzacțiilor a tabelului curent, astfel că performanța va fi semnificativ îmbunătățită, iar fenomenul blocării sistemului de baze de date va fi redus semnificativ (inclusiv blocarea moartă).

Un lucru de reținut este că, deoarece WITH (NOLOCK) nu ia în considerare blocarea tranzacțiilor din tabelul curent, atunci când există date în mai multe faze ale unei tranzacții (de exemplu, o tranzacție pe mai multe tabele – > cum ar fi un sistem de retragere), WITH (NOLOCK) va ignora datele care procesează în prezent procesul tranzacției...

Ca să fiu direct, atunci când folosești NoLock, permite citirea datelor modificate, dar tranzacția nu a fost încă finalizată. Prin urmare, dacă trebuie să iei în considerare integritatea în timp real a datelor tranzacțiilor, ar trebui să te gândești cu atenție la utilizarea WITH (NOLOCK).

Dacă nu trebuie să iei în considerare tranzacțiile, WITH (NOLOCK) poate fi o referință utilă.

Notă 1: CU ( < table_hint > )
Specifică scanarea tabelului, unul sau mai mulți indici folosiți de optimizatorul de interogări,
Sau de către optimizatorul de interogări pentru a valorifica acest tabel de date și a folosi modul de blocare pentru această afirmație.

Notă 2: WITH (NOLOCK) este echivalent cu READ UNCOMMITTED

În final, să vorbim despre câteva mici diferențe între nolock și with(nolock):
1: Sinonimele în SQL05, doar cu (nolock) sunt suportate;
2: cu (nolock) se scrie foarte ușor și apoi se specifică indexul.
Când interoghezi instrucțiuni între servere, nu poți folosi cu (nolock), doar cu nolock
Când interogezi pe același server, pot fi folosite atât cu (nolock), cât și cu nolock
Cum ar fi
Cod SQL
select * din [IP].a.dbo.table1 cu (nolock) Acest lucru te va solicita eroarea select * from a.dbo.table1 cu (nolock). Acest lucru va funcționa




Precedent:C# ascunde cifra din mijloc a numărului ID
Următor:jquery încarcă js cu ajax
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