TRANSAZIONI SQL

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 UPDATE query che puoi utilizzare ROLLBACK per 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 COMMIT Il 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 Student tabella 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.

produzioneTavolo 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

produzioneproduzione

3. Comando ROLLBACK

IL ROLLBACK Il 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 del BEGIN 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 DELETE l'operazione viene annullata e le modifiche al database non vengono salvate.

 DELETE FROM Student WHERE AGE = 20;   
ROLLBACK;

Produzione:

produzioneproduzione

4. Comando PUNTO SALVATAGGIO

UN SAVEPOINT viene utilizzato per creare un file punto di controllo all'interno di una transazione. Possiamo tornare a uno specifico SAVEPOINT invece 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:

produzioneproduzione

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 SAVEPOINT Il 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 DELETE l'operazione viene annullata e la transazione viene riportata allo stato in cui si trovava al momento SP1 punto di salvataggio.

 ROLLBACK TO SP1;   
//Rollback completed

Produzione:

produzioneproduzione

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 SP2 viene 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 SELECT domande.
  • Scrivi transazioni : comportano la modifica dei dati nel database con INSERT UPDATE O DELETE operazioni.
  • 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 TRANSACTION COMMIT E ROLLBACK .

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 domande

Quale 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.

Spiegazione:

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

Spiegazione:

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

Spiegazione:

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.

Spiegazione:

"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.

Spiegazione:

Il rollback su "SAVEPOINT A" annulla tutte le modifiche apportate dopo quel punto di salvataggio che sono "UPDATE" e "DELETE".

TRANSAZIONI SQLQuiz completato con successo Il tuo punteggio:   2 /5 Precisione:  0% Accedi per visualizzare la spiegazione 1 /5 1 /5 < Previous Avanti >