Sunteți pe pagina 1din 13

Administracin de Base de Datos

Contenido

Concepto

Transaccin
Una transaccin es una coleccin de acciones que hacen transformaciones de estados del sistema mientras conservan la consistencia del mismo.
La B.D. en un estado consistente La B.D. puede estar temporalmente Inconsistente La B.D. en un estado consistente

Inicio de transaccin

Ejecucin de transaccin

Fin de transaccin

Concepto

Transaccin
Las transacciones aseguran que varias modificaciones a los datos se procesan juntas

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Propiedades de las transacciones

Propiedades ACID de las Transacciones


1. Atomicidad Todo o nada. 2. Consistencia Una transformacin correcta. 3. Aislamiento (Isolation) Los efectos de la transaccin son ocultados hasta que termine exitosamente. 4. Durabilidad Los efectos sobreviven a fallas.
4

Atomicidad

Atomicidad
Todas o ninguna de las operaciones de la transaccin son ejecutadas. Si la transaccin falla, sus resultados parciales deben ser deshechos. La actividad de preservar la atomicidad de la transaccin en la presencia de abortos de la transaccin debido a errores de entrada, interbloqueos es llamada recuperacin de la transaccin. La actividad de asegurar la atomicidad en la presencia de crash es llamada recuperacin de crash.

Consistencia

Consistencia
Consistencia Interna Una transaccin que se ejecuta sola al terminar deja la base de datos en estado consistente. Las transacciones no violan las restricciones de integridad de las bases de datos. Las transacciones son programas correctos

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Aislamiento

Aislamiento
Serializacin Si varias transacciones son ejecutadas concurrentemente, los resultados deben ser los mismos como si ellas fueran ejecutadas serialmente en algn orden. Resultados incompletos Una transaccin incompleta no puede revelar sus resultados a otras transacciones antes de su compromiso. Necesariamente para evitar abortos en cascada.
7

Durabilidad

Durabilidad
Una vez que la transaccin se compromete, el sistema debe garantizar que los resultados de sus operaciones nunca sern perdidos, a pesar de fallas subsecuentes. Recuperacin de la base de datos

Transacciones

Las Transacciones proporcionan...


Una ejecucin atmica y confiable en presencia de fallas. Una ejecucin correcta en presencia de mltiples accesos de usuarios. La administracin correcta de rplicas (si stas son soportadas).

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Transacciones

Estados de una transaccin


Parcialmente comprometida

Comprometida

Activa

Fallida

Abortada

10

Transacciones

Ejemplo de Transacciones- Una Consulta Simple en SQL


Transaction ACTUALIZA _PRESUPUESTO begin EXEC SQL UPDATE J SET PRESUPUESTO = PRESUPUESTO*1.1 WHERE PROYECTO =CAD/CAM end

11

Transacciones

Ejemplo de Transacciones Consulta Simple en SQL en Mysql


START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;

12

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Transacciones

Ejemplo de Base de Datos


Considere un ejemplo de reservacin de boletos de avin con las siguientes relaciones:
VUELO(NUMVUELO,FECHA,ORIGEN,DEST,ASOCS,CAP) CLIENTE(NOMCLI, DIR,CREDITO) VIAJAN(NUMVUELO,FECHA,NOMCLI)

13

Transacciones

Ejemplo de Transaccin-Versin SQL


Begin_transaction Reservacin begin input (num-vuelo,fecha,nom-cliente); EXEC SQL UPDATE VUELO SET ASOCS = ASOCS + 1 WHERE NUMVUELO = num-vuelo AND FECHA = fecha EXEC SQL INSERT INTO VIAJAN(NUMVUELO, FECHA, NOMCLI); VALUES (num-vuelo,fecha,nom-cliente ); output (reservacin completa) endif end. {Reservacin}

14

Transacciones

