2011-11-20 2 views

risposta

16

È stato difficile trovare informazioni su questo argomento. Tuttavia, ad un certo punto ho trovato una dichiarazione che lo spiegava chiaramente:

  • La linearizzazione consente l'isolamento a livello di operazioni, mentre la serializzabilità consente l'isolamento a livello di transazioni.

(sintetizzato dalla descrizione approfondita found here)

Ad esempio:

enter image description here

Qui, A, B e C sono tre differenti operazioni esecuzione allo stesso tempo. r (varname) significa che la transazione corrente sta accedendo al valore all'interno di varname e w (varname) significa che la transazione corrente sta scrivendo un certo valore in varname.

Ora, per creare una cronologia linearizzata di questi eventi, dobbiamo assicurarci che non avvengano due operazioni contemporaneamente. Un'operazione avviata mentre un'altra operazione già avviata dovrebbe essere visualizzata dietro la prima operazione.

In questo caso:

Log1: A.r(x), B.r(X), B.r(Y), A.w(X), C.r(Y) 

Per creare una storia serializzata di questi eventi, si deve separare tutte le operazioni delle operazioni A, B e C quindi non ci sono operazioni intercalate da altre transazioni.

Dal nostro esempio, questo potrebbe comportare:

Log2: A.r(x), A.w(x), B.r(X), B.r(Y), C.r(Y) 
+0

+1, unica cosa che avrebbe reso una risposta migliore sarebbe riferimenti. –

+0

@jameslewis Grazie. Ho aggiunto un riferimento all'articolo che mi ha fatto capire prima. – Qqwy