Zoeken…


Opmerkingen

Ik heb deze link gevonden - het is nuttig als referentie: "Isolatieniveaus"

Voorbeelden van het instellen van het isolatieniveau

Voorbeeld van het instellen van het isolatieniveau:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM Products WHERE ProductId=1;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; --return to the default one
  1. READ UNCOMMITTED - betekent dat een query in de huidige transactie geen toegang heeft tot de gewijzigde gegevens van een andere transactie die nog niet is vastgelegd - geen vuile lezingen! MAAR, niet-herhaalbare reads en phantom reads zijn mogelijk, omdat gegevens nog kunnen worden gewijzigd door andere transacties.

  2. REPEATABLE READ - betekent dat een query in de huidige transactie geen toegang heeft tot de gewijzigde gegevens van een andere transactie die nog niet is vastgelegd - geen vuile lezingen! Geen enkele andere transactie kan de gegevens wijzigen die worden gelezen door de huidige transactie totdat deze is voltooid, waardoor NIET-HERHAALBAAR lezen wordt geëlimineerd. MAAR, als een andere transactie NIEUWE RIJEN invoegt en de query meer dan eens wordt uitgevoerd, kunnen fantoomrijen verschijnen vanaf de tweede read (als deze overeenkomt met de where-instructie van de query).

  3. SNAPSHOT - kan alleen gegevens retourneren die aan het begin van de query bestaan. Zorgt voor consistentie van de gegevens. Het voorkomt vuile lezingen, niet-herhaalbare lezingen en fantoomlezingen. Om dat te gebruiken - DB-configuratie is vereist:

ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
  1. READ COMMITTED - standaard isolatie van de SQL-server. Het voorkomt dat de gegevens worden gelezen die door een andere transactie zijn gewijzigd totdat ze zijn vastgelegd. Het maakt gebruik van gedeelde vergrendeling en rijversie op de tabellen die vuile leesresultaten voorkomt. Het hangt af van de DB-configuratie READ_COMMITTED_SNAPSHOT - indien ingeschakeld - rijversie wordt gebruikt. inschakelen - gebruik dit:
ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; --return to the default one
  1. SERIALIZABLE - maakt gebruik van fysieke vergrendelingen die worden verkregen en vastgehouden tot het einde van de transactie, die vuile leesbewerkingen, fantoomlezingen, niet-herhaalbare leesopdrachten voorkomt. MAAR het heeft invloed op de prestaties van de DataBase, omdat de gelijktijdige transacties worden geserialiseerd en één voor één worden uitgevoerd.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow