Vad är Snapshot Isolation?

Snapshot-isolation är en egenskap i transaktionsbearbetning och databaser som garanterar att alla läsningar som görs i en transaktion ser samma databas ”snapshot”. Detta innebär att transaktionen kommer att förbinda sig att framgångsrikt bearbeta begäran om dess uppdateringar inte står i konflikt med några andra samtidiga uppdateringar. Snapshot isolation är en kontrollalgoritm för samtidighet i flera versioner som ger isoleringsnivåer som undviker de problem som vanligtvis uppstår med samtidighet. Denna isolering har implementerats av flera olika SQL-servrar (Structured Query Language), som arbetar med minimala mängder serialiseringsavvikelser. Snapshot-isoleringar kommer dock inte att garantera fullständig serialisering på en server.

Många stora datahanteringssystem innehåller standardisoleringsnivåer som inte går att serialisera och stöter ofta på anomalier i serialisering utan ögonblicksbildisolering. Detta kan orsaka att stora system har många förekomster av isoleringsfel varje dag, vilket kan leda till att data skadas, särskilt det som finns i lagerapplikationer av data. Anledningen till att ett system kan fungera i detta tillstånd är att applikationer som körs på lägre isoleringsnivåer kan förbättra effektiviteten om inga allvarliga fel uppstår. Att inkludera ögonblicksbildsisolering i ett system minskar dessa anomalier och – när man tar hänsyn till drifttid och mängden fel som uppstår – ökar effektiviteten ytterligare.

Vissa databaser erbjuder ögonblicksbildsisolering i motsats till full serialiserbarhet, men det finns också anomalier som kan uppstå i en databas som använder denna typ av isolering. Dessa avvikelser kan leda till datakonsistensöverträdelser eftersom transaktioner som upprätthåller konsistens interfolierar eller är ordnade i alternerande lager. Det enda sättet att lösa problemet och förhindra anomalier som dessa är att manipulera applikationer med en introduktion av konstgjorda lås och motstridiga uppdateringar, som följdes av analys av konflikterna mellan varje transaktionspar. Ett annat sätt att lösa dessa anomalier är dock att modifiera algoritmerna för ett databassystems samtidighetskontroll för att göra automatiska upptäckter och förhindrande av anomalier i ögonblicksbildsisolering under körning. Detta kan göras för viktiga eller godtyckliga tillämpningar, men ger isolering som är serialiserbar.

Nyare SQL-servrar har kunnat introducera nya nivåer av isolering såväl som nya nivåer av ögonblicksbildsisolering för att förbättra samtidigheten i vissa applikationer. Där tidiga versioner av SQL-servern använde låsning som grund för samtidighet, är ögonblicksbildsisolering beroende av förbättringar av radversionering avsedda för att förbättra prestanda. Den förbättrar denna prestanda när den stöter på scenarier med läs- eller skrivblockering genom att undvika dem.