Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 11079|Vastaus: 1

[Lähde] MSSQL WITH (NOLOCK) likainen lukeminen

[Kopioi linkki]
Julkaistu 2020-4-3 10:06:04 | | |
Miinukset:

1. Se tuottaa likaista lukemista

2. Sovellettavissa vain valikoituihin kyselylauseisiin

Plussat:

1. Jotkut tiedostot sanovat, että SQL-kyselyjen tehokkuutta WITH (NOLOCK) avulla voidaan nostaa 33 %.

2. Voidaan käyttää sisäisten liitoslauseiden tekemiseen

Likainen luku: Käyttäjä tekee muutoksen resurssiin, ja toinen käyttäjä sattuu lukemaan muokatun tietueen, ja sitten ensimmäinen käyttäjä luopuu muokkauksesta, ja data palaa edelliseen muutokseen, nämä kaksi eri tulosta ovat likaista lukemista.

Yksityiskohdat:

SQL-kyselysuorituskyvyn parantamiseksi yleisesti ottaen ensimmäinen asia on indeksin luominen. Itse asiassa, indeksien perustamisen lisäksi, kun sijoitamme SQL-komentoja, syntaksiin lisätty osio WITH (NOLOCK) voi parantaa ilmiötä, jossa datasetit lukitaan ympäristössä, jossa on paljon verkkokyselyitä, parantaen näin kyselyjen suorituskykyä.

Kuitenkin yksi huomionarvoinen seikka on, että SQL SELECT (NOLOCK) -toiminnolla voi aiheuttaa Dirty Readin.

Esimerkiksi:

Yksinkertaisen SELECT-toiminnon lisäksi voit käyttää SELECT-syntaksia JOIN-toiminnolla. Mutta DELETE, INSERT, UPDATE ja muut transaktioita vaativat komennot eivät toimi...


Jotkut tiedostot sanovat, että SQL-kyselyjen tehokkuutta voidaan parantaa 33 % WITH (NOLOCK) -toiminnolla.
WITH (NOLOCK) lisääminen kertoo SQL Serverille, että SELECT-komennon ei tarvitse ottaa huomioon nykyisen taulukon transaktiolukituksen tilaa, joten suorituskyky paranee merkittävästi ja tietokantajärjestelmän lukitusilmiö vähenee merkittävästi (mukaan lukien kuollut lukko).

Yksi huomioitava seikka on, että koska WITH (NOLOCK) ei ota huomioon nykyisen taulukon transaktiolukkoa, niin kun jokin data on useassa vaiheessa (esim. transaktiot useiden taulujen yli – >esim. nostojärjestelmät), WITH (NOLOCK) jättää huomiotta datan, joka käsittelee tapahtumaprosessia...

Suoraan sanottuna, eli NoLockia käytettäessä se mahdollistaa tietojen lukemisen, jos sitä on muokattu mutta tapahtuma ei ole vielä suoritettu. Siksi, jos sinun täytyy miettiä transaktiotietojen reaaliaikaista eheyttä, kannattaa harkita tarkkaan WITH (NOLOCK) käyttöä.

Jos sinun ei tarvitse harkita transaktioita, WITH (NOLOCK) voi olla hyödyllinen viite.

Huomautus 1: KANSSA ( < table_hint > )
Määrittelee taulukon skannauksen, yhden tai useamman hakemiston, jota kyselyoptimointi käyttää
Tai kyselyoptimaattorin avulla hyödyntämään tätä datataulukkoa ja käyttämään lukitustilaa tälle lauseelle.

Huomautus 2: WITH (NOLOCK) vastaa READ UNCOMMITTED -arvoa





Edellinen:Tietokanta-master-slave-viive johtaa epätarkkaan kyselyn ratkaisuun
Seuraava:Ratkaistiin ongelma, että Fiddler ei pystynyt selaamaan paikallisia localhost, 127.0.0.1 -verkkopyyntöjä
Julkaistu 2020-4-5 14:21:36 |
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com