logo

TRANSACCIONS SQL

Una transacció SQL és una seqüència d'una o més operacions SQL (p.INSERT UPDATE DELETE) executat com una única unitat d'obra. Les transaccions garanteixen que totes les operacions tinguin èxit o que no s'apliquin cap mantenint la integritat de les dades.

Propietats clau de les transaccions SQL: ACID

La integritat de les transaccions SQL es regeix per les propietats ACID que garanteixen transaccions de base de dades fiables. Aquestes quatre propietats funcionen conjuntament per garantir que la base de dades segueixi sent coherent i fiable.

Com trobar números bloquejats a Android
  • Atomicitat: El resultat d'una transacció pot ser completament satisfactori o completament infructuós. S'ha de revertir tota la transacció si una part falla.
  • Coherència: Les transaccions mantenen les restriccions d'integritat movent la base de dades d'un estat vàlid a un altre.
  • Aïllament: Les transaccions concurrents s'aïllen entre si, garantint la precisió de les dades.
  • Durabilitat: Un cop confirmada una transacció, les seves modificacions continuen vigents fins i tot en cas d'error del sistema.

Ordres de control de transaccions SQL

A les ordres de control de transaccions SQL gestionen el execució d'operacions SQL garantint la integritat i la fiabilitat de les transaccions de la base de dades. Aquestes ordres ajuden a gestionar l'inici de confirmació i la recuperació dels canvis fets a la base de dades. A continuació s'expliquen les ordres clau de control de transaccions en SQL amb sintaxi i exemples per a cadascuna.



1. Ordre COMENÇA LA TRANSACCIÓ

ElBEGIN TRANSACTIONL'ordre marca l'inici d'una nova transacció. Totes les sentències SQL que segueixen aquesta ordre formaran part de la mateixa transacció fins a aCOMMIT o ROLLBACK es troba. Aquesta ordre no fa cap canvi a la base de dades, només inicia la transacció.

Sintaxi:

BEGIN TRANSACTION transaction_name ;

Exemple de transacció SQL amb un escenari de transferència bancària

Vegem un exemple de transferència bancària entre dos comptes. Aquest exemple demostra l'ús de diverses consultes en una sola transacció.

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;

Si es produeix algun error, com ara un problema amb elUPDATEconsulta que podeu utilitzarROLLBACKper desfer tots els canvis realitzats durant la transacció:

ROLLBACK;

Això garanteix que el sistema no acabi en un estat inconsistent, com ara deduir diners d'un compte sense afegir-los a un altre.

BEGIN TRANSACTION TransferFunds;

2. Ordre COMMIT

ElCOMMITL'ordre s'utilitza per desar tots els canvis realitzats durant la transacció actual a la base de dades. Un cop realitzada una transacció, els canvis són permanents. 

Sintaxi:

COMMIT;

Exemple

Aquí teniu la mostraStudenttaula que s'utilitzarà per realitzar les operacions d'aquest exemple. Aquesta taula conté detalls bàsics de l'estudiant, com ara el nom d'identificació, l'edat i altra informació rellevant que es manipularà amb diversos ordres de control de transaccions.

sortida' title=Taula d'estudiants

A continuació es mostra un exemple que eliminaria aquells registres de la taula que tenen edat = 20 i després COMMIT els canvis a la base de dades. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Sortida

sortida' loading='lazy' title=sortida

3. Ordre ROLLBACK

ElROLLBACKL'ordre s'utilitza per desfer tots els canvis fets a la transacció actual. S'utilitza quan es produeix un error o quan no es poden completar els canvis desitjats. La base de dades tornarà a l'estat en què es trobava abans BEGIN TRANSACTION va ser executat.

Sintaxi:

ROLLBACK;

Exemple

Suprimiu aquells registres de la taula que tinguin edat = 20 i, a continuació, RETROVEU els canvis a la base de dades. En aquest cas el DELETE L'operació es desfer i els canvis a la base de dades no es guarden.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

Sortida:

sortida' loading='lazy' title=sortida

4. Ordre SAVEPOINT

ASAVEPOINTs'utilitza per crear un punt de control dins d'una transacció. Podem retrocedir a un concretSAVEPOINTen lloc de revertir tota la transacció. Això ens permet desfer una part de la transacció en lloc de tota la transacció.

Sintaxi:

SAVEPOINT SAVEPOINT_NAME;

Exemple

SAVEPOINT SP1;  
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.

Sortida:

sortida' loading='lazy' title=sortida

Explicació:

A l'exemple anterior Taula d'exemple1 Suprimiu els registres de la taula que tinguin edat = 20 i, a continuació, RETROVEU els canvis a la base de dades conservant els punts de desat. Aquí SP1 és el primer SAVEPOINT creat abans de la supressió. En aquest exemple s'ha produït una supressió. Després de l'eliminació de nou, es crea SAVEPOINT SP2. 

5. TORNAR AL PUNT DE DESA

ElROLLBACK TO SAVEPOINTL'ordre ens permet revertir la transacció a un punt de desat específic desfent de manera efectiva els canvis fets després d'aquest punt.

Sintaxi:

ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Exemple

La supressió s'ha produït, suposem que hem canviat d'opinió i hem decidit ROLLBACK al SAVEPOINT que hem identificat com a SP1 que és abans de la supressió. Així que en aquest cas elDELETEL'operació es desfà i la transacció es torna a l'estat en què es trobava aSP1punt de guarda.

