Skip to main content

Hvad er snapshot -isolering?

Snapshot -isolering er en egenskab i transaktionsbehandling og databaser, der garanterer alle læsninger, der er foretaget i en transaktion, se den samme database -snapshot.Dette betyder, at transaktionen vil forpligte 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 isoleringsniveauer, der undgår de problemer, der ofte forekommer med samtidighed.Denne isolering er implementeret af flere forskellige strukturerede forespørgselssprog (SQL) -servere, der opererer med minimale mængder serialiseringsanomalier.Snapshot -isolationer garanterer dog ikke komplet serialiserbarhed på en server.

Mange større datastyringssystemer indeholder standardisoleringsniveauer, der ikke kan serialiseres og ofte støder på afvigelser af serialisering uden snapshot -isolering.Dette kan medføre, at store systemer har adskillige forekomster af isoleringsfejl hver dag, hvilket kan føre til, at data bliver ødelagt, især det, der findes i lageranvendelser af data.Årsagen til, at et system muligvis fungerer i denne tilstand, er fordi applikationer, der kører på lavere isoleringsniveauer, kan forbedre effektiviteten, hvis der ikke opstår alvorlige fejl.Inklusive snapshot -isolering i et system reducerer disse afvigelser og mdash;når man tager driftstid og mængden af fejl, der opstår i betragtning og mdash;Øger effektiviteten yderligere.

Nogle databaser tilbyder snapshot -isolering i modsætning til fuld serialiserbarhed, men der er også afvigelser, der kan forekomme i en database, der bruger denne type isolering.Disse anomalier kan føre til overtrædelse af datakonsistens, fordi transaktioner, der opretholder konsistensen Interleave, eller er arrangeret i skiftende lag.Den ene måde at løse problemet på og forhindre afvigelser 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 transaktioner.En anden måde at løse disse afvigelser på er imidlertid at ændre algoritmerne i et databasesystems samtidighedskontrol for at udføre automatiske detektioner og forebyggelser af afvigelser af snapshot -isolering ved runtime.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 indføre nye niveauer af isolering såvel som nye niveauer af snapshot -isolering til forbedring af samtidighed i visse anvendelser.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 ydeevnen.Det forbedrer denne præstation, når den støder på scenarier med læsning eller skrivning af blokering ved at undgå dem.