Transaccions, Propietats ACID i Anomalies de Concurrència
Flashcards
- Quina propietat ACID assegura que una fallada en el subministrament elèctric no perdi canvis ja confirmats?
- La definitivitat o durabilitat, ja que garanteix que els canvis consolidats persisteixen fins i tot davant fallades del maquinari.
- En què consisteix exactament una lectura no confirmada?
- Consisteix a llegir una dada que ha estat modificada per una altra transacció activa que finalment fa un ROLLBACK o l'altera de nou abans de confirmar.
Preguntes tipus test
- Què implica la propietat d'atomicitat en una transferència bancària entre dos comptes?
- a) Que el saldo final és sempre superior a zero
- b) Que cap altre client pot veure els comptes
- c) Que s'executa sencera o no s'aplica cap pas
- d) Que les dades s'escriuen de manera definitiva
Resposta: c) Que s'executa sencera o no s'aplica cap pas. L'atomicitat exigeix que totes les operacions d'una transacció es realitzin completament o cap d'elles tingui efecte.
- Quin problema sorgeix quan una transacció sobreescriu el saldo d'una altra sense tenir en compte el seu canvi?
- a) Lectura fantasma
- b) Actualització perduda
- c) Lectura no confirmada
- d) Bloqueig mortal
Resposta: b) Actualització perduda. L'actualització perduda ocorre quan una escriptura concurrent sobreescriu i ignora els canvis d'una transacció prèvia.
- Quin tipus d'anomalia es produeix si apareixen files noves en repetir una consulta dins la mateixa transacció?
- a) Actualització perduda
- b) Lectura no confirmada
- c) Lectura no repetible
- d) Lectura fantasma
Resposta: d) Lectura fantasma. Els fantasmes són nous registres inserits per una altra transacció que compleixen la condició de filtratge.
Serialitzabilitat, Accions Conflictives i Grafs de Precedències
Flashcards
- Quantes ordenacions serials pures es poden obtenir si s'executen 3 transaccions?
- Es poden formar exactament 3! = 6 horaris serials possibles.
- Per quina raó dues lectures R(A) de dues transaccions diferents no són accions conflictives?
- Perquè cap de les dues accions és una escriptura (W), de manera que l'ordre en què llegeixin no altera el resultat final.
Preguntes tipus test
- Quina condició és imprescindible perquè dues accions sobre el mateix grànul siguin conflictives?
- a) Que acabin totes dues amb commit
- b) Que pertanyin a la mateixa transacció
- c) Que com a mínim una sigui d'escriptura
- d) Que les dues siguin de lectura
Resposta: c) Que com a mínim una sigui d'escriptura. Les accions conflictives han de ser de diferents transaccions sobre el mateix grànul i contenir almenys una escriptura (W).
- Com es determina si un horari concurrent és serialitzable mitjançant el seu graf?
- a) Comprovant que no tingui cicles
- b) Verificant que no contingui cap commit
- c) Comprovant que tingui arcs bidireccionals
- d) Mesurant el temps total d'execució
Resposta: a) Comprovant que no tingui cicles. La condició necessària i suficient per a la serialitzabilitat per conflicte és que el graf de precedències sigui acíclic.
- Què exigeix la recuperabilitat d'un horari?
- a) Que no es facin mai operacions d'escriptura
- b) Mantenir reserves compartides a totes les dades
- c) Executar les transaccions sense cap pausa
- d) Que la transacció lectora confirmi després de l'escriptora
Resposta: d) Que la transacció lectora confirmi després de l'escriptora. Si T2 llegeix dades modificades per T1, T2 només pot fer COMMIT un cop T1 ha confirmat el seu resultat.
Control de Concurrència mitjançant Reserves (Locks) i Protocols 2PL
Flashcards
- Pot una transacció adquirir una reserva compartida sobre un grànul que ja té una reserva exclusiva activa?
- No, perquè les reserves exclusives són completament incompatibles amb qualsevol altre bloqueig, ja sigui compartit o exclusiu.
- Què ha de fer el motor de base de dades quan detecta un cicle al graf d'espera?
- Ha d'avortar almenys una de les transaccions implicades en el cicle per alliberar els seus recursos i desbloquejar les altres.
Preguntes tipus test
- Quin tipus de bloqueig requereix una transacció per modificar una dada amb seguretat?
- a) Reserva exclusiva (X)
- b) Reserva compartida (S)
- c) Reserva temporal (T)
- d) Reserva voluntària (V)
Resposta: a) Reserva exclusiva (X). L'escriptura sobre un grànul exigeix una reserva exclusiva LOCK(G, X), incompatible amb altres reserves.
- Quina acció té estrictament prohibida una transacció en fase de decreixement segons PR2F?
- a) Fer commit de la transacció
- b) Alliberar una reserva existent
- c) Demanar qualsevol nova reserva
- d) Efectuar operacions de lectura
Resposta: c) Demanar qualsevol nova reserva. En el protocol PR2F, un cop s'allibera la primera reserva (fase de decreixement), no es pot demanar cap nova reserva.
- Com actua l'estratègia de timeout davant d'un possible bloqueig mortal?
- a) Concedeix automàticament totes les reserves
- b) Avorta la transacció si supera un temps límit
- c) Bloqueja la resta d'usuaris del sistema
- d) Elimina el fitxer de dietari de canvis
Resposta: b) Avorta la transacció si supera un temps límit. El timeout cancel·la i desfà de manera automàtica una transacció quan aquesta ha estat esperant més temps del límit establert.
Nivells d'Aïllament SQL i Mecanismes de Recuperació
Flashcards
- Quin és el nivell mínim d'aïllament en SQL que protegeix contra les lectures no confirmades?
- El nivell Read Committed, ja que reté les reserves exclusives X fins al final i demana reserves compartides durant la lectura.
- En quina situació cal aplicar una operació REDO durant la recuperació?
- Quan una transacció ha fet COMMIT abans d'una caiguda del sistema però els seus canvis en els buffers de memòria encara no s'havien escrit físicament a disc.
Preguntes tipus test
- Quin nivell d'aïllament permet que una transacció vegi registres fantasma però no lectures no repetibles?
- a) Repeatable Read
- b) Read Committed
- c) Serializable
- d) Read Uncommitted
Resposta: a) Repeatable Read. Repeatable Read bloca les files consultades evitant canvis de valor, però permet la inserció de noves files si no hi ha bloqueig de rang.
- Quina funció té l'operació UNDO durant el procés de restauració?
- a) Reescriure els canvis confirmats al disc
- b) Eliminar les reserves compartides del sistema
- c) Copiar tota la base de dades a un nou servidor
- d) Desfer les operacions de transaccions avortades
Resposta: d) Desfer les operacions de transaccions avortades. L'operació UNDO (o rollback cap enrere) reverteix i anul·la les modificacions fetes per transaccions no consolidades.
- Com s'anomena la còpia de seguretat que només conté els canvis fets des de l'últim backup?
- a) Còpia dinàmica
- b) Còpia incremental
- c) Còpia completa
- d) Còpia estàtica
Resposta: b) Còpia incremental. Les còpies incrementals registren de manera eficient únicament les variacions produïdes des de la darrera còpia prèvia.
I 0 flashcards i 4 preguntes més al document.
Text del document
APUNTS BASES DE DADES Grau en Enginyeria Informàtica Universitat Politècnica de Catalunya AprenAI 2026-2027 Guia completa de transaccions, propietats ACID, serialitzabilitat, protocol 2PL, nivells d'aïllament SQL i recuperació per a Bases de Dades a la FIB UPC.
APREN.AI Índex 1 Transaccions, Propietats ACID i Anomalies de Concurrència Concepte de transacció Propietats ACID Interferències entre transaccions concurrents 2 Serialitzabilitat, Accions Conflictives i Grafs de Precedències Grànuls i operacions bàsiques Horaris i accions conflictives Graf de precedències i serialitzabilitat Recuperabilitat dels horaris 3 Control de Concurrència mitjançant Reserves (Locks) i Protocols 2PL Tècniques de control i tipus de reserves Protocol de Reserves en Dues Fases (PR2F / 2PL) PR2F (fortament) estricte Abraçades mortals (deadlocks) 4 Nivells d'Aïllament SQL i Mecanismes de Recuperació Relaxació de l'aïllament en SQL Arquitectura i protocols de recuperació 5 Resum per repassar Transaccions i propietats ACID Interferències i serialitzabilitat Control de concurrència i bloquejos Nivells d'aïllament i recuperació Solucions de les preguntes de repàs Aquests apunts poden contenir errors o omissions.
Són un material de suport i no substitueixen el temari oficial ni el professorat: contrasta la informació important. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 1 1 Transaccions, Propietats ACID i Anomalies de Concurrència EN ACABAR SABRÀS Definir el concepte de transacció i les sentències de control d'inici i finalització. Explicar les quatre propietats ACID en entorns de bases de dades. Identificar i diferenciar les anomalies derivades de la manca d'aïllament concurrent. PENSA-HI ABANS DE LLEGIR 1 Per què cal tractar una transferència entre comptes com una única unitat indivisible?
Concepte de transacció Una transacció és una seqüència d'operacions de lectura i actualització sobre la base de dades que finalitza confirmant o cancel·lant els seus canvis. El seu inici pot ser explícit mitjançant la sentència START TRANSACTION; o bé implícit en executar qualsevol sentència SQL. El tancament es produeix amb COMMIT per consolidar les modificacions o amb ROLLBACK per desfer-les completament. Propietats ACID Per garantir la integritat del sistema, tota transacció ha de complir de manera estricta quatre característiques essencials conegudes amb l'acrònim ACID: Esquema de les quatre propietats ACID d'una transacció.
Atomicitat: garanteix que les operacions s'executen en la seva totalitat o no se n'efectua cap. Si falla una transferència a mig camí, no es consolida cap canvi parcial. Consistència: responsabilitat compartida amb dissenyadors i programadors perquè la transacció mantingui els requisits de coherència lògica de les dades. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 2 Aïllament: evita que l'execució simultània de diferents usuaris generi comportaments imprevistos o alteracions creuades. Definitivitat (o durabilitat): assegura que, un cop confirmat el canvi, aquest persisteix de forma irrevocable malgrat possibles fallades de disc.
COMPROVA-HO 2 Què passa amb els canvis fets en memòria si el sistema cau abans de completar un COMMIT? Interferències entre transaccions concurrents Quan el sistema no garanteix un aïllament adequat en entorns multiusuari, sorgeixen quatre grans tipus d'anomalies: Anomalia Mecanisme del conflicte Impacte en les dades Actualització perduda Una segona transacció sobreescriu dades modificades abans que la primera tanqui la tasca. Es perd el càlcul d'una de les transaccions, com si mai no s'hagués executat. Lectura no confirmada Es llegeix informació manipulada per una transacció activa que després fa un avortament. Es calculen resultats a partir de valors temporals que s'acaben desfent.
Lectura no repetible Una transacció llegeix el mateix registre dues vegades i rep valors diferents perquè una altra l'ha modificat entremig. Ruptura de coherència en processos que assumeixen estabilitat durant la transacció. Anàlisi inconsistent i fantasmes Una transacció consulta un rang de dades mentre una altra insereix o altera registres que compleixen la condició. Aparició de noves files fantasma a la segona consulta de la mateixa transacció. ERROR FREQÜENT És habitual confondre la lectura no repetible amb els fantasmes.
La lectura no repetible es refereix a canvis en un mateix registre existent, mentre que el fenomen dels fantasmes implica l'aparició o desaparició de registres nous dins d'un conjunt o condició de cerca. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 3 ESQUEMA Propietats ACID IDEES CLAU Una transacció s'inicia de manera explícita o implícita i finalitza sempre amb COMMIT o ROLLBACK. Les propietats ACID (atomicitat, consistència, aïllament i definitivitat) garanteixen la integritat de les transaccions. La manca d'aïllament provoca actualitzacions perdudes, lectures no confirmades, lectures no repetibles i lectures fantasma. COMPROVA EL QUE HAS APRÈS 3.
Quina propietat ACID assegura que una fallada en el subministrament elèctric no perdi canvis ja confirmats? 4. En què consisteix exactament una lectura no confirmada? Test Encercla la resposta correcta. Les solucions són al final. 5. Què implica la propietat d'atomicitat en una transferència bancària entre dos comptes?
Atomicitat Tot o res en l'execució Consistència Preservació de regles i coherència Aïllament Sense interferències d'altres usuaris Definitivitat Persistència dels canvis confirmats Que el saldo final és sempre superior a zero a) Que cap altre client pot veure els comptes b) Que s'executa sencera o no s'aplica cap pas c) Que les dades s'escriuen de manera definitiva d) Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 4 6. Quin problema sorgeix quan una transacció sobreescriu el saldo d'una altra sense tenir en compte el seu canvi? 7. Quin tipus d'anomalia es produeix si apareixen files noves en repetir una consulta dins la mateixa transacció? 8.
Com finalitza una transacció quan cal descartar i revertir totes les seves operacions? 2 Serialitzabilitat, Accions Conflictives i Grafs de Precedències EN ACABAR SABRÀS Definir el terme grànul i les accions bàsiques d'accés a les dades. Identificar parelles d'accions conflictives o no commutables dins d'un horari. Construir grafs de precedències per determinar la serialitzabilitat d'un horari. PENSA-HI ABANS DE LLEGIR 9 Poden dues transaccions llegir la mateixa dada alhora sense molestar-se? Grànuls i operacions bàsiques Un grànul ( ) és la unitat mínima de dades que el SGBD gestiona i controla de forma individualitzada per regular els accessos concurrents.
Sobre cada grànul es poden efectuar diferents accions elementals: : lectura del contingut del grànul. : escriptura o modificació del grànul. : lectura amb intenció declarada d'actualització posterior. Les sentències SQL es tradueixen directament a operacions sobre grànuls. Per exemple, una instrucció SELECT es tradueix en una o més accions , mentre que sentències com INSERT , UPDATE o DELETE generen operacions i .
Lectura fantasma a) Actualització perduda b) Lectura no confirmada c) Bloqueig mortal d) Actualització perduda a) Lectura no confirmada b) Lectura no repetible c) Lectura fantasma d) START TRANSACTION a) ROLLBACK b) UNLOCK c) COMMIT d) G R(G) W(G) RU(G) R(G) RU(G) W(G) Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 5 Horaris i accions conflictives Un horari o història és la intercalació temporal de les accions corresponents a diverses transaccions, respectant sempre l'ordre intern de cada transacció individual. Quan les accions de cada transacció s'executen consecutives sense encavalcar-se amb cap altra, es tracta d'un horari serial.
Donat un conjunt de transaccions, existeixen horaris serials possibles. Dues accions són conflictives (o no commutables) si compleixen simultàniament tres condicions: Diagrama d'accions commutables i conflictives entre dues transaccions. Les parelles d'accions sobre diferents grànuls o dues lectures sobre el mateix grànul són commutables i no generen cap conflicte d'ordenació. Graf de precedències i serialitzabilitat La serialitzabilitat és la teoria matemàtica que formalitza si un horari concurrent garanteix un aïllament correcte. Per avaluar-la es construeix el graf de precedències: Cada transacció constitueix un node del graf.
S'afegeix un arc dirigit si existeix un parell d'accions conflictives on l'acció de s'executa abans en el temps que la de . Criteri d'equivalència serial: un horari és serialitzable si i només si el seu graf de precedències és acíclic (no conté cap cicle). Quan no té cicles, l'horari produeix el mateix resultat que un horari serial format per l'ordre topològic del graf. Graf de precedències acíclic que demostra un horari serialitzable. n n! Pertanyen a transaccions diferents. 1 Operen exactament sobre el mateix grànul . 2 G Com a mínim una d'elles és una operació d'escriptura .
3 W T i T j T i T j Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 6 COMPROVA-HO 10 Què significa que un graf de precedències tingui un cicle entre dues transaccions T1 i T2? Recuperabilitat dels horaris La serialitzabilitat no té en compte que una transacció pugui fallar i fer ROLLBACK . Per això es defineix el concepte de recuperabilitat: un horari és recuperable si cap transacció que llegeixi o escrigui un grànul modificat prèviament per fa COMMIT abans que hagi confirmat. D'aquesta manera s'evita confirmar dades dependents que finalment es cancel·len. ERROR FREQÜENT Un horari pot ser serialitzable i alhora no ser recuperable.
Confondre aquests dos conceptes en un examen costa molts punts: la serialitzabilitat garanteix l'aïllament teòric, mentre que la recuperabilitat assegura la gestió correcta dels avortaments. PROCÉS Avaluació de la Serialitzabilitat 1 Identificar accions conflictives Buscar operacions sobre el mateix grànul amb una escriptura 2 Traçar arcs del graf Afegir Ti a Tj segons l'ordre temporal d'execució 3 Verificar presència de cicles Si no té cicles, l'horari és serialitzable IDEES CLAU Un grànul és la porció mínima de dades que el SGBD gestiona de forma independent. Dues accions són conflictives si pertanyen a diferents transaccions, operen sobre el mateix grànul i com a mínim una és d'escriptura.
Un horari és serialitzable si el seu graf de precedències no conté cicles. Un horari és recuperable si cap transacció fa COMMIT de dades dependents d'una transacció anterior abans que aquesta confirmi. COMPROVA EL QUE HAS APRÈS 11. Quantes ordenacions serials pures es poden obtenir si s'executen 3 transaccions? 12. Per quina raó dues lectures R(A) de dues transaccions diferents no són accions conflictives? T 2 T 1 T 1 Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 7 Test Encercla la resposta correcta. Les solucions són al final. 13. Quina condició és imprescindible perquè dues accions sobre el mateix grànul siguin conflictives? 14.
Com es determina si un horari concurrent és serialitzable mitjançant el seu graf? 15. Què exigeix la recuperabilitat d'un horari? 16. Quina acció elemental expressa una lectura amb intenció d'actualitzar el grànul? 3 Control de Concurrència mitjançant Reserves (Locks) i Protocols 2PL EN ACABAR SABRÀS Distingir entre reserves compartides (S) i exclusives (X) sobre un grànul. Descriure el funcionament del protocol PR2F bàsic i de la variant fortament estricta. Explicar la naturalesa dels deadlocks i comparar les tècniques per resoldre'ls. PENSA-HI ABANS DE LLEGIR 17 Què passaria si dues transaccions esperen cadascuna que l'altra deixi lliure una dada?
Que acabin totes dues amb commit a) Que pertanyin a la mateixa transacció b) Que com a mínim una sigui d'escriptura c) Que les dues siguin de lectura d) Comprovant que no tingui cicles a) Verificant que no contingui cap commit b) Comprovant que tingui arcs bidireccionals c) Mesurant el temps total d'execució d) Que no es facin mai operacions d'escriptura a) Mantenir reserves compartides a totes les dades b) Executar les transaccions sense cap pausa c) Que la transacció lectora confirmi després de l'escriptora d) R(G) a) RU(G) b) W(G) c) UNLOCK(G) d) Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 8 Tècniques de control i tipus de reserves Per gestionar les interferències, un SGBD pot adoptar dues estratègies: cancel·lar transaccions conflictives desfent els seus canvis o suspendre-les temporalment fins que el perill desaparegui.
Per equilibrar el paral·lelisme (volum de feina útil per unitat de temps) amb l'aïllament, s'utilitzen sistemes de reserves o bloquejos (locks). Abans de fer operacions sobre un grànul , la transacció demana una reserva: Reserva compartida ( LOCK(G, S) ): permet la lectura del grànul. Diverses transaccions poden compartir aquesta reserva simultàniament. Reserva exclusiva ( LOCK(G, X) ): autoritza tant la lectura com l'escriptura. És incompatible amb qualsevol altra reserva (S o X). Quan la transacció acaba d'utilitzar el recurs, executa UNLOCK(G) .
Si una transacció sol·licita una reserva incompatible amb una existent, queda en estat d'espera, la qual cosa es modela amb un graf d'espera (wait-for graph). Protocol de Reserves en Dues Fases (PR2F / 2PL) L'ús no regulat de bloquejos no impedeix certes anomalies com la lectura no repetible. Per garantir la serialitzabilitat s'aplica el Protocol de Reserves en Dues Fases (PR2F), el qual divideix l'execució en dues etapes estrictes: Teorema fonamental: si totes les transaccions d'un horari segueixen el protocol PR2F i acaben confirmant amb COMMIT , l'horari resultant és garantidament serialitzable.
PR2F (fortament) estricte El PR2F bàsic no resol per si sol els problemes d'avortament en cascada o lectures no confirmades. Per assegurar la recuperabilitat, s'utilitza la variant anomenada PR2F fortament estricte: manté totes les reserves (tant S com X) retingudes fins a l'acabament definitiu de la transacció. Amb aquesta regla, cap altra transacció pot llegir ni escriure dades modificades abans de la sentència final. COMPROVA-HO 18 Quina diferència operativa hi ha entre el PR2F bàsic i el PR2F fortament estricte? Abraçades mortals (deadlocks) Quan diverses transaccions es bloquegen mútuament a l'espera de recursos retinguts per les altres, es produeix un deadlock o abraçada mortal.
El graf d'espera presenta un cicle tancat i cap procés pot progressar. G Fase de creixement: la transacció adquireix noves reserves i té prohibit alliberar-ne cap. 1 Fase de decreixement: la transacció comença a alliberar reserves i ja no en pot demanar cap més. 2 Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 9 Graf d'espera amb cicle circular que evidencia una abraçada mortal. Els SGBD disposen de tres estratègies per afrontar els bloquejos mortals: Prevenció: imposar un ordre global d'adquisició dels recursos o protocols que impedeixin la formació de dependències creuades.
Detecció i resolució: mantenir el graf d'espera de manera periòdica, en cada suspensió o en detectar retards anòmals; si es detecta un cicle, s'avorta una de les transaccions per trencar el cicle. Temps límit (timeout): definir un temps màxim d'espera superat el qual la transacció es cancel·la automàticament. ERROR FREQÜENT Un error greu és creure que el PR2F evita els bloquejos mortals. El protocol PR2F assegura la serialitzabilitat, però no impedeix la formació de deadlocks; de fet, retenir reserves durant la fase de creixement augmenta la probabilitat de bloqueig circular.
PROCÉS Protocol de Reserves en Dues Fases (PR2F) 1 Fase de creixement Adquisició de reserves sense alliberar-ne cap 2 Punt de bloqueig màxim Moment en què es disposa de totes les reserves 3 Fase de decreixement Alliberament progressiu de reserves sense noves peticions IDEES CLAU Les reserves compartides (S) permeten lectura simultània, mentre que les exclusives (X) bloquegen qualsevol altre accés. El protocol PR2F garanteix la serialitzabilitat dividint el cicle en una fase de creixement i una de decreixement. El protocol PR2F fortament estricte reté tots els bloquejos fins al final de la transacció, evitant lectures no confirmades.
Els deadlocks es formen per dependències circulars al graf d'espera i es gestionen mitjançant prevenció, detecció o timeouts. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 10 COMPROVA EL QUE HAS APRÈS 19. Pot una transacció adquirir una reserva compartida sobre un grànul que ja té una reserva exclusiva activa? 20. Què ha de fer el motor de base de dades quan detecta un cicle al graf d'espera? Test Encercla la resposta correcta. Les solucions són al final. 21. Quin tipus de bloqueig requereix una transacció per modificar una dada amb seguretat? 22. Quina acció té estrictament prohibida una transacció en fase de decreixement segons PR2F? 23.
Com actua l'estratègia de timeout davant d'un possible bloqueig mortal? 24. Quin avantatge clau aporta el PR2F fortament estricte respecte al PR2F convencional? 4 Nivells d'Aïllament SQL i Mecanismes de Recuperació EN ACABAR SABRÀS Classificar els quatre nivells d'aïllament estàndard SQL i les anomalies que permeten o eviten. Distingir les operacions de recuperació UNDO i REDO a partir del dietari. Explicar els mètodes de reconstrucció i els tipus de còpies de seguretat.
Reserva exclusiva (X) a) Reserva compartida (S) b) Reserva temporal (T) c) Reserva voluntària (V) d) Fer commit de la transacció a) Alliberar una reserva existent b) Demanar qualsevol nova reserva c) Efectuar operacions de lectura d) Concedeix automàticament totes les reserves a) Avorta la transacció si supera un temps límit b) Bloqueja la resta d'usuaris del sistema c) Elimina el fitxer de dietari de canvis d) Prescindeix de l'ús de la comanda commit a) Permet un nivell de paral·lelisme molt superior b) Evita l'anomalia de lectures no confirmades c) Elimina totalment els bloquejos mortals d) Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 11 PENSA-HI ABANS DE LLEGIR 25 Per què els motors de bases de dades no treballen sempre amb el nivell màxim d'aïllament?
Relaxació de l'aïllament en SQL Garantir sempre la màxima serialitzabilitat té un cost elevat: genera sobrecàrrega de gestió de reserves al motor i redueix el paral·lelisme útil. Per aquest motiu, l'estàndard SQL permet flexibilitzar el grau d'aïllament mitjançant la sentència: SET TRANSACTION [READ ONLY " READ WRITE] ISOLATION LEVEL <nivell_aïllament>; Els quatre nivells d'aïllament estàndard regulen les reserves utilitzades i les anomalies admeses: Nivell d'aïllament Gestió de reserves Anomalies que evita Anomalies permeses Read Uncommitted Reserves X fins al final. No sol·licita reserves S per llegir. Actualització perduda. Lectura no confirmada, lectura no repetible i fantasmes.
Read Committed Reserves X fins al final. Reserves S només durant la lectura (s'alliberen immediatament després). Actualització perduda i lectura no confirmada. Lectura no repetible i fantasmes. Repeatable Read Reserves X i S fins al final de la transacció sobre files concretes. Actualització perduda, lectura no confirmada i lectura no repetible. Fantasmes (requereix bloquejar informació de control o rangs). Serializable Totes les reserves (incloses les d'informació de control o rangs) fins al final. Evita totes les anomalies (aïllament total). Cap anomalia permesa. COMPROVA-HO 26 Per què el nivell Read Committed admet lectures no repetibles?
Arquitectura i protocols de recuperació Els mecanismes de recuperació del SGBD tenen com a missió protegir l'atomicitat (desfent transaccions avortades) i la definitivitat (preservant transaccions confirmades). Aquestes situacions poden derivar d'errors voluntaris de l'aplicació, cancel·lacions involuntàries, caigudes del sistema o fallades físiques de disc. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 12 Arquitectura modular del SGBD destacant els components de gestió i recuperació.
Segons la magnitud de l'incident, el SGBD distingeix dos processos: Restauració: atén cancel·lacions i caigudes de la màquina mitjançant el dietari (o log), que registra la informació de cada canvi: Restauració cap enrere (rollback / UNDO): desfà les alteracions d'una transacció cancel·lada o no confirmada en el moment de la fallada. Restauració cap endavant (rollforward / REDO): torna a aplicar sobre el disc els canvis de transaccions confirmades que s'havien quedat en els buffers de memòria. Reconstrucció: aborda la pèrdua física total o parcial del disc combinant una còpia de seguretat (backup) d'un estat correcte amb el dietari des de l'instant del backup fins a l'avaria.
Les còpies de seguretat es classifiquen en estàtiques (es fan amb la base de dades aturada o sota estat controlat), dinàmiques (es generen en ple funcionament del sistema), completes (dupliquen la totalitat de les dades) o incrementals (enregistren únicament les modificacions des del darrer backup). ERROR FREQÜENT No s'ha de confondre l'operació REDO amb l'operació UNDO. L'operació UNDO serveix exclusivament per retrocedir canvis de transaccions incompletes, mentre que REDO rehà canvis de transaccions que ja han fet COMMIT per garantir que es reflecteixin al disc de manera permanent.
Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 13 CAUSES I CONSEQÜÈNCIES Cancel·lació d'una transacció Error en l'aplicació o decisió voluntària Caiguda sobtada del sistema Pèrdua de contingut dels buffers de memòria Avaria física de disc Destrucció de les estructures d'emmagatzematge Recuperació davant fallades Restauració cap enrere (UNDO) Desfer canvis no confirmats mitjançant el dietari Restauració cap endavant (REDO) Tornar a aplicar canvis confirmats pendents d'escriure Reconstrucció amb backup Restablir dades des de la còpia i sincronitzar el dietari IDEES CLAU SQL defineix quatre nivells d'aïllament: Read Uncommitted, Read Committed, Repeatable Read i Serializable.
El dietari (log) registra les accions executades per permetre operacions de recuperació UNDO (desfer) i REDO (refer). La restauració gestiona avortaments i caigudes, mentre que la reconstrucció repara la destrucció física de dades amb còpies de seguretat. Les còpies de seguretat poden ser estàtiques o dinàmiques, i completes o incrementals. COMPROVA EL QUE HAS APRÈS 27. Quin és el nivell mínim d'aïllament en SQL que protegeix contra les lectures no confirmades? 28. En quina situació cal aplicar una operació REDO durant la recuperació? Test Encercla la resposta correcta. Les solucions són al final. 29.
Quin nivell d'aïllament permet que una transacció vegi registres fantasma però no lectures no repetibles? Repeatable Read a) Read Committed b) Serializable c) Read Uncommitted d) Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 14 30. Quina funció té l'operació UNDO durant el procés de restauració? 31. Com s'anomena la còpia de seguretat que només conté els canvis fets des de l'últim backup? 32. Quina peça és indispensable per reconstruir la base de dades davant d'una fallada física de disc? 5 Resum per repassar Transaccions i propietats ACID Concepte Què és Transacció Seqüència d'operacions de lectura i actualització que s'executa com una unitat i finalitza amb COMMIT o ROLLBACK.
Atomicitat Propietat del «tot o res»: o s'executen totes les accions de la transacció o no se n'aplica cap. Consistència Manteniment de les regles d'integritat i requisits de coherència lògica de la base de dades. Aïllament Garantia que l'accés concurrent de diversos usuaris no provoca interferències ni anomalies. Definitivitat Persistència irrevocable dels canvis confirmats malgrat fallades de sistema o de disc. Interferències i serialitzabilitat Concepte Què és Actualització perduda Una transacció sobreescriu dades modificades per una altra abans de confirmar- se, ignorant el seu canvi.
Lectura no confirmada Lectura de dades alterades per una altra transacció activa que finalment fa un ROLLBACK.
Reescriure els canvis confirmats al disc a) Eliminar les reserves compartides del sistema b) Copiar tota la base de dades a un nou servidor c) Desfer les operacions de transaccions avortades d) Còpia dinàmica a) Còpia incremental b) Còpia completa c) Còpia estàtica d) Un backup previ i el fitxer de dietari a) Un protocol PR2F en fase de creixement b) Només les consultes SQL executades c) Un nivell d'aïllament Read Uncommitted d) Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 15 Concepte Què és Lectura no repetible Una transacció rep valors diferents en llegir el mateix registre dues vegades a causa d'una escriptura intermèdia confirmada.
Fantasma Aparició de noves files en una consulta repetida perquè una altra transacció ha inserit registres que compleixen la condició. Accions conflictives Parell d'operacions de diferents transaccions sobre el mateix grànul on com a mínim una és d'escriptura. Serialitzabilitat Propietat d'un horari d'obtenir el mateix resultat que un horari serial, verificable si el graf de precedències és acíclic. Recuperabilitat Exigència que cap transacció confirmi dades dependents d'una transacció prèvia abans que aquesta faci COMMIT. Control de concurrència i bloquejos Concepte Què és Reserva compartida (S) Bloqueig que permet lectura simultània i és compatible amb altres reserves de lectura.
Reserva exclusiva (X) Bloqueig que permet lectura i escriptura i és incompatible amb qualsevol altra reserva sobre el grànul. Protocol PR2F (2PL) Mecanisme amb fase de creixement (només adquireix reserves) i decreixement (només allibera) que garanteix serialitzabilitat. PR2F fortament estricte Variant que reté totes les reserves fins al final de la transacció, evitant lectures no confirmades. Abraçada mortal (Deadlock) Bloqueig circular entre transaccions al graf d'espera que només es resol avortant-ne una. Nivells d'aïllament i recuperació Concepte Què és Read Uncommitted Reserves X fins al final i cap reserva S; evita només l'actualització perduda.
Read Committed Reserves X fins al final i S puntuals de lectura; evita actualitzacions perdudes i lectures no confirmades. Repeatable Read Reserves X i S retingudes fins al final sobre files; evita lectures no repetibles però admet fantasmes. Serializable Retenció de totes les reserves (inclosos rangs i metainformació); proporciona aïllament total sense anomalies. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 16 Concepte Què és Restauració (UNDO / REDO) Recuperació basada en el dietari per desfer transaccions no confirmades (UNDO) o refer les confirmades (REDO).
Reconstrucció Recuperació davant fallada física de disc combinant una còpia de seguretat (backup) amb el dietari posterior. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 17 Solucions de les preguntes de repàs 1. Perquè si el sistema falla després de descomptar els diners del compte origen però abans d'ingressar-los al destinatari, els diners desapareixerien. 2. Gràcies a l'atomicitat, tots els canvis no confirmats es cancel·len i es desfan, deixant la base de dades en l'estat previ sense alteracions parcials. 3. La definitivitat o durabilitat, ja que garanteix que els canvis consolidats persisteixen fins i tot davant fallades del maquinari. 4.
Consisteix a llegir una dada que ha estat modificada per una altra transacció activa que finalment fa un ROLLBACK o l'altera de nou abans de confirmar. 5. c) Que s'executa sencera o no s'aplica cap pas. L'atomicitat exigeix que totes les operacions d'una transacció es realitzin completament o cap d'elles tingui efecte. 6. b) Actualització perduda. L'actualització perduda ocorre quan una escriptura concurrent sobreescriu i ignora els canvis d'una transacció prèvia. 7. d) Lectura fantasma. Els fantasmes són nous registres inserits per una altra transacció que compleixen la condició de filtratge. 8. b) ROLLBACK.
La comanda ROLLBACK (o ABORT) desfà tots els canvis fets per la transacció i restaura l'estat previ. 9. Sí, perquè dues lectures consecutives mai alteren el contingut de la informació emmagatzemada. 10. Significa que l'horari concurrent no és serialitzable i conté interferències greus com lectures no repetibles o actualitzacions perdudes. 11. Es poden formar exactament horaris serials possibles. 12. Perquè cap de les dues accions és una escriptura (W), de manera que l'ordre en què llegeixin no altera el resultat final. 13. c) Que com a mínim una sigui d'escriptura. Les accions conflictives han de ser de diferents transaccions sobre el mateix grànul i contenir almenys una escriptura (W). 14.
a) Comprovant que no tingui cicles. La condició necessària i suficient per a la serialitzabilitat per conflicte és que el graf de precedències sigui acíclic. 15. d) Que la transacció lectora confirmi després de l'escriptora. Si T2 llegeix dades modificades per T1, T2 només pot fer COMMIT un cop T1 ha confirmat el seu resultat. 16. b) RU(G). RU(G) representa explícitament l'acció de llegir el grànul amb l'objectiu posterior de modificar-lo. 17. Quedarien congelades indefinidament en una situació de dependència mútua anomenada abraçada mortal o deadlock. 18.
En el PR2F bàsic les reserves es poden alliberar abans d'acabar la transacció (sempre que no se'n demanin més), mentre que en el fortament estricte es retenen fins al COMMIT o ROLLBACK final. 19. No, perquè les reserves exclusives són completament incompatibles amb qualsevol altre bloqueig, ja sigui compartit o exclusiu. 20. Ha d'avortar almenys una de les transaccions implicades en el cicle per alliberar els seus recursos i desbloquejar les altres. 3! = 6 Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 18 21. a) Reserva exclusiva (X). L'escriptura sobre un grànul exigeix una reserva exclusiva LOCK(G, X), incompatible amb altres reserves. 22. c) Demanar qualsevol nova reserva.
En el protocol PR2F, un cop s'allibera la primera reserva (fase de decreixement), no es pot demanar cap nova reserva. 23. b) Avorta la transacció si supera un temps límit. El timeout cancel·la i desfà de manera automàtica una transacció quan aquesta ha estat esperant més temps del límit establert. 24. c) Evita l'anomalia de lectures no confirmades. Com que reté les reserves fins a la finalització, impedeix que altres transaccions llegeixin valors provisionals no consolidats. 25. Perquè un aïllament estricte requereix moltes reserves i bloquejos, reduint dràsticament el rendiment i el paral·lelisme útil del sistema. 26.
Perquè allibera les reserves compartides S tot just acaba de llegir la fila, permetent que una altra transacció modifiqui la dada abans de la segona lectura. 27. El nivell Read Committed, ja que reté les reserves exclusives X fins al final i demana reserves compartides durant la lectura. 28. Quan una transacció ha fet COMMIT abans d'una caiguda del sistema però els seus canvis en els buffers de memòria encara no s'havien escrit físicament a disc. 29. a) Repeatable Read. Repeatable Read bloca les files consultades evitant canvis de valor, però permet la inserció de noves files si no hi ha bloqueig de rang. 30. d) Desfer les operacions de transaccions avortades.
L'operació UNDO (o rollback cap enrere) reverteix i anul·la les modificacions fetes per transaccions no consolidades. 31. b) Còpia incremental. Les còpies incrementals registren de manera eficient únicament les variacions produïdes des de la darrera còpia prèvia. 32. a) Un backup previ i el fitxer de dietari. La reconstrucció necessita una còpia de seguretat prèvia correcta juntament amb el registre del dietari fins al moment de la fallada. Transaccions i Concurrència: Apunts de Bases de Dades (FIB) 19