1 Administraci³n de Bases de Datos Integridad  Transacciones...

download 1 Administraci³n de Bases de Datos Integridad  Transacciones  Control de concurrencia

of 79

  • date post

    28-Jan-2016
  • Category

    Documents

  • view

    218
  • download

    0

Embed Size (px)

Transcript of 1 Administraci³n de Bases de Datos Integridad  Transacciones...

  • Administracin de Bases de DatosIntegridad

    Transacciones

    Control de concurrencia

  • Administracin de Bases de DatosTransacciones

    ObjetivosEntender el concepto de transaccin en un SGBDEntender las propiedades bsicas que toda transaccin debe poseerIdentificar las operaciones que pueden realizarse dentro de una transaccinComprender los conceptos de confirmacin y reversin de una transaccinComprender los distintos estados por los que pasa una transaccin desde su inicio hasta su finalizacin

  • Administracin de Bases de DatosTransacciones

    Contenidos

    Concepto de transaccinPropiedades deseables de una transaccinOperaciones de una transaccin

    Anexo: Control de transacciones en Oracle

  • Administracin de Bases de DatosTransaccin

    Unidad lgica de procesamiento Secuencia de operaciones de acceso (insercin, borradon, modificacin o consulta) de la BDPero tambin se considera:Unidad lgica de integridadUnidad lgica de concurrenciaUnidad lgica de recuperacinUna transaccin es atmicaO se ejecutan todas las operaciones que componen la transaccin, o no se realiza ningunaEjemplo: transferencia de dinero entre dos cuentas

  • Administracin de Bases de DatosTransaccin

    Conjunto de lecturas/escrituras entre los lmites explcitos de una transaccin:Begin transaction (set_transaction)End transaction (commit, rollback)

    Fin de la transaccin:

    COMMIT: La transaccin acab con xito. Las modificaciones realizadas se confirman.

    ROLLBACK: La transaccin termina en fracaso. Las actualizaciones realizadas por la transaccin deben deshacerse.

  • Administracin de Bases de DatosPropiedades deseables de las transacciones

    ACID

    Atomicity: La transaccin es una unidad atmica de procesamiento. La transaccin no puede realizarse a medias. Todo o nada.Consistency: La transaccin pasa la BD de un estado consistente a otro (antes y despus de la transaccin).Isolation: La transaccin debe aparecer como realizada independientemente de otras transacciones. La ejecucin de una transaccin no puede ser interferida por otras.Durability: Los cambios realizados en la BD tras un COMMIT deben persistir en la BD

  • Administracin de Bases de DatosEjemplo de transaccin (1)

    Transferencia de Q euros entre dos cuentas

    set_transaction(CuentaO, CuentaD, Q) read(cuentaO, SaldoO)SaldoO = SaldoO Qwrite(CuentaO, SaldoO)leer(CuentaD, SaldoD)SaldoD = SaldoD + Qwrite(CuentaD, SaldoD)commit

    No puede quedarse a medias a riesgo de dejar la BD inconsistenteEs la aplicacin quien define qu conjunto de acciones constituyen una transaccin

  • Administracin de Bases de DatosEjemplo de transaccin (2)

    pasajero(nombre, ...)vuelo(cdigo, ...)pasajero_vuelo(nombre, cdigo)

    RI1: todo pasajero debe estar en un vueloRI2: todo vuelo tiene al menos un pasajero

    set_transactionINSERT INTO vuelo values(122, ...)INSERT INTO pasajero values(german, ...)INSERT INTO pasajero_vuelo(german, 122)commit

    Durante la transaccin pueden no cumplirse las restricciones de integridad

  • Administracin de Bases de DatosEstados y operaciones de una transaccin

    activaParcialmente confirmadaconfirmadafallidaterminadaabortarabortarconfirmariniciofinleer/escribirrollbackcommitprotocolos de recuperacin

  • Administracin de Bases de DatosAnexo: Control de transacciones en Oracle

    Gestin implcita (por parte del SGBD)Inicio de transaccin: ejecuta sentencia SQLFin de transaccin normal (commit), o anormal (rollback)

    Gestin explcita (por parte del usuario/programador):No existe sentencia de tipo BEGIN TRANSACTIONCOMMIT, ROLLBACK, SAVEPOINT ...;SET TRANSACTION ;Establece modo de acceso y nivel de aislamiento de la siguiente transaccin

  • Administracin de Bases de DatosControl de la concurrencia

    Objetivos

    Conocer la problemtica asociada a la concurrencia de transacciones en los SGBDEntender el significado de la seriabilidad y su aplicacin al control de la concurrenciaComprender algunas tcnicas para el control de la concurrencia empleadas por los SGBD

  • Administracin de Bases de DatosControl de la concurrencia

    Contenidos

    Introduccin y problemas de la concurrenciaPlanes de transaccionesTcnicas de control de la concurrencia

    Anexo 1: Niveles de aislamiento de transacciones en SQL2Anexo 2: Acerca del control de la concurrencia en Oracle

  • Administracin de Bases de DatosControl de la concurrencia

    Queremos que el SGBD multiusuario proporcione acceso simultneo a varios clientes y usuarios ...... pero el acceso simultneo a los mismos datos no nos lleva necesariamente a estados consistentesVarias transacciones introducidas por los usuarios, que se ejecutan de manera concurrente, pueden leer/modificar los mismos elementos

    Posibles problemas:

    Prdida de actualizacionesActualizaciones temporales (o valores sucios)Totales incorrectos

  • Administracin de Bases de DatosEjemplo: control de concurrencia

    Imaginemos un sistema de reserva de vuelosT1 transfiere N reservas del vuelo X al YT2 reserva un asiento en el vuelo X

    T1T2read(x)read(x)x = x Nx = x + 1write(x)write(x)read(y)y = y + Nwrite(y)

  • Administracin de Bases de DatosActualizacin perdida

    T1T2read(x)x = x - N.read(x).x = x + 1write(x).read(y)..write(x)y = y + Nwrite(y)

    x tiene un valor incorrecto porque T2 sobreescribi su valor

  • Administracin de Bases de DatosActualizacin temporal (lectura sucia)

    T1T2read(x)x = x - Nwrite(x).read(x).x = x + 1.write(x)read(y)... Fallo!T2 ha ledo un valor sucio temporalEl sistema restaura el valor original de x

  • Administracin de Bases de DatosFantasmas

    T1T3.s = 0.read(a).s = s + aread(x).x = x N.write(x)..read(x).s = s + x.read(y).s = s + yread(y)y = y + Nwrite(y)

    T3 lee x despus de restar N y lee y antes que N sea aadida: se obtiene una suma errnea

  • Administracin de Bases de DatosLectura irrepetible

    T1T2.read(x)read(x).x = x N.write(x)..read(x)T2 recibe diferentes valores para el mismo elemento

  • Administracin de Bases de DatosPlanes de transacciones

    Un plan es un orden de ejecucin de las operaciones de varias transacciones que se ejecutan de manera concurrente

    Un plan P de N transacciones T1, T2, ... TN es un ordenamiento de las operaciones de las transacciones, sujeto a la siguiente restriccin: Para cada transaccin Ti que participa en P, sus operaciones deben aparecer en P en el mismo orden en que ocurren en Ti

    En P, las operaciones de otras Tk pueden intercalarse en las de Ti

  • Administracin de Bases de DatosPlanes de transacciones

    Una planificacin es una serie intercalada de acciones de distintas transacciones donde se respeta el orden relativo de la accin dentro de la transaccin

    Para el control de la concurrencia (y recuperacin de fallos) nos centraremos en:ReadRWriteWCommitCRollbackB

    EjemplosPa: R1(X); R2(X); W1(X); R1(Y); W2(X); C2; W1(Y); C1;Pb: R1(X); W1(X); R2(X); W2(X); C2; R1(Y); B1;

  • Administracin de Bases de DatosPlanes de transacciones

    Una planificacin en serie es aquella donde no se solapan las transacciones. No se aprovecha la concurrencia y el resultado es poco eficiente.

    Si se permite la intercalacin de las operaciones de varias transacciones, existen muchos rdenes posibles

    La teora de la serializacin, nos dir cules son correctos y las tcnicas de control de concurrencia que eviten planes incorrectos

    Una planificacin es serializable si produce un resultado equivalente a una planificacin en serie de las mismas transaccionesSi producen el mismo estado final en la BDSi las operaciones sobre cada dato afectado por los planes, se aplican al mismo elemento en el mismo orden en ambos planes

  • Administracin de Bases de DatosPlanes de transacciones

    Dos operaciones de un plan P estn en conflicto si

    Pertenecen a diferentes transacciones,tienen acceso al mismo elemento X,y al menos una de ellas es write(X).

    Operaciones en conflicto en Pa:R1(X); R2(X); W1(X); R1(Y); W2(X); C2; W1(Y); C1;R1(X); R2(X); W1(X); R1(Y); W2(X); C2; W1(Y); C1;R1(X); R2(X); W1(X); R1(Y); W2(X); C2; W1(Y); C1;Operaciones NO en conflicto en Pa:R1(X); R2(X); W1(X); R1(Y); W2(X); C2; W1(Y); C1;R1(X); R2(X); W1(X); R1(Y); W2(X); C2; W1(Y); C1;

  • Administracin de Bases de DatosPlanes de transacciones

    Dos planes son equivalentes por conflictos si el orden de cualesquiera dos operaciones en conflicto es el mismo en ambos planesUn plan P es serializable por conflictos si es equivalente por conflictos a algn plan en serie SEl orden de las operaciones en conflicto en P coincide con el orden en que se ejecutaran en algn plan en serie Podremos reordenar las operaciones de P que no estn en conflicto, hasta obtener el plan en serie S equivalente a P

    Pa: R1(X); W1(X); R1(Y); W1(Y); R2(X); W2(X); (plan en serie)Pb: R2(X); W2(X); R1(X); W1(X); R1(Y); W1(Y); (plan en serie)Pc: R1(X); R2(X); W1(X); R1(Y); W2(X); W1(Y); (plan no seriable)Pd: R1(X); W1(X); R2(X); W2(X); R1(Y); W1(Y); (plan seriable, a Pa)

  • Administracin de Bases de DatosPlanes de transacciones

    Prueba de serializacin por conflictos de un plan

    Considerar slo operaciones Read(X) y Write(X)Construir un grafo de precedencia dirigido y etiquetado G={N,A}

    N = {T1, T2, ..., TN}Crear un nodo por cada transaccin Ti en P

    A = {a1, a2, ..., aM}Conjunto de arcos dirigidosSi una operacin Ti aparece en el plan antes que alguna operacin en conflicto de Tj, crear el arco de Ti a Tj

  • Administracin de Bases de DatosPlanes de transacciones

    Si hay un ciclo en el grafo, P no es serializable por conflictosUn ciclo es una secuencia de aristas:C=((Ti -> Tj), (Tk -> Tl), ..., (Tm -> Ti))

    Si no hay ciclos el