Terminacin de Transacciones
Begin-transaction Reservacin begin input (num-vuelo,fecha,nom-cliente); EXEC SQL SELECT ASOCS,CAP. INTO temp1, temp2 FROM VUELO WHERE NUM-VUELO=num-vuelo AND FECHA=fecha; if temp1>= temp2 then output(no asientos libres); Abort else EXEC SQL UPDATE VUELO SET ASOC = ASOC + 1 WHERE NUMVUELO = num-vuelo AND FECHA=fecha; EXEC SQL INSERT INTO VIAJAN(NUMVUELO,FECHA,NOMCLI); VALUES (num-vuelo, fecha, nom-cliente) Commit output(reservacin completa) endif end. {Reservacin}
15

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Transacciones

Introduccin a las transacciones y los bloqueos Administracin de las transacciones Bloqueos Administracin de los bloqueos

16

Introduccin a las transacciones y los bloqueos

Los bloqueos impiden los conflictos de actualizacin Las transacciones estn serializadas El bloqueo es automtico Los bloqueos permiten usar los datos al mismo tiempo Control de simultaneidad

17

Administracin de las transacciones

Recuperacin de transacciones y puntos de comprobacin Consideraciones para el uso de transacciones Establecimiento de la opcin de transacciones implcitas Restricciones en las transacciones definidas por el usuario

18

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Recuperacin de transacciones y puntos de comprobacin

Recuperacin de transacciones
1 2 3 4 5
ck1 ck2 Crash

Accin requerida
Ninguna Confirmar Deshacer Confirmar Deshacer

Puntos de comprobacin

Fallo del sistema

19

Consideraciones para el uso de transacciones Recomendaciones para las transacciones Las transacciones deben ser lo ms cortas posible Preste atencin a ciertas instrucciones Transact-SQL Evite las transacciones que requieran la intervencin del usuario Aspectos del anidamiento de transacciones Se pueden anidar transacciones, pero no se recomienda Utilice @@trancount para determinar el nivel de anidamiento
20

Establecimiento de la opcin de transacciones implcitas

Una transaccin se inicia automticamente cuando se ejecutan determinadas instrucciones No se permiten transacciones anidadas La transaccin debe completarse explcitamente con COMMIT o ROLLBACK TRANSACTION De forma predeterminada, esta opcin est desactivada

SET IMPLICIT_TRANSACTIONS ON (sql server) Set autocommit=0 (en mysql)

21

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Restricciones en las transacciones definidas por el usuario

Ciertas instrucciones no se pueden incluir


ALTER DATABASE BACKUP LOG CREATE DATABASE DROP DATABASE RECONFIGURE RESTORE DATABASE RESTORE LOG UPDATE STATISTICS

22

Bloqueos en SQL Server

Problemas de simultaneidad impedidos por los bloqueos Recursos que se pueden bloquear Tipos de bloqueos Compatibilidad de los bloqueos

23

Problemas de simultaneidad impedidos por los bloqueos

Actualizacin perdida Dependencia no confirmada (lectura no confirmada) Anlisis incoherente (lectura no repetible) Lecturas fantasma

24

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Recursos que se pueden bloquear

Elemento RID Clave Pgina Extensin Tabla Base de datos

Descripcin Identificador de fila Bloqueo de fila dentro de un ndice Pgina de datos o pgina de ndice Grupo de pginas Tabla completa Base de datos completa

25

Tipos de bloqueos

Bloqueos bsicos Compartidos Exclusivos Bloqueos para situaciones especiales Intencin Actualizacin Esquema Actualizacin masiva

26

Compatibilidad de los bloqueos

Los bloqueos pueden ser compatibles o incompatibles con otros bloqueos Ejemplos Los bloqueos compartidos son compatibles con todos los bloqueos excepto con los exclusivos Los bloqueos exclusivos no son compatibles con ningn otro bloqueo Los bloqueos de actualizacin son compatibles slo con los bloqueos compartidos

27

MCE. Jess Carlos Snchez Guzmn

Administracin de Base de Datos

Administracin de los bloqueos

