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

Näkymä: 10821|Vastaus: 0

[Lähde] sql SELECT

[Kopioi linkki]
Julkaistu 8.1.2016 17.58.31 | | |

Näin aiemmin vanhempien kehittäjieni käyttävän WITH:tä (NOLOCK) SQL Serverissä kyselyissä ja ihmettelin, miksi he käyttävät sitä. Tutkin sitä ja huomasin, että se on hyödyllistä kyselyn suorituskyvyn parantamisessa. Sen käytössä on kuitenkin haittapuoli. Haittapuolena on, että ei välttämättä ole varma, että saa dataa, jota parhaillaan päivitetään taulukossa, eli ilman lukitussuojaa ei voida taata, ettei data ole muuttuu kyselyn aikana. Viittasin tähän linkkiin ja pidin sitä melko hyödyllisenä.

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 huomioitava asia on, että SQL SELECT (NOLOCK) voi aiheuttaa likaisen lukemisen.

Esimerkiksi:




Koska SQL Server suorittaa vastaavan lukituksen yhdenmukaisuustarkistuksen. Parantaaksesi tietokantakyselyjen suorituskykyä, lisää WITH (NOLOCK) SELECT-syntaksin taulun nimen loppuun, vaikka (NOLOCK) on myös hyväksyttävä, mutta Microsoft suosittelee silti lisäämään WITH:n.

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 huomionarvoinen asia on, että koska WITH (NOLOCK) ei ota huomioon nykyisen taulukon transaktiolukkoa, niin kun transaktion useissa vaiheissa on dataa (esim. transaktio useiden taulujen välillä – > kuten nostojärjestelmä), WITH (NOLOCK) jättää huomiotta datan, joka käsittelee transaktioprosessia...

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

Lopuksi puhutaan muutamasta pienestä erosta nolockin ja with(nolockin) välillä:
1: Synonyymit SQL05:ssä, vain (nolock) on tuettu;
2: (nolock) kirjoitetaan hyvin helposti ja sitten määritellään indeksi.
Kun haet lauseita palvelimien välillä, et voi käyttää (nolock):lla, vain nolockia
Kun haetaan samalla palvelimella, voi käyttää sekä (nolock) että nolock -tiedostoja
Mitä esimerkiksi.
SQL-koodi
valitse * from [IP].a.dbo.table1 with (nolock) Tämä pyytää sinua valitsemaan virheen * from a.dbo.table1 with (nolock) Tämä toimii




Edellinen:C# piilottaa ID-numeron keskimmäisen numeron
Seuraava:jquery lataa JS:n ajaxilla
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