Che cos'è l'isolamento dello snapshot?
L'isolamento dello snapshot è una proprietà nell'elaborazione della transazione e nei database che garantisce che tutte le letture effettuate in una transazione visualizzino lo stesso "snapshot" del database. Ciò significa che la transazione si impegnerà a elaborare correttamente la richiesta se i suoi aggiornamenti non sono in conflitto con altri aggiornamenti simultanei. L'isolamento dello snapshot è un algoritmo di controllo per la concorrenza multi-versione che fornisce livelli di isolamento che evitano i problemi che si verificano comunemente con la concorrenza. Questo isolamento è stato implementato da diversi server SQL (query query strutturati) diversi, operando con quantità minime di anomalie di serializzazione. Gli isolamenti degli snapshot, tuttavia, non garantiscono la completa serializzabilità in un server.
Molti importanti sistemi di gestione dei dati contengono livelli di isolamento predefiniti che non sono serializzabili e spesso incontrano anomalie della serializzazione senza isolamento di istantanee. Ciò può far sì che i sistemi di grandi dimensioni presentino ogni giorno numerose occorrenze di errori di isolamento, il che può portare alla corruzione dei dati, in particolare a ciò che si trova nelle applicazioni di magazzino dei dati. Il motivo per cui un sistema potrebbe funzionare in questo stato è perché le applicazioni eseguite su livelli di isolamento inferiori possono migliorare l'efficienza se non si verificano errori gravi. L'inclusione dell'isolamento dello snapshot in un sistema riduce queste anomalie e, quando si prendono in considerazione i tempi di funzionamento e la quantità di errori che si verificano, aumenta ulteriormente l'efficienza.
Alcuni database offrono l'isolamento dello snapshot rispetto alla serializzazione completa, ma ci sono anche anomalie che possono verificarsi all'interno di un database utilizzando questo tipo di isolamento. Queste anomalie possono portare a violazioni della coerenza dei dati perché le transazioni che mantengono la coerenza si alternano o sono disposte in strati alternati. L'unico modo per risolvere il problema e prevenire anomalie come queste è manipolare le applicazioni con un'introduzione di blocchi artificiali e aggiornamenti contrastanti, a cui è seguita l'analisi dei conflitti tra ogni coppia di transazioni. Un modo diverso per risolvere queste anomalie, tuttavia, è modificare gli algoritmi del controllo di concorrenza di un sistema di database per effettuare rilevamenti automatici e prevenire anomalie di isolamento dell'istantanea in fase di esecuzione. Questo può essere fatto per applicazioni importanti o arbitrarie, ma fornisce un isolamento serializzabile.
I server SQL più recenti sono stati in grado di introdurre nuovi livelli di isolamento e nuovi livelli di isolamento delle istantanee per il miglioramento della concorrenza in alcune applicazioni. Laddove le prime versioni del server SQL utilizzavano il blocco come base per la concorrenza, l'isolamento dello snapshot dipende dai miglioramenti del controllo delle versioni delle righe destinato al miglioramento delle prestazioni. Migliora queste prestazioni quando incontra scenari con blocchi di lettura o scrittura, evitando loro.