Gestione delle transazioni nei DBMS: stati, tipi e principi ACID

โšก Riepilogo intelligente

La gestione delle transazioni di database considera una o piรน operazioni di database come un'unica unitร  logica che sposta il database da uno stato coerente a un altro. Si basa sulle proprietร  ACID, sugli stati di transazione definiti e sulle pianificazioni per garantire la correttezza degli accessi concorrenti.

  • ๐Ÿ” Unitร  centrale: Una transazione raggruppa le operazioni di lettura e scrittura correlate in modo che abbiano successo o falliscano insieme, mai a metร .
  • ๐Ÿงช Proprietร  ACIDO: Atomaffidabilitร , coerenza, isolamento e durata garantiscono risultati corretti anche in caso di guasto o simultaneitร .
  • ๐Ÿšฆ Stati della transazione: Attiva, parzialmente completata, completata, fallita e terminata descrivono il ciclo di vita di una transazione.
  • ๐Ÿ‘ฅ Perchรฉ la concorrenza: Un database รจ condiviso, quindi molte transazioni vengono eseguite contemporaneamente e non devono corrompere i dati delle altre.
  • ๐Ÿ“‹ Orari: Una pianificazione ordina le operazioni delle transazioni parallele preservando la sequenza interna di ciascuna transazione.
  • ๐Ÿ”— Serializzabilitร : Una pianificazione concorrente รจ corretta quando il suo risultato รจ equivalente a un'esecuzione seriale, valutata in base al conflitto o all'equivalenza delle viste.
  • ๏ธ Recupero: Una transazione non riuscita viene annullata, pertanto le sue scritture parziali non raggiungono mai il database definitivo.

Gestione delle transazioni nei DBMS

Cos'รจ una transazione di database?

A Transazione del database Una transazione di database รจ un'unitร  logica di elaborazione in un DBMS che comprende una o piรน operazioni di accesso al database. In sintesi, le transazioni di database rappresentano eventi reali di qualsiasi azienda.

Nel DBMS, tutte le operazioni di accesso al database che si svolgono tra l'inizio e la fine della transazione sono considerate un'unica transazione logica. Durante la transazione, il database รจ incoerente. Solo dopo il commit della transazione lo stato passa da uno stato coerente a un altro.

Transazione del database in movimento tra stati coerenti
Transazione del database

Informazioni sulle transazioni di database

  • Una transazione รจ un'unitร  di programma la cui esecuzione puรฒ modificare o meno il contenuto di un database.
  • Il concetto di transazione in DBMS viene eseguito come una singola unitร .
  • Se le operazioni del database non aggiornano il database ma recuperano solo i dati, questo tipo di transazione viene chiamata transazione di sola lettura.
  • Una transazione riuscita puรฒ modificare il database da uno STATO COERENTE a un altro.
  • Le transazioni del DBMS devono essere atomiche, coerenti, isolate e durevoli.
  • Se il database fosse in uno stato incoerente prima di una transazione, rimarrebbe in tale stato anche dopo la transazione.

Perchรฉ รจ necessaria la concorrenza nelle transazioni?

Un database รจ una risorsa condivisa. Viene utilizzato contemporaneamente da molti utenti e processi. Esempi includono i sistemi bancari, i sistemi di prenotazione ferroviaria e aerea, il monitoraggio del mercato azionario e la gestione delle scorte e delle casse dei supermercati.

La mancata gestione dell'accesso simultaneo puรฒ creare problemi come:

  • Guasti hardware e arresti anomali del sistema.
  • Esecuzione simultanea della stessa transazione, punto mortoo prestazioni lente.

Il controllo di questo accesso condiviso รจ compito di controllo della concorrenzache utilizza blocchi e timestamp per intercalare le transazioni in modo sicuro. Prima di ciรฒ, รจ utile conoscere gli stati che una transazione attraversa.

Stati delle transazioni

I vari stati di un concetto di transazione nel DBMS sono elencati di seguito:

