Ce este izolarea instantaneelor?

Izolarea instantaneelor ​​este o proprietate în procesarea tranzacțiilor și bazele de date care garantează că toate citirile efectuate într-o tranzacție vor vedea aceeași bază de date „instantaneu”. Aceasta înseamnă că tranzacția se va angaja să proceseze cu succes cererea dacă actualizările acesteia nu intră în conflict cu alte actualizări concurente. Izolarea instantanee este un algoritm de control pentru concurența multi-versiuni care oferă niveluri de izolare care evită problemele care apar în mod obișnuit cu concurența. Această izolație a fost implementată de mai multe servere SQL diferite, care funcționează cu cantități minime de anomalii de serializare. Cu toate acestea, izolările instantanee nu vor garanta serializarea completă pe un server.

Multe sisteme majore de gestionare a datelor conțin niveluri implicite de izolare care nu sunt serializabile și întâmpină adesea anomalii de serializare fără izolarea instantanee. Acest lucru poate face ca sistemele mari să aibă numeroase apariții de erori de izolare în fiecare zi, ceea ce poate duce la coruperea datelor, în special a celor care se găsesc în aplicațiile de depozit de date. Motivul pentru care un sistem poate funcționa în această stare este că aplicațiile care rulează la niveluri de izolare mai mici pot îmbunătăți eficiența dacă nu apar erori grave. Includerea izolării instantanee într-un sistem reduce aceste anomalii și — atunci când se ia în considerare timpul de funcționare și numărul de erori care apar — crește și mai mult eficiența.

Unele baze de date oferă izolarea instantanee, spre deosebire de serializarea completă, dar există și anomalii care pot apărea într-o bază de date care utilizează acest tip de izolare. Aceste anomalii pot duce la încălcări ale coerenței datelor deoarece tranzacțiile care mențin consistența se întrepătrund sau sunt aranjate în straturi alternative. Singura modalitate de a rezolva problema și de a preveni anomalii precum acestea este manipularea aplicațiilor cu introducerea de blocări artificiale și actualizări conflictuale, care au fost urmate de analiza conflictelor dintre fiecare pereche de tranzacții. O modalitate diferită de a rezolva aceste anomalii, totuși, este modificarea algoritmilor de control al concurenței unui sistem de baze de date pentru a face detectări și prevenire automate a anomaliilor de izolare a instantaneelor ​​în timpul execuției. Acest lucru se poate face pentru aplicații importante sau arbitrare, dar oferă o izolare care poate fi serializată.

Serverele SQL mai noi au putut introduce noi niveluri de izolare, precum și noi niveluri de izolare instantanee pentru îmbunătățirea concurenței în anumite aplicații. Acolo unde versiunile inițiale ale serverului SQL au folosit blocarea ca bază pentru concurență, izolarea instantaneelor ​​depinde de îmbunătățirile versiunilor de rând destinate îmbunătățirii performanței. Îmbunătățește această performanță atunci când întâlnește scenarii cu blocare de citire sau scriere, evitându-le.