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.

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.

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. |
Studiamo un diagramma di transizione di stato che evidenzia come una transazione si muove tra questi vari stati.
- Una volta avviata l'esecuzione, una transazione diventa attiva. Puรฒ quindi eseguire un'operazione di lettura o di scrittura.
- Una volta completate le operazioni di lettura e scrittura, la transazione raggiunge lo stato di "parzialmente confermata".
- 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.
- Se il controllo fallisce, la transazione passa allo stato di errore.
- 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.
- 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.

