Che cos’è l’isolamento delle istantanee?

L’isolamento dello snapshot è una proprietà nell’elaborazione delle transazioni e nei database che garantisce che tutte le letture effettuate in una transazione vedano 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 tra più versioni che fornisce livelli di isolamento che evitano i problemi che si verificano comunemente con la concorrenza. Questo isolamento è stato implementato da diversi server SQL (Structured Query Language), che operano con quantità minime di anomalie di serializzazione. Gli isolamenti delle istantanee, tuttavia, non garantiscono la completa serializzabilità in un server.

Molti dei principali sistemi di gestione dei dati contengono livelli di isolamento predefiniti che non sono serializzabili e spesso riscontrano anomalie di serializzazione senza isolamento snapshot. Ciò può causare ogni giorno numerose occorrenze di errori di isolamento nei sistemi di grandi dimensioni, che possono portare alla corruzione dei dati, in particolare di quelli che si trovano nelle applicazioni di archiviazione 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. Includere l’isolamento delle istantanee in un sistema riduce queste anomalie e, tenendo conto del tempo di funzionamento e della quantità di errori che si verificano, aumenta ulteriormente l’efficienza.

Alcuni database offrono l’isolamento dello snapshot anziché la serializzabilità completa, ma possono verificarsi anche anomalie all’interno di un database che utilizza questo tipo di isolamento. Queste anomalie possono portare a violazioni della coerenza dei dati perché le transazioni che mantengono la coerenza si intersecano o sono disposte in livelli alternati. L’unico modo per risolvere il problema e prevenire anomalie come queste è manipolare le applicazioni con l’introduzione di blocchi artificiali e aggiornamenti conflittuali, seguiti dall’analisi dei conflitti tra ogni coppia di transazioni. Un modo diverso per risolvere queste anomalie, tuttavia, consiste nel modificare gli algoritmi del controllo della concorrenza di un sistema di database per eseguire rilevamenti automatici e prevenire le anomalie dell’isolamento degli snapshot 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, nonché nuovi livelli di isolamento snapshot per il miglioramento della concorrenza in determinate applicazioni. Laddove le versioni precedenti del server SQL utilizzavano il blocco come base per la concorrenza, l’isolamento dello snapshot dipende dai miglioramenti del controllo delle versioni delle righe destinati al miglioramento delle prestazioni. Migliora queste prestazioni quando incontra scenari con blocco di lettura o scrittura evitandoli.