Sök…


Anmärkningar

Jag hittade den här länken - den är användbar som referens: "Isolationsnivåer"

Exempel på inställning av isoleringsnivå

Exempel på inställning av isoleringsnivå:

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 - innebär att en fråga i den aktuella transaktionen inte kan få åtkomst till de modifierade uppgifterna från en annan transaktion som ännu inte har begåtts - inga smutsiga läsningar! MEN, icke repeterbara läsningar och fantomläsningar är möjliga, eftersom data fortfarande kan modifieras av andra transaktioner.

  2. REPEATABLE READ - innebär att en fråga i den aktuella transaktionen inte kan få åtkomst till de modifierade uppgifterna från en annan transaktion som ännu inte har begåtts - inga smutsiga läsningar! Inga andra transaktioner kan modifiera data som läses av den aktuella transaktionen förrän de är slutförda, vilket eliminerar NONREPEATABLE läsningar. MEN, om en annan transaktion infogar NYA Rader och frågan körs mer än en gång, kan fantomrader visas med början av den andra läsningen (om den stämmer med uttalandet om frågan).

  3. SNAPSHOT - kan endast returnera data som finns i början av frågan. Säkerställer enhetlighet i uppgifterna. Det förhindrar smutsiga läsningar, icke repeterbara läsningar och fantomläsningar. För att använda det krävs DB-konfiguration:

ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
  1. READ COMMITTED - standardisolering av SQL-servern. Det förhindrar att läsa data som ändras av en annan transaktion tills de begås. Den använder delad låsning och radversionering på tabellerna som förhindrar smutsiga läsningar. Det beror på DB-konfiguration READ_COMMITTED_SNAPSHOT - om aktiverat används radversionering. för att aktivera - använd detta:
ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; --return to the default one
  1. SERIALIZABLE - använder fysiska lås som förvärvas och hålls kvar tills transaktionen är slut, vilket förhindrar smutsiga läsningar, fantomläsningar, icke repeterbara läsningar. MEN det påverkar prestandan hos DataBase, eftersom de samtidiga transaktionerna är serialiserade och genomförs en efter en.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow