SQL SERVER – Aplicarea NOLOCK la Fiecare Masă într-Select – SET TRANSACTION ISOLATION LEVEL CITIT NEANGAJATE

ieri, în timpul SQL Server Performance Tuning Atelier Practic, am intrat într-o situație foarte interesantă. În timpul reglării unei interogări am avut o situație în care a trebuit să verificăm dacă interogarea este blocată în timpul executării nu., Pentru a testa teoria noastră, a trebuit să punem un indiciu nolock pentru fiecare tabel al interogării lungi. Cu toate acestea, nu a fost posibil să se facă acest lucru, deoarece procedura stocată a fost super imensă și a implicat peste 90 de tabele și 14 vizualizări în mai multe instrucțiuni SQL. A fost într-adevăr o provocare uriașă pentru o echipă de dezvoltatori să modifice acel SP. Dacă vă confruntați vreodată cu astfel de situații, nu trebuie să vă stresați. Există o modalitate mult mai simplă de a citi datele neangajate.,

Înainte de a continua lectura acestui blog, vă rugăm să rețineți că eu personal nu preferați să utilizați pentru a NOLOCK indicii în treaba mea, ca-l va citi date murdare și de multe ori citind date nevalidate creează probleme cu integritatea bazei de date. Există mai multe moduri diferite de a regla interogarea, mai degrabă decât folosind indiciu NOLOCK sau folosind izolarea tranzacție citire neangajate.

să vedem mai întâi un exemplu simplu cum funcționează nolock hint cu mai multe tabele.,

acum vom converti același script pentru a utiliza izolarea tranzacțiilor neangajate.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDGOSELECT *FROM . ctINNER JOIN . spON ct.StateProvinceID = sp.StateProvinceIDGOSET TRANSACTION ISOLATION LEVEL READ COMMITTEDGO

din punct de vedere Tehnic, nu există absolut nici o diferență între performanța și impactul ambele metode. Prefer să folosesc a doua metodă mai des, deoarece este mai ușor să scriu și să testez. Din nou, dacă este posibil, îmi place să stau departe de citirea metodelor neangajate pentru a citi datele.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *