Concurrencia y transacciones - script 2008
From Ibbddunq
Contents |
Esquema de BD de ejemplo
encomienda <nroEncomienda, cliente, peso, precioAsegurado>
servicio <nroServicio, origen, destino, partida, llegada, cargaRestante>
encomiendaEnServicio <nroServicio, nroEncomienda>
Intro a concurrencia
BDs monousuario y multiusuario.
Anomalías de concurrencia
1. non-repeatable read y su consecuencia respecto de los UPDATE.
Ponele una transacción que agrega una encomienda para un único servicio
PROCEDURE `cargarEncomienda1`(elCliente varchar(45), elPeso integer, elServicio integer)
BEGIN
declare nroNuevaEncomienda integer; declare cargaRestanteNueva integer;
select max(nroEncomienda) + 1 from encomienda into nroNuevaEncomienda; select cargaRestante - elPeso from servicio where nroServicio = elServicio into cargaRestanteNueva; insert into encomienda(nroEncomienda,cliente,peso,precioAsegurado) values (nroNuevaEncomienda, elCliente, elPeso, peso*20); update servicio set cargaRestante = cargaRestante - elPeso where nroServicio = elServicio; insert into encomiendaEnServicio(nroEncomienda,nroServicio) values (nroNuevaEncomienda, elServicio);
END
2. phantom read.
Intro a transacciones
Idea de transacción de negocios.
Idea de transacción en una BD.
Las 4 características
- Atomicidad: la garantiza el motor.
- Consistencia: la debe garantizar uno haciendo operaciones correctas en cada transacción.
- Durabilidad: la garantiza el motor.
- Aislamiento: necesita un tratamiento particular.
Demarcación - BEGIN / COMMIT / ROLLBACK.
Intercalado de transacciones - schedule
Serialización - costo de la serialización - necesidad de encontrar buenos equilibrios.