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 er serialiserbare 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, WHICH 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. At inkludere snapshot -isolering i et system reducerer disse afvigelser og - når man tager driftstid og mængden af fejl, der opstår, ø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 introduktionaf 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 ydelse, når den møder scenarier med læsning eller skrivning af blokering ved at undgå dem.