Nackdelar:
1. Den kommer att ge smutsig läsning
2. Endast tillämplig på utvalda frågesatser
Fördelar:
1. Vissa filer säger att SQL-frågeeffektiviteten med WITH (NOLOCK) kan ökas med 33%.
2. Kan användas för inre join-satser
Dirty read: En användare gör en ändring i en resurs, och en annan användare råkar läsa den modifierade posten, och sedan ger den första användaren upp modifieringen och datan återgår till den föregående modifieringen, dessa två olika resultat är dirty reading.
Detaljer:
För att förbättra prestandan för SQL-frågor är generellt sett det första att överväga att skapa ett index. Faktum är att utöver att etablera index, när vi placerar SQL-kommandon, kan tillägg av en sektion WITH (NOLOCK) i syntaxen förbättra fenomenet att dataset LOCK:as i en miljö med ett stort antal online-frågor, vilket därmed förbättrar frågeprestandan.
En sak att notera är dock att SQL SELECT med (NOLOCK) kan orsaka Dirty Read.
Till exempel:
Förutom enkel SELECT kan du också använda SELECT-syntaxen med JOIN. Men DELETE, INSERT, UPDATE och andra kommandon som kräver transaktioner är inte bra...
Vissa filer säger att effektiviteten i SQL-frågor kan ökas med 33 % med WITH (NOLOCK). Att lägga till WITH (NOLOCK) talar om för SQL Server att vårt SELECT-kommando inte behöver ta hänsyn till transaktionslåstillståndet för den aktuella tabellen, så prestandan kommer att förbättras avsevärt, och låsfenomenet i databassystemet kommer att minska avsevärt (inklusive deadlock).
En sak att notera är att eftersom WITH (NOLOCK) inte tar hänsyn till transaktionslåset för den aktuella tabellen, så när det finns data som är i flera faser (t.ex. transaktioner mellan flera tabeller – >t.ex. uttagssystem), ignorerar WITH (NOLOCK) den data som för närvarande bearbetar transaktionsprocessen...
För att uttrycka det rakt på sak, det vill säga, när man använder NoLock tillåter det att läsa data som har ändrats men transaktionen ännu inte är slutförd. Därför, om du behöver överväga transaktionsdatas realtidsintegritet, bör du noga överväga att använda WITH (NOLOCK).
Om du inte behöver ta hänsyn till transaktioner kan WITH (NOLOCK) vara en användbar referens.
Not 1: MED ( < table_hint > ) Specificerar tabellskanningen, ett eller flera index som används av frågeoptimeraren, Eller av frågeoptimeraren för att använda denna datatabell och använda låsläget för detta påstående.
Not 2: WITH (NOLOCK) motsvarar READ UNCOMMITTED
|