Concurrencia y transacciones - script

From Ibbddunq

Revision as of 18:03, 28 August 2009 by Carlos (Talk | contribs)

Contents

Intro a problemática de concurrencia

Operaciones que se ejecutan en forma concurrente

Ejemplo: un tablero con llaves maestras, cada una abre varias cerraduras. Yo tengo que abrir varias cerraduras, ¿qué pasa si por las dudas me llevo todo el tablero? ¿Qué pasa si otra persona tiene que abrir una cerradura para la que sirve solamente una llave que me llevé yo?


Schedule

Schedule, schedules "buenos" y "malos". En el caso de las llaves es fácil, hay solamente dos acciones posibles. Armar un schedule bueno y uno malo. Operaciones de BD hay varias.


Recurso y deadlock

Concepto de recurso, necesidad de garantizar el acceso exclusivo a un recurso y de liberarlo luego, colas de espera. En nuestro caso está claro, los recursos son las llaves.

Si una persona necesita varios recursos, debe esperar que le lleguen todos. De acá llegar al concepto de deadlock.


Carga

Es la medida de concurrencia de cualquier situación concurrente. P.ej. cuanto más carga, más posibilidad de espera, y a menos que lo manejemos hábilmente, mayor probabilidad de deadlock.


Concepto de transacción

en las BD y en la vida

Ejemplos de la vida: pago con tarjeta, intercambio de rehenes.

Ejemplos de BD: si voy a cargar una factura (vg ej de productos clientes y facturas (1) guía SQL avanzado), tengo que cargar los ítems. Si en una BD de una biblioteca (ej. Biblioteca (4) guía SQL avanzado) una persona en el mismo acto se lleva dos libros y devuelve tres, eso hay que registrarlo transaccionalmente. Entender qué quiere decir "transaccionalmente".

Hablar de inteacción entre un SI y una BD.


propiedades ACID

  • Atomicidad: la garantiza el motor. Las aplicaciones deben la responsabilidad de demarcar transacciones.
    Contar la
  • Consistencia: la debe garantizar uno haciendo operaciones correctas en cada transacción. P.ej.
    • si agrego una fila en encomienda, debo agregar al menos una en encomiendaEnServicio
    • si agrego una fila en encomiendaEnServicio, debo actualizar una fila en servicio.
  • Durabilidad: la garantiza el motor.
  • Aislamiento: necesita un tratamiento particular.


demarcación

Se puede contar pensando desde el motor, me llegan sentencias SQL de un usuario ...


 - Costo del aislamiento si lo llevo a serialización, necesidad de manejarlo a mano.


Anomalías de concurrencia en el manejo con BDs

Personal tools