Regione / Stato Descrizione
Stato attivo Una transazione passa allo stato attivo quando inizia il processo di esecuzione. Durante questo stato, รจ possibile effettuare operazioni di lettura o scrittura.
Parzialmente impegnato Una transazione passa allo stato di "parzialmente confermata" al termine della sua esecuzione.
Stato impegnato Quando la transazione raggiunge lo stato "confermato", significa che la sua esecuzione รจ stata completata con successo e tutte le modifiche apportate vengono registrate in modo permanente nel database.
Stato fallito Una transazione si considera fallita quando uno qualsiasi dei controlli fallisce, oppure se la transazione viene interrotta mentre รจ in stato attivo.
Stato terminato Lo stato di una transazione raggiunge lo stato "terminata" quando la transazione esce dal sistema e non puรฒ essere riavviata.

Diagramma di transizione di stato per una transazione di database

Studiamo un diagramma di transizione di stato che evidenzia come una transazione si muove tra questi vari stati.

  1. Una volta avviata l'esecuzione, una transazione diventa attiva. Puรฒ quindi eseguire un'operazione di lettura o di scrittura.
  2. Una volta completate le operazioni di lettura e scrittura, la transazione raggiunge lo stato di "parzialmente confermata".
  3. Successivamente, alcuni protocolli di ripristino devono garantire che un errore di sistema non comporti l'impossibilitร  di registrare in modo permanente le modifiche alla transazione. Se questo controllo ha esito positivo, la transazione viene confermata ed entra nello stato di conferma.
  4. Se il controllo fallisce, la transazione passa allo stato di errore.
  5. Se la transazione viene interrotta mentre รจ nello stato attivo, passa allo stato di errore. La transazione deve essere annullata per revocare l'effetto delle operazioni di scrittura sul database.
  6. Lo stato terminato si riferisce alla transazione che lascia il sistema.

Quali sono le proprietร  degli acidi?

Proprietร  ACIDO vengono utilizzati per mantenere l'integritร  del database durante l'elaborazione delle transazioni. ACID in DBMS sta per Atomicitร , Consistenza, Iconforto, e Ddurabilitร .

  • Atomcittร : Una transazione รจ una singola unitร  operativa. O lo esegui interamente o non lo esegui affatto. Non puรฒ esserci esecuzione parziale.
  • Consistenza: Una volta eseguita la transazione, dovrebbe passare da uno stato coerente a un altro.
  • Isolamento: Una transazione deve essere eseguita in modo isolato dalle altre. Durante l'esecuzione simultanea, i risultati intermedi delle transazioni eseguite simultaneamente non devono essere resi disponibili l'uno all'altro.
  • Durata: Una volta completata con successo una transazione, le modifiche apportate al database dovrebbero persistere, anche in caso di guasti del sistema.

Proprietร  ACID nei DBMS con esempio

Di seguito รจ riportato un esempio della proprietร  ACID in un DBMS:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

La transazione 1 trasferisce $ 50 dal conto X al conto Y.

La transazione 2 accredita su ciascun conto un pagamento di interessi del 10%.

Se entrambe le transazioni vengono inviate contemporaneamente, non vi รจ alcuna garanzia che la Transazione 1 venga eseguita prima della Transazione 2 o viceversa. Indipendentemente dall'ordine, il risultato sarร  come se le transazioni si svolgessero in sequenza, una dopo l'altra.

Tipi di transazioni

In base ai settori di applicazione:

  • Non distribuito vs. distribuito.
  • Operazioni compensative.
  • Tempistica della transazione.
  • Online vs. batch.

In base alle azioni:

  • In due fasi.
  • Limitato.
  • Modello di azione.

In base alla struttura:

  • Transazioni semplici o piatte: consistono in una sequenza di operazioni primitive eseguite tra un'operazione di inizio e un'operazione di fine.
  • Transazioni nidificate: una transazione che contiene altre transazioni.
  • Flusso di lavoro.

Cos'รจ un programma?

Una pianificazione รจ un processo che crea un singolo gruppo di piรน transazioni parallele e le esegue una alla volta. Deve preservare l'ordine in cui le istruzioni appaiono in ciascuna transazione. Se due transazioni vengono eseguite contemporaneamente, il risultato di una transazione puรฒ influenzare l'output dell'altra.

