Log delle transazioni
Da Wikipedia, l'enciclopedia libera
Nel campo delle banche dati in informatica , un log delle transazioni (anche log del database o di log binario ) è una storia delle azioni eseguite da un sistema di gestione di database per garantireda incidenti o guasti hardware. Fisicamente, un registro è un file di fatti degli aggiornamenti al database, memorizzato nella memoria stabile.Se, dopo un inizio, il database si trova in un stato incoerente o non è stato spento in modo corretto, il sistema di gestione di database in rassegna i registri del database per il commit delle transazioni e il rollback delle modifiche apportate da tali transazioni . Inoltre, tutte le transazioni che sono già impegnati ma i cui cambiamenti non sono stati ancora materializzato nella banca dati sono ri-applicato. Entrambi sono fatto per garantire atomicità e la durata delle operazioni.
Questo termine non deve essere confusa con altre, leggibili i log di un sistema di gestione di database fornisce di solito.
Anatomia di un log del database generale
Un record di log del database è costituito da- Log Sequence Number : un ID univoco per un record di log. Con LSN, i log possono essere recuperati in tempo costante. LSN più registri 'sono assegnati in ordine crescente monotonicamente, che è utile nel recupero di algoritmi , come ARIES .
- Prev LSN : Un link per il record di log scorso. Ciò implica registri del database sono costruiti in lista collegata forma.
- Numero di transazione ID : un riferimento alla transazione del database generazione del record di log.
- Tipo : descrive il tipo di record del database di log.
- informazioni sulle modifiche effettive che ha attivato il record di log devono essere scritti
Tipi di record di log del database
Tutti i record di log includono gli attributi registro generale di cui sopra, e anche altri attributi a seconda del loro tipo (che è registrato nel tipo di attributo, come sopra).- Aggiornamento Log Registrare note un aggiornamento (cambio) al database. Esso comprende queste informazioni aggiuntive:
- PageId : Un riferimento alla pagina ID della pagina modificata.
- Lunghezza e Offset : lunghezza in byte e l'offset della pagina sono di solito inclusi.
- Prima e dopo Immagini : include il valore dei byte della pagina prima e dopo la modifica della pagina. Alcuni database possono avere i log che includono una o entrambe le immagini.
- Log Registrare compensazione note il rollback di una particolare modifica al database. Ogni corrispondere esattamente un record altro Log Update (anche se il corrispondente record di log aggiornamento non è in genere memorizzati nel record di log di compensazione). Esso comprende queste informazioni aggiuntive:
- undoNextLSN : Questo campo contiene il numero LSN del record di log successivo che deve essere annullata per la transazione che ha scritto l'ultimo log Update.
- Record commit nota una decisione di commit di una transazione.
- Interrompi registrazione nota una decisione di abortire e quindi rollback di una transazione.
- Record Checkpoint osserva che un posto di blocco è stato fatto. Questi sono usati per accelerare la ripresa. Si registra le informazioni che elimina la necessità di leggere un lungo cammino nel passato del log. Questo varia a seconda dell'algoritmo checkpoint. Se tutte le pagine dirty vengono scaricate durante la creazione del posto di blocco (come in PostgreSQL ), potrebbe contenere:
- redoLSN : Questo è un riferimento al primo record del log che corrisponde a una pagina sporca. cioè il primo aggiornamento che non è stata lavata al momento checkpoint. E 'qui che deve cominciare a rifare il recupero.
- undoLSN : Questo è un riferimento al record più vecchio log delle più antiche in corso transazione. Questo è il record più vecchio log necessari per annullare tutte le transazioni in corso.
- Record di completamento osserva che tutto il lavoro è stato fatto per questa operazione particolare. (È stato completamente commit o interrotta)
Tabelle
Queste tabelle sono mantenute in memoria, e possono essere efficacemente ricostruito (se non proprio, ad uno stato equivalente) dal registro e il database:- Tabella di transazione : La tabella contiene una voce per ogni transazione attiva. Questo include Transaction ID e LastLSN, dove LastLSN descrive il LSN del record di log più recenti per la transazione.
- Tabella Pagina sporca : La tabella contiene una voce per ogni pagina dirty che non sono stati scritti sul disco. La voce contiene recLSN, dove recLSN è il LSN del primo record del log che ha causato la pagina per essere sporca.
Nessun commento:
Posta un commento