Panoramica
Una transazione è una sequenza di lettura e scrittura di un database. Ci sono due caratteristiche evidenti: atomicità e serializzazione nel database tradizionale (RDB): atomicità e serializzazione. Atomico significa che le operazioni di lettura e scrittura nelle transazioni possono essere viste come una singola operazione atomica per il database. Seriebial significa che l'effetto dell'esecuzione simultanea di più transazioni è lo stesso dell'esecuzione di queste transazioni. Pertanto, il compito della gestione delle transazioni è garantire l'atomicità e la serialità della transazione, che consiste di due parti: controllo della concorrenza e ripristino. Il controllo simultaneo implica il controllo automatico di più transazioni per l'accesso simultaneo a una parte comune del database. Il ripristino riguarda lo stato che esisteva prima che il database venisse ripristinato in caso di errore della transazione.
Configurazione della gestione delle transazioni
Il sistema di transazione è composto da Responsabile delle transazioni, Responsabile del recupero, Gestore delle serrature, Deadlock Manager, Gestore della cache.
Responsabile delle transazioni
Responsabile delle transazioni è responsabile della generazione delle transazioni e dell'assegnazione di un identificatore di transazione, che dovrebbe essere in grado di generare un numero sufficiente di transazioni secondarie e assegnare un ID transazione sufficiente secondo necessità. Quando l'invio viene inviato, il gestore delle transazioni deve conoscere l'identità dell'azienda madre ed eseguire una serie di operazioni e, se può ottenere direttamente l'identità dell'azienda madre, migliorerà notevolmente l'efficienza dell'elaborazione delle transazioni.
Responsabile del recupero
Nel modello di transazione nidificata, le transazioni figlio possono essere inviate in modo indipendente rispetto alle transazioni padre e agli affari fratello e il volume delle transazioni secondarie non causerà il rollback degli affari Parenting e fratello. Se viene eseguito il rollback di qualsiasi livello (figlio), tutte le relative transazioni secondarie sono cadute, indipendentemente dal fatto che abbiano implementato l'invio locale. Pertanto, quando viene inoltrato l'invio, il gestore del recupero deve connettere il proprio collegamento al registro al registro delle transazioni padre, il che richiede che il gestore del ripristino conosca l'identità dell'azienda padre. Quindi, se è possibile ottenere direttamente l'identità dell'azienda madre direttamente dal contrassegno della transazione secondaria, migliorerà notevolmente l'efficienza del lavoro del responsabile del ripristino.
Gestore delle serrature
Nel modello di transazione nidificata, una volta inviata la transazione figlio, la transazione padre può osservare tutte le modifiche apportate. La modifica della transazione secondaria all'inizio della transazione del figlio è visibile. Quando le questioni del bambino corrono contemporaneamente, il cambiamento non mostra gli affari dei fratelli; in caso contrario, il bambino viene sottomesso e il suo cambiamento viene mostrato ai fratelli. Pertanto, quando submit viene inviato, converte il blocco di proprietà nel genitore. Quando la transazione viene applicata, il responsabile del blocco è responsabile di giudicare la compatibilità del blocco: se lo è, assegnarlo alla transazione blocco corrispondente; in caso contrario, viene determinato se la transazione del blocco dell'applicazione è la discendente della transazione bloccata, se può essere assegnata al blocco corrispondente, altrimenti non può soddisfare i requisiti dell'applicazione. Quindi, se puoi determinare direttamente se esiste una relazione ancestrale tra le due transazioni, migliorerà notevolmente l'efficienza del lavoro del gestore della serratura.
Responsabile del blocco della difesa
La nuova applicazione richiede il più grande parallelismo nella struttura della transazione, compreso il parallelismo tra transazioni parallele e parent-based tra fratelli. Questi portano alla diversificazione della relazione di attesa tra le transazioni, e provocano un'ulteriore diversificazione dei tipi di stallo, che senza dubbio aumenta la difficoltà di rilevamento dello stallo. Per migliorare l'efficienza del rilevamento dei deadlock, il deadlock "nascosto" viene trovato il prima possibile, dobbiamo prima rappresentare efficacemente varie relazioni di attesa. Nel modello di transazione nidificata, il gestore deadlock gestisce principalmente tre relazioni di attesa:
(1) La transazione del blocco dell'applicazione è in attesa di avere una transazione di blocco;
(2) Transazione principale In attesa di tutte le transazioni secondarie;
(3) Blocchi dell'applicazione Attendere che un'attività bloccata soddisfi il livello più elevato delle seguenti condizioni: non è un antenato dell'attività dell'azienda.
La rappresentazione effettiva della terza relazione di attesa può evitare molto lavoro senza senso, ma questo richiede di trovare il livello più alto di antenati non comuni delle due transazioni. Per raggiungere lo scopo, è necessario effettuare una costante ricerca e confronto della gerarchia delle transazioni, il che è un ottimo lavoro. Quindi, se riesci a scoprire direttamente gli antenati non comuni dei loro livelli più alti dall'identità delle due transazioni, eviterai un sacco di sovraccarico, il che migliora notevolmente l'efficienza del lavoro del gestore dei deadlock.
Gestore della cache
Sulla base della considerazione dell'uso efficiente della cache, il gestore della cache richiede che la struttura di archiviazione della transazione fornisca un supporto flessibile ed efficace per l'identificazione breve e l'identità lunga, ovvia, statica La struttura è inappropriata e richiede una struttura dinamica flessibile.
Tutto, la domanda transazionale per il logo della transazione è:
(1) può identificare direttamente l'identità della sua transazione madre direttamente dalle transazioni secondarie;
(2) Il logo della transazione fornisce un buon supporto per l'ampiezza e l'ampiezza della struttura gerarchica della transazione (vale a dire: nessun limite alla larghezza e all'ampiezza);
(3) La struttura di archiviazione dell'identificatore di transazione fornisce un ID di transazione sufficiente (ovvero: non c'è limite al numero di logo di transazione);
(4) può giudicare se le due transazioni hanno una relazione ancestrale in base alla transazione;
(5) può essere trovato secondo il logo della transazione Il livello più alto di antenati non comuni di due transazioni;
(6) L'identificativo della transazione dovrebbe essere flessibile e di lunghezza variabile, in modo da poter sfruttare appieno lo spazio di archiviazione per archiviare in modo efficace l'identificazione lunga e l'identificazione breve.