See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 11079|Vastuse: 1

[Allikas] MSSQL KOOS (NOLOCK) räpane lugemine

[Kopeeri link]
Postitatud 2020-4-3 10:06:04 | | |
Miinused:

1. See toob kaasa räpase lugemise

2. Kehtib ainult valitud päringulausetele

Plussid:

1. Mõned failid ütlevad, et SQL-päringute efektiivsust WITH (NOLOCK) abil saab suurendada 33%.

2. Võib kasutada sisemiste liitmislausete jaoks

Räpane lugemine: Kasutaja teeb ressursile muudatuse, teine kasutaja loeb muudetud kirjet, siis esimene kasutaja loobub muudatusest ja andmed naasevad eelmisse muudatusse, need kaks erinevat tulemust on mustad lugemised.

Detailid:

SQL-päringute jõudluse parandamiseks on üldiselt esimene samm luua indeks. Tegelikult, lisaks indeksite loomisele, kui paigutame SQL-käske, võib sektsiooni WITH (NOLOCK) lisamine süntaksile parandada andmekogude lukustamise nähtust keskkonnas, kus on palju veebipäringuid, parandades seeläbi päringute jõudlust.

Kuid üks asi, mida tasub tähele panna, on see, et SQL SELECT (NOLOCK)-ga võib põhjustada Dirty Read'i.

Näiteks:

Lisaks lihtsale SELECT-ile saad kasutada ka SELECT süntaksit koos JOIN-iga. Aga DELETE, INSERT, UPDATE ja muud käsud, mis nõuavad tehinguid, ei ole head...


Mõned failid ütlevad, et SQL-päringute efektiivsust saab WITH (NOLOCK) abil suurendada 33% võrra.
WITH lisamine (NOLOCK) ütleb SQL Serverile, et meie SELECT käsk ei pea arvestama praeguse tabeli tehinguluku olekut, seega paraneb jõudlus märkimisväärselt ja andmebaasisüsteemi lukustuse nähtus väheneb märkimisväärselt (sh surnud lukustus).

Üks asi, mida tähele panna, on see, et kuna WITH (NOLOCK) ei arvesta praeguse tabeli tehingulukustust, siis kui mõni info on mitmes faasis (nt tehingud mitme tabeli vahel – >nt väljavõtmissüsteemid), siis WITH (NOLOCK) ignoreerib andmeid, mis parasjagu tehinguprotsessi töötlevad...

Otse öeldes, NoLocki kasutamisel võimaldab see lugeda andmeid, mis on muudetud, kuid tehingut pole veel lõpetatud. Seega, kui pead arvestama tehinguandmete reaalajas terviklikkusega, peaksid hoolikalt kaaluma WITH (NOLOCK) kasutamist.

Kui tehinguid ei pea kaaluma, võib WITH (NOLOCK) olla kasulik viide.

Märkus 1: KOOS ( < table_hint > )
Määrab tabeliskanni, ühe või mitu indeksit, mida päringu optimeerija kasutab,
Või päringu optimeerija abil kasutada seda andmetabelit ja kasutada lukustusrežiimi selle lause jaoks.

Märkus 2: KOOS (NOLOCK) on ekvivalentne READ UNCOMMITTED





Eelmine:Andmebaasi master-slave latentsus põhjustab ebatäpset päringute lahendamist
Järgmine:Lahendati probleem, et Fiddler ei saanud roomata kohalikku localhosti, 127.0.0.1 võrgupäringuid
Postitatud 2020-4-5 14:21:36 |
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com