Hvad er snapshot-isolering?
Snapshot-isolering er en egenskab i transaktionsbehandling og databaser, der garanterer, at alle læsninger, der foretages i en transaktion, ser den samme database "snapshot." Dette betyder, at transaktionen forpligter sig til at behandle anmodningen med succes, hvis dens opdateringer ikke er i konflikt med andre samtidige opdateringer. Snapshot-isolering er en kontrolalgoritme til multi-version samtidighed, der giver isolationsniveauer, der undgår de problemer, der ofte opstår med samtidighed. Denne isolering er blevet implementeret af flere forskellige SQL-servere med struktureret forespørgsel (SQL), der fungerer med minimale mængder af serialiseringsanomalier. Snapshot-isolationer garanterer dog ikke fuldstændig serialisering på en server.
Mange vigtige datastyringssystemer indeholder standardisolationsniveauer, der ikke kan serialiseres, og som ofte støder på anomalier ved serialisering uden snapshot-isolering. Dette kan forårsage, at store systemer har adskillige forekomster af isoleringsfejl hver dag, hvilket kan føre til, at data ødelægges, især det, der findes i lagerapplikationer af data. Årsagen til at et system kan fungere i denne tilstand er fordi applikationer, der kører på lavere isolationsniveauer, kan forbedre effektiviteten, hvis der ikke opstår alvorlige fejl. Hvis du inkluderer isolering af snapshot i et system, reduceres disse afvigelser og - når du tager driftstid og mængden af fejl, der opstår, øger effektiviteten yderligere.
Nogle databaser tilbyder snapshot-isolering i modsætning til fuld serialisering, men der er også uregelmæssigheder, der kan forekomme i en database, der bruger denne type isolering. Disse afvigelser kan føre til krænkelser af datakonsistens, fordi transaktioner, der opretholder konsistens er sammenflettet, eller er arrangeret i vekslende lag. Den ene måde at løse problemet og forhindre unormale forhold som disse er at manipulere applikationer med en introduktion af kunstige låse og modstridende opdateringer, som blev efterfulgt af analyse af konflikterne mellem hvert par af transaktioner. En anden måde at løse disse afvigelser på er imidlertid at ændre algoritmerne i et databasesystemets samtidighedskontrol for at udføre automatiske detektioner og forebyggelse af afvigelser fra snapshot-isolering ved kørsel. Dette kan gøres til vigtige eller vilkårlige applikationer, men giver isolering, der kan serialiseres.
Nyere SQL-servere har været i stand til at introducere nye niveauer af isolering såvel som nye niveauer af snapshot-isolering til forbedring af samtidighed i visse applikationer. Hvor tidlige versioner af SQL-serveren anvendte låsning som grundlag for samtidighed, er snapshot-isolering afhængig af forbedringer af rækkeversionering beregnet til forbedring af ydelsen. Det forbedrer denne ydelse, når den støder på scenarier med læse- eller skriveblokering ved at undgå dem.