Esempio

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Se la Transazione 2 viene eseguita prima della Transazione 1, verranno lette le informazioni obsolete sulla quantitร  del prodotto. Sono quindi necessari degli orari.

L'esecuzione parallela in un database รจ inevitabile. Tuttavia, l'esecuzione parallela รจ consentita solo quando esiste una relazione di equivalenza tra le transazioni eseguite simultaneamente. Questa equivalenza รจ di tre tipi.

Equivalenza dei risultati: Se due pianificazioni mostrano lo stesso risultato dopo l'esecuzione, si dice che si tratta di pianificazioni con risultati equivalenti. Possono offrire lo stesso risultato per alcuni valori e risultati diversi per un altro insieme di valori. Ad esempio, una transazione aggiorna la quantitร  del prodotto mentre un'altra aggiorna i dettagli del cliente.

Visualizza l'equivalenza: L'equivalenza delle viste si verifica quando le transazioni in entrambe le pianificazioni eseguono un'azione simile. Ad esempio, una transazione inserisce i dettagli del prodotto nella tabella dei prodotti, mentre un'altra transazione inserisce i dettagli del prodotto nella tabella degli archivi. La transazione รจ la stessa, ma le tabelle sono diverse.

Equivalenza del conflitto: In questo caso, due transazioni aggiornano o visualizzano lo stesso insieme di dati. Si verifica un conflitto tra le transazioni, poichรฉ l'ordine di esecuzione influirร  sul risultato.

Cos'รจ la serializzabilitร ?

La serializzabilitร  รจ il processo di ricerca di una pianificazione concorrente il cui output sia uguale a quello di una pianificazione seriale, in cui le transazioni vengono eseguite una dopo l'altra. A seconda del tipo di pianificazione, esistono due tipi di serializzabilitร :

  • Serializzabilitร  dei conflitti.
  • Visualizza la serializzabilitร .

I due metodi differiscono nel grado di rigore con cui giudicano l'equivalenza, come riassunto di seguito.

Aspetto Serializzabilitร  dei conflitti Visualizza la serializzabilitร 
Base Ordine delle operazioni in conflitto Relazioni di lettura e scrittura finale
Test Il grafo di precedenza deve essere aciclico Visualizza l'equivalenza a una programmazione seriale
Rigore Piรน rigoroso, un sottoinsieme Piรน ampio, include gli scrittori ciechi
Costo del controllo Routing Computazionalmente difficile

Ogni schema serializzabile in base a conflitti รจ anche serializzabile in base a viste, ma non viceversa; ecco perchรฉ la serializzabilitร  in base a conflitti รจ il test pratico applicato da un DBMS.

DOMANDE FREQUENTI

Il commit rende permanenti le modifiche di una transazione nel database. Il rollback annulla tutte le modifiche apportate dall'inizio della transazione, riportando il database allo stato coerente che esisteva prima del suo avvio.

Atomatomicitร . Se si verifica un arresto anomalo a metร  dell'operazione, l'atomicitร  garantisce che il lavoro parziale venga scartato, in modo che la transazione venga trattata come se non fosse mai stata eseguita. La durabilitร  protegge quindi il lavoro completato dopo il ripristino.

L'IA analizza i grafici di attesa dei blocchi e di deadlock per individuare le transazioni che bloccano le altre, quindi raccomanda un livello di isolamento o una modifica dell'indice che riduca la contesa senza compromettere la correttezza.

In una certa misura. Apprendendo gli schemi di richiesta di blocco che hanno preceduto i deadlock precedenti, un modello puรฒ segnalare tempestivamente una combinazione di transazioni rischiosa, consentendo allo scheduler di ritardare o riordinare le transazioni prima che si formi un ciclo.

Una pianificazione seriale esegue una transazione completamente prima che inizi la successiva, quindi nessuna interleaving puรฒ corrompere i dati. รˆ lenta, motivo per cui l'obiettivo รจ una pianificazione concorrente serializzabile in questo modo.

Riassumi questo post con: