Concurrencia y transacciones - script 2008

From Ibbddunq

Revision as of 16:52, 7 November 2008 by Carlos (Talk | contribs)

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.


Intro a transacciones

Personal tools