Opciones de bloqueo en el nivel de sesin Arquitectura de bloqueos dinmicos Opciones de bloqueo en el nivel de tabla Interbloqueos Presentacin de informacin acerca de los bloqueos

28

Opciones de bloqueo en el nivel de sesin Nivel de aislamiento de las transacciones READ COMMITTED (DEFAULT) READ UNCOMMITTED REPEATABLE READ SERIALIZABLE Tiempo de espera para los bloqueos Limita el tiempo de espera para un recurso bloqueado Use SET LOCK_TIMEOUT

29

Arquitectura de bloqueos dinmicos


Bloqueo dinmico

Costo

Fila

Pgina Granularidad

Tabla

Costo de bloqueo Costo de simultaneidad

30

MCE. Jess Carlos Snchez Guzmn

10

10

Administracin de Base de Datos

Opciones de bloqueo en el nivel de tabla

selas con precaucin Puede especificar una o ms opciones de bloqueo para una tabla Utilice la parte sugerenciasDeOptimizador de la clusula FROM de las instrucciones SELECT o UPDATE Suplanta las opciones de bloqueo en el nivel de sesin

31

Interbloqueos

Cmo SQL Server termina los interbloqueos Cmo minimizar los interbloqueos Cmo personalizar la configuracin de tiempo de espera de bloqueo

32

Presentacin de informacin acerca de los bloqueos

Ventana Actividad actual Procedimiento almacenado de sistema sp_lock Analizador de SQL Monitor de sistema de Windows 2000 Informacin adicional

33

MCE. Jess Carlos Snchez Guzmn

11

11

Administracin de Base de Datos

Ejecucin centralizada de transacciones

Usuario de la Aplicacin Begin_transaction Read, Write, Abort, EOT Administrador de Transacciones (TM) Read, Write Abort, EOT

Usuario de la Aplicacin

Resultados y Notificaciones al usuario

Resultados

Serializador (SC) Operaciones Serializadas Resultados

Administrador de Recuperacin

34

Control de Concurrencia

Un solo usuario vs. ambiente Multiusuario


Los programas pueden ejecutarse de una forma intercalada

Control de concurrencia
La ejecucin concurrente de transacciones puede interferir con otras, produciendo resultados incorrectos, incluso si cada transaccin es correcta cuando se ejecuta en forma aislada.

Porqu el control de concurrencia es necesario


El problema El problema El problema El problema de la actualizacin perdida de las lecturas sucias del resumn incorrecto de la lectura inrepetible

35

El problema de la actualizacin perdida


T1 Read (x); x:=x-2; tiempo Read(x); x:=x-1; Write(x); Read(y); Write(x); commit; y:=y+20; Write(y); commit; T2

S1: R1(X),R2(X),W1(X),R1(Y),W2(X),C2,W1(Y),C1; Problema: El dato X tiene un valor incorrecto por que su valor es actualizado por T1 es perdido debido a la sobreescritura de T2. El sistema operativo usa exclusion mutua. Operaciones cortas sobre datos simples Bajo costo de la sincronizacin es importante En la base de datos se necesita hacerlo mejor. Grandes operaciones en grandes bases de datos La contensin de datos es importante.

36

MCE. Jess Carlos Snchez Guzmn

12

12

Administracin de Base de Datos

El problema de la lectura sucia


T1 Read(X); X:=X-2; Write(X); T2

Tiempo

Read(X); X:=X-1; Write(X);

Read(Y); ... aborto accidental S2: R1(X),W1(X),R2(X),W2(X),C2,R1(Y),A1;

Problema: El dato X leido por T2 es sucio (incorrecto) porque Debido al hecho de que T1 aborto antes de terminar (commit), el sistema debe deshacer los efectos actualizados por el cambio de X y regresarlo a su valor original. Es creado por una transaccin que no ha sido terminada y que no ha sido comprometido. Desafortunadamente T ha leido temporalmente el valor de X.

37

MCE. Jess Carlos Snchez Guzmn

13

13

S-ar putea să vă placă și