Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 11079|Odgovoriti: 1

[Vir] MSSQL Z (NOLOCK) umazanim branjem

[Kopiraj povezavo]
Objavljeno 3. 4. 2020 ob 10:06:04 | | |
Slabosti:

1. To bo povzročilo umazano branje

2. Velja samo za izbrane poizvedbene stavke

Prednosti:

1. Nekatere datoteke pravijo, da se učinkovitost SQL poizvedb z WITH (NOLOCK) lahko poveča za 33 %.

2. Lahko se uporablja za stavke inner join

Umazano branje: Uporabnik naredi spremembo na viru, nato drug uporabnik prebere spremenjen zapis, nato prvi uporabnik opusti spremembo in se podatki vrnejo na prejšnjo spremembo, ti dve različni rezultati pa sta umazano branje.

Podrobnosti:

Za izboljšanje zmogljivosti SQL poizvedb je na splošno prva stvar ustvariti indeks. Pravzaprav lahko poleg vzpostavitve indeksov, ko postavimo SQL ukaze, dodajanje razdelka WITH (NOLOCK) v sintakso izboljša pojav zaklepanja podatkovnih nizov v okolju z velikim številom spletnih poizvedb, s čimer se izboljša zmogljivost poizvedb.

Vendar pa je treba vedeti, da lahko SQL SELECT z (NOLOCK) povzroči umazano branje.

Na primer:

Poleg preprostega SELECT lahko uporabite tudi sintakso SELECT z JOIN. Ampak DELETE, INSERT, UPDATE in drugi ukazi, ki zahtevajo transakcije, niso dobri...


Nekatere datoteke pravijo, da se učinkovitost SQL poizvedb lahko poveča za 33 % z WITH (NOLOCK).
Dodajanje WITH (NOLOCK) pove SQL Serverju, da naš ukaz SELECT ne potrebuje upoštevati stanja zaklepanja transakcij v trenutni tabeli, zato bo zmogljivost bistveno izboljšana, pojav zaklepanja v podatkovnem sistemu pa znatno zmanjšan (vključno z mrtvo zaklepanostjo).

Pomembno je vedeti, da ker WITH (NOLOCK) ne upošteva zaklepa transakcije trenutne tabele, zato ko so nekateri podatki v več fazah (npr. transakcije v več tabelah – >npr. sistemi za dvig), WITH (NOLOCK) ignorira podatke, ki trenutno obdelujejo transakcijski proces...

Preprosto povedano, pri uporabi NoLocka omogoča branje podatkov, ki so bili spremenjeni, vendar transakcija še ni bila zaključena. Zato, če morate upoštevati integriteto transakcijskih podatkov v realnem času, dobro premislite o uporabi WITH (NOLOCK).

Če transakcij ni treba upoštevati, je lahko koristna referenca WITH (NOLOCK).

Opomba 1: WITH ( < table_hint > )
Določa pregled tabele, enega ali več indeksov, ki jih uporablja optimizator poizvedb,
Ali pa z optimizatorjem poizvedb, da izkoristiš to podatkovno tabelo in uporabiš način zaklepanja za to izjavo.

Opomba 2: WITH (NOLOCK) je ekvivalent READ UNCOMMITTED





Prejšnji:Zakasnitev master-slave baze vodi do nenatančne rešitve poizvedb
Naslednji:Rešena težava, da Fiddler ni mogel crawlati lokalnega localhosta, 127.0.0.1 omrežnih zahtevkov
Objavljeno 5. 4. 2020 ob 14:21:36 |
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com