ROLLBACK TO SP1;  
//Rollback completed

Sortida:

sortida' loading='lazy' title=sortida

6. LIBERA L'ordre SAVEPOINT

Aquesta ordre s'utilitza per eliminar un SAVEPOINT que hem creat. Un cop s'ha publicat un SAVEPOINT, ja no podem utilitzar el ROLLBACK ordre per desfer les transaccions realitzades des de l'últim SAVEPOINT. S'utilitza per iniciar una transacció de base de dades i s'utilitza per especificar les característiques de la transacció que segueix. 

Sintaxi:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Exemple

Un cop el punt de salvamentSP2s'allibera, ja no podem tornar-hi.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Per què utilitzar les transaccions a la banca?

En aquest cas, sense transacció, corre el risc d'escenaris en què es dedueixen diners d'un compte però no s'afegeixen a l'altre deixant el sistema en un estat inconsistent. Les transaccions garanteixen que aquests problemes s'evitin garantint que ambdues operacions tinguin èxit o fracassin conjuntament.

Tipus de transaccions SQL

Hi ha diferents tipus d'operacions segons la seva naturalesa i les operacions específiques que realitzen:

  • Llegeix Transaccions : S'utilitza per llegir només les dades normalment amb SELECT consultes.
  • Escriure transaccions : Es tracta de modificar les dades de la base de dades amb INSERT UPDATEoDELETEoperacions.
  • Transaccions distribuïdes : Aquestes transaccions abasten diverses bases de dades i garanteixen la coherència entre elles.
  • Transaccions implícites : SQL Server s'inicia automàticament per a determinades operacions.
  • Transaccions explícites : Transaccions controlades manualment on l'usuari comença i acaba la transacció utilitzantBEGIN TRANSACTION COMMITiROLLBACK.

Monitorització i optimització de transaccions SQL

Per mantenir el rendiment i prevenir problemes, tingueu en compte les tècniques següents:

1. Panys de monitor : Feu un seguiment del comportament de bloqueig i ajusteu les consultes per minimitzar els conflictes de bloqueig.

2. Limitar l'abast de la transacció : Limiteu el nombre de files o registres afectats per una transacció per accelerar el processament.

3. Utilitzeu el processament per lots : Si esteu manipulant grans quantitats de dades, dividiu les operacions en transaccions o lots més petits per evitar aclaparar el sistema.

Test suggerit Edita el qüestionari 5 preguntes

Quin dels escenaris següents descriu millor una infracció de la propietat "Aïllament" a ACID?

  • A

    Una transacció deixa la base de dades en un estat que infringeix una restricció de clau primària.

  • B

    Dues transaccions que s'executen simultàniament llegeixen i escriuen a les mateixes dades, donant lloc a resultats inconsistents.

  • C

    Un usuari actualitza correctament un registre, però un error del sistema esborra el canvi.

  • D

    Una transacció falla a mig camí i tots els seus canvis es reverteixen.

Explicació:

Aquest és un exemple clàssic d'una violació d'aïllament on l'estat intermedi d'una transacció és visible per a una altra.

En una aplicació bancària, una transferència de fons implica el càrrec d'un compte i l'abonament d'un altre. Quina propietat d'ACID garanteix que les dues operacions es completin o cap de les dues?

Explicació:

L'atomicitat assegura que totes les operacions dins d'una transacció es completen amb èxit; en cas contrari, es revertirà tota la transacció.

S'executa una transacció i s'emet un "COMMIT". Immediatament després que es produeixi una fallada de corrent. Quina propietat d'ACID garanteix que els canvis fets per la transacció encara estiguin presents després de reiniciar el sistema?

  • A

    Coherència

  • B

    Atomicitat

  • C

    Durabilitat

  • D

    Aïllament

Explicació:

La durabilitat és la propietat que garanteix que una vegada que s'hagi realitzat una transacció, ho mantindrà fins i tot en cas de pèrdua d'energia o fallada del sistema.

Quin és l'objectiu principal de l'ordre 'SAVEPOINT' en una transacció?

  • A

    Per comprometre una part de la transacció.

  • B

    Per marcar un punt d'una transacció al qual després podeu retrocedir.

  • C

    Per desar permanentment l'estat de la transacció.

  • D

    Per finalitzar la transacció i fer que tots els canvis siguin permanents.

Explicació:

"SAVEPOINT" permet retrocedir parcialment dins d'una transacció.

Considereu la transacció següent: 'INICIA LA TRANSACCIÓ; INSERT...; SAVEPUNT A; ACTUALITZACIÓ...; SAVEPUNT B; ELIMINAR...; TORNAR AL PUNT DE DESA A;' Quin és l'estat de la transacció després de l'ordre 'ROLLBACK'?

  • A

    Es revertirà tota la transacció.

  • B

    Només es desfer l'opció "SUPRIMIR".

  • C

    S'ha produït un error perquè no podeu tornar a un punt de desat que no sigui el més recent.

  • D

    S'ha desat "INSERT" però "ACTUALITZACIÓ" i "SUPRIMIR" s'han desfet.

Explicació:

Tornar a "SAVEPOINT A" desfer tots els canvis fets després d'aquest punt de desat que són "ACTUALITZACIÓ" i "SUPRIMIR".

TRANSACCIONS SQLTest completat amb èxit La teva puntuació:  2/5Precisió: 0%Inicieu sessió per veure l'explicació 1/5 1/5 < Previous Següent >