TRANSAZIONI SQL
Una transazione SQL è una sequenza di una o più operazioni SQL (ad es. INSERT UPDATE DELETE ) eseguiti come un'unica unità di lavoro. Le transazioni garantiscono che tutte le operazioni abbiano esito positivo o che nessuna venga applicata mantenendo l'integrità dei dati.
Proprietà chiave delle transazioni SQL: ACID
L'integrità delle transazioni SQL è governata dalle proprietà ACID che garantiscono transazioni di database affidabili. Queste quattro proprietà lavorano insieme per garantire che il database rimanga coerente e affidabile.
- Atomicità: L'esito di una transazione può essere completamente positivo o completamente infruttuoso. Se una parte fallisce, è necessario eseguire il rollback dell'intera transazione.
- Coerenza: Le transazioni mantengono le restrizioni sull'integrità spostando il database da uno stato valido a un altro.
- Isolamento: Le transazioni simultanee sono isolate l'una dall'altra garantendo l'accuratezza dei dati.
- Durabilità: Una volta confermata una transazione, le sue modifiche rimangono effettive anche in caso di guasto del sistema.
Comandi di controllo delle transazioni SQL
Nei comandi di controllo delle transazioni SQL gestiscono i file esecuzione di operazioni SQL garantendo l'integrità e l'affidabilità delle transazioni del database. Questi comandi aiutano a gestire il commit iniziale e il rollback delle modifiche apportate al database. Di seguito sono riportati i comandi chiave di controllo delle transazioni in SQL spiegati con sintassi ed esempi per ciascuno.
1. Comando INIZIO TRANSAZIONE
IL BEGIN TRANSACTION Il comando segna l'inizio di una nuova transazione. Tutte le istruzioni SQL che seguono questo comando faranno parte della stessa transazione fino a quando a COMMIT O ROLLBACK si incontra. Questo comando non apporta alcuna modifica al database, avvia semplicemente la transazione.
Sintassi:
BEGIN TRANSACTION transaction_name ;Esempio di transazione SQL con scenario di bonifico bancario
Vediamo un esempio di bonifico bancario tra due conti. Questo esempio dimostra l'utilizzo di più query in una singola transazione.
BEGIN TRANSACTION;
-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';
-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';
-- Commit the transaction if both operations succeed
COMMIT;Se si verifica un errore, ad esempio un problema con il file
UPDATEquery che puoi utilizzareROLLBACKper annullare tutte le modifiche apportate durante la transazione:ROLLBACK;Ciò garantisce che il sistema non finisca in uno stato incoerente come detrarre denaro da un conto senza aggiungerlo a un altro.
BEGIN TRANSACTION TransferFunds;2. Comando COMMIT
IL
COMMITIl comando viene utilizzato per salvare nel database tutte le modifiche apportate durante la transazione corrente. Una volta effettuata la transazione, le modifiche sono permanenti.Sintassi:
COMMIT;Esempio
Ecco il campione
Studenttabella che verrà utilizzata per eseguire le operazioni in questo esempio. Questa tabella contiene i dettagli di base dello studente come il nome dell'ID, l'età e altre informazioni rilevanti che verranno manipolate utilizzando vari comandi di controllo delle transazioni.Tavolo per studenti
Di seguito è riportato un esempio che eliminerebbe dalla tabella i record che hanno età = 20 e quindi COMMIT le modifiche nel database.
DELETE FROM Student WHERE AGE = 20;
COMMIT;Produzione
produzione
3. Comando ROLLBACK
IL
ROLLBACKIl comando viene utilizzato per annullare tutte le modifiche apportate nella transazione corrente. Viene utilizzato quando si verifica un errore o quando non è possibile completare le modifiche desiderate. Il database tornerà allo stato in cui si trovava prima delBEGIN TRANSACTIONè stato giustiziato.Sintassi:
ROLLBACK;Esempio
Elimina i record dalla tabella che hanno età = 20 e quindi ROLLBACK le modifiche nel database. In questo caso il
DELETEl'operazione viene annullata e le modifiche al database non vengono salvate.DELETE FROM Student WHERE AGE = 20;
ROLLBACK;Produzione:
produzione
4. Comando PUNTO SALVATAGGIO
UN
SAVEPOINTviene utilizzato per creare un file punto di controllo all'interno di una transazione. Possiamo tornare a uno specificoSAVEPOINTinvece di ripristinare l'intera transazione. Questo ci consente di annullare parte della transazione anziché l'intera transazione.Sintassi:
SAVEPOINT SAVEPOINT_NAME;Esempio
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.Produzione:
produzione
Spiegazione:
Dall'esempio sopra Tabella di esempio 1 Elimina i record dalla tabella che hanno età = 20 e quindi ROLLBACK delle modifiche nel database mantenendo i punti di salvataggio. Qui SP1 viene creato per il primo SAVEPOINT prima dell'eliminazione. In questo esempio è avvenuta una cancellazione. Dopo la cancellazione viene creato nuovamente SAVEPOINT SP2.
5. ROLLBACK AL PUNTO DI SALVATAGGIO
IL
ROLLBACK TO SAVEPOINTIl comando ci consente di ripristinare la transazione su un punto di salvataggio specifico annullando di fatto le modifiche apportate dopo quel punto.Sintassi:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Esempio
Se l'eliminazione è stata effettuata, supponiamo di aver cambiato idea e di aver deciso di ROLLBACK al SAVEPOINT che abbiamo identificato come SP1 che si trova prima dell'eliminazione. Quindi in questo caso il
DELETEl'operazione viene annullata e la transazione viene riportata allo stato in cui si trovava al momentoSP1punto di salvataggio.ROLLBACK TO SP1;
//Rollback completedProduzione:
produzione
6. Comando RILASCIA PUNTO DI SALVATAGGIO
Questo comando viene utilizzato per rimuovere un SAVEPOINT che abbiamo creato. Una volta rilasciato un SAVEPOINT non potremo più utilizzare il ROLLBACK comando per annullare le transazioni eseguite dall'ultimo SAVEPOINT. Viene utilizzato per avviare una transazione del database e utilizzato per specificare le caratteristiche della transazione che segue.
Sintassi:
RELEASE SAVEPOINT SAVEPOINT_NAME;Esempio
Una volta raggiunto il punto di salvataggio
SP2viene rilasciato, non possiamo più ripristinarlo.RELEASE SAVEPOINT SP2; -- Release the second savepoint.Perché utilizzare le transazioni nel settore bancario?
In questo caso, senza una transazione, si rischiano scenari in cui il denaro viene detratto da un conto ma non aggiunto all'altro, lasciando il sistema in uno stato incoerente. Le transazioni assicurano che tali problemi vengano evitati garantendo che entrambe le operazioni abbiano successo o falliscano insieme.
Tipi di transazioni SQL
Esistono diverse tipologie di operazioni in base alla loro natura e alle specifiche operazioni che compiono:
- Leggi le transazioni : Utilizzato per leggere solo i dati in genere con
SELECTdomande.
- Scrivi transazioni : comportano la modifica dei dati nel database con
INSERTUPDATEODELETEoperazioni.
- Transazioni distribuite : queste transazioni si estendono su più database e garantiscono la coerenza tra di essi.
- Transazioni implicite : avviato automaticamente da SQL Server per determinate operazioni.
- Transazioni esplicite : transazioni controllate manualmente in cui l'utente inizia e termina la transazione utilizzando
BEGIN TRANSACTIONCOMMITEROLLBACK.
Monitoraggio e ottimizzazione delle transazioni SQL
Per mantenere le prestazioni e prevenire problemi, prendere in considerazione le seguenti tecniche:
1. Monitorare i blocchi : monitora il comportamento di blocco e regola le query per ridurre al minimo i conflitti di blocco.
2. Limitare l'ambito della transazione : limita il numero di righe o record interessati da una transazione per accelerare l'elaborazione.
3. Utilizzare l'elaborazione batch : se gestisci grandi quantità di dati, suddividi le operazioni in transazioni o batch più piccoli per evitare di sovraccaricare il sistema.
Quiz suggerito Modifica quiz 5 domandeQuale dei seguenti scenari descrive meglio una violazione della proprietà "Isolamento" in ACID?
- UN
Una transazione lascia il database in uno stato che viola un vincolo di chiave primaria.
- B
Due transazioni eseguite contemporaneamente leggono e scrivono sugli stessi dati portando a risultati incoerenti.
- C
Un utente aggiorna correttamente un record ma un arresto anomalo del sistema cancella la modifica.
- D
Una transazione fallisce a metà e tutte le sue modifiche vengono annullate.
Questo è un classico esempio di violazione dell'isolamento in cui lo stato intermedio di una transazione è visibile a un'altra.
In un'applicazione bancaria un trasferimento di fondi comporta l'addebito di un conto e l'accredito su un altro. Quale proprietà ACID garantisce che entrambe le operazioni vengano completate o che nessuna delle due venga completata?
- UN
Isolamento
- B
Atomicità
- C
Durabilità
- D
Coerenza
L'atomicità garantisce che tutte le operazioni all'interno di una transazione vengano completate con successo; in caso contrario viene eseguito il rollback dell'intera transazione.
Viene eseguita una transazione e viene emesso un "COMMIT". Immediatamente dopo che si verifica un'interruzione di corrente. Quale proprietà ACID garantisce che le modifiche apportate dalla transazione siano ancora presenti dopo il riavvio del sistema?
- UN
Coerenza
- B
Atomicità
- C
Durabilità
- D
Isolamento
La durabilità è la proprietà che garantisce che una volta eseguita una transazione, rimarrà tale anche in caso di interruzione di corrente o arresto anomalo del sistema.
Qual è lo scopo principale del comando "SAVEPOINT" in una transazione?
- UN
Impegnare una parte della transazione.
- B
Per contrassegnare un punto in una transazione a cui è possibile ripristinare successivamente.
- C
Per salvare permanentemente lo stato della transazione.
- D
Per terminare la transazione e rendere permanenti tutte le modifiche.
"SAVEPOINT" consente rollback parziali all'interno di una transazione.
Considera la seguente transazione: 'INIZIA TRANSAZIONE; INSERISCI...; PUNTO DI SALVATAGGIO A; AGGIORNAMENTO ...; PUNTO DI SALVATAGGIO B; ELIMINARE ...; ROLLBACK AL PUNTO DI SALVATAGGIO A;' Qual è lo stato della transazione dopo il comando 'ROLLBACK'?
- UN
Viene eseguito il rollback dell'intera transazione.
- B
Viene annullato solo il comando 'DELETE'.
- C
Si verifica un errore perché non è possibile ripristinare un punto di salvataggio che non sia il più recente.
- D
L''INSERT' viene salvato ma l''UPDATE' e l''DELETE' vengono annullati.
Il rollback su "SAVEPOINT A" annulla tutte le modifiche apportate dopo quel punto di salvataggio che sono "UPDATE" e "DELETE".
Quiz completato con successo Il tuo punteggio: 2 /5 Precisione: 0% Accedi per visualizzare la spiegazione 1 /5 1 /5 < Previous Avanti >
Tavolo per studenti
produzione
produzione
produzione
produzione