Está en la página 1de 33

Tópicos

 Avanzados  de  bases  de  


datos  
Control  de  Concurrencia  
Por  Federico  Cire6  Galán  
fcire6@industrial.uson.mx  
Control  de  Concurrencia  
•  Dos  Apos  básicos  de  ejecución:  

–  Secuencial:  
Control  de  Concurrencia  
•  Dos  Apos  básicos  de  ejecución:  

–  Secuencial:  una  a  una,  comenzando  cada  


transacción  sólo  después  de  que  la  anterior  se  
haya  completado  
Control  de  Concurrencia  
•  Dos  Apos  básicos  de  ejecución:  

–  Secuencial:  (ejemplos)  
•  Comprar  en  una  Aendita  
•  Registrarse  en  una  sola  ventanilla  
•  Armar  autos  
•  Ver  un  video  
Control  de  Concurrencia  
•  Dos  Apos  básicos  de  ejecución:  

–  Concurrente:  Se  dividen  las  transacciones  en  


varias  acciones  y  se  ejecutan  en  forma  paralela  en  
el  CPU  y  los  disposiAvos  de  I/O  

•   ProducAvidad  y  uAlización  de  recursos  mejoradas  


•  Tiempo  de  espera  reducido  
Control  de  Concurrencia  
Secuencial  
T1   T2   T3  

Concurrente  

CPU:   T1   T2   T3   T1   T3  

I/O:   T1   T3  
Control  de  Concurrencia  
•   Una  transacción  es  una  unidad  de  la  
ejecución  de  un  programa  que  accede  y  
posiblemente  actualiza  varios  elementos  de  
datos.  
•  Se  debe  garanAzar  la  secuencialidad  cuando  
el  planificador  ejecuta  las  transacciones  en  
forma  concurrente.  
Control  de  Concurrencia  
•  Protocolos  basados  en  bloqueo  

–  ComparAdo:  

–  Exclusivo:  
Control  de  Concurrencia  
•  Protocolos  basados  en  bloqueo  

–  ComparAdo  (C):  Sólo  lectura  

–  Exclusivo  (X):  Lectura  y  escritura  


Control  de  Concurrencia  
•  Protocolos  basados  en  bloqueo  

–  Tabla  de  verdad  

C   X  
C   True   False  
X   False   False  
Control  de  Concurrencia  
T1   T2  
•  Read  Lock  (A)  
•  Leer(A)   •  Read  Lock(A)  
•  UnLock(A)   •  Leer(A)  
•  UnLock(A)  
Control  de  Concurrencia  
T1   T2  
•  Read  Lock  (A)  
•  Leer(A)   •  Exclusive  Lock(A)  
•  UnLock(A)   •  Leer(A)  
•  UnLock(A)  
Control  de  Concurrencia  
T1   T2  
•  Exclusive  Lock  (A)   •  Read  Lock(A)  
•  Leer(A)   •  Leer(A)  
•  …  cómputo  …   •  UnLock(A)  
•  Escribir(A)  
•  UnLock(A)  
Control  de  Concurrencia  
•  Ejercicios:  

•  mysql>  LOCK  TABLES  t1  READ;  


•  mysql>  SELECT  COUNT(*)  FROM  t1;  
•  mysql>  SELECT  COUNT(*)  FROM  t2;  
Control  de  Concurrencia  
•  Ejercicios:  

•  mysql>  LOCK  TABLE  t  AS  mitabla  READ;  


•  mysql>  SELECT  *  FROM  t;  

•  mysql>  SELECT  *  FROM  t  AS  mitabla;  


•  Mysql>  UNLOCK  mitabla;  
Control  de  Concurrencia  
•  Ejercicios:  

•  mysql>  LOCK  TABLE  t  AS  mitabla  


WRITE;  
•  mysql>  SELECT  count(*)  FROM  t  AS  
mitabla;  
•  Mysql>  UNLOCK  mitabla;  
Control  de  Concurrencia  
Secuencial  
T1   T2   T3  

Concurrente  

CPU:   T1   T2   T1   T3   T3  

I/O:   T1   T3  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  

•  A  toda  transacción  que  llega  al  Planificador,  se  


le  asigna  una  marca  temporal  (Timestamp).  
Las  transacciones  se  ejecutan  en  el  orden  de  
las  marcas  temporales.  

–  MT(Ti)  <  MT(Tj)              |        TS(Ti)  <  TS(Tj)  


Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  

•  Dos  formas:  
–  Reloj  de  la  computadora  
–  Contador  

•  *  Si  se  trabaja  en  cómputo  paralelo,  


asegurarse  que  el  contador  puede  actualizarse  
concurrentemente.  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
 
Transacción   Tabla  (Objeto)  
   
 MT(Ti)  o  TS(Ti)    MTE(Objeto)  o  WTS(Object)  
 MTL(Objeto)  o  RTS(Object)  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
 
Tabla  A   Tabla  B  
Transacción  
 
 MT(Ti)  o  TS(Ti):  11:57  

MTE(A):  11:59   MTE(B):  12:01  


MTC(A):  11:57   MTC(B):  12:02  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
•  Lectura:  
–  Si  MT(Ti)  <  MTE(Objeto),  el  objeto  fue  escrito  
antes  de  poder  leerlo  con  nuestra  transacción.  Se  
aborta  la  lectura  y  se  pide  otra  marca  temporal.  
–  Si  MT(Ti)  >  MTE(Objeto),  es  seguro  leer  el  objeto.  
Se  lee  y  se  actualiza  MTE(Objeto)  con  el  valor  de  
MT(Ti).  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  11:57   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(B)  

MTE(A):  11:59  
MTC(A):  11:57  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  12:00   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(B)  

MTE(A):  11:59  
MTC(A):  11:57  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  12:00   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(B)  

MTE(A):  11:59   MTE(A):  11:59  


MTC(A):  11:57   MTC(A):  12:00  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
•  Escritura:  
–  Si  MT(Ti)  <  MTL(Objeto),  el  objeto  fue  leído  antes  
en  otra  transacción.  Se  aborta  la  escritura  y  se  
pide  otra  marca  temporal.  
–  Si  MT(Ti)  <  MTE(Objeto),  estamos  intentando  
escribir  un  valor  viejo  u  obsoleto.  Se  aborta  la  
escritura  y  se  pide  otra  marca  temporal.  
–  En  otro  caso,  se  ejecuta  la  escritura  de    MT(Ti)    y  
MTE(Objeto)  se  actualiza  con  MT(Ti).    
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  11:58   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(A)  

MTE(A):  11:59  
MTC(A):  12:00  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  12:01   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(A)  

MTE(A):  11:59  
MTC(A):  12:00  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  12:01   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(A)  

MTE(A):  11:59  
MTC(A):  12:00  
Control  de  Concurrencia  
•  Protocolos  basados  en  marcas  temporales  
   TRANSACCIONES    OBJETOS  

Tabla  A  
MT(Ti)  =  12:01   Ti  
Leer(A)  
…  
Cómputo  
…  
Escribir(A)  

MTE(A):  11:59   MTE(A):  12:01  


MTC(A):  12:00   MTC(A):  12:00  
Recuperabilidad  

T8   T9  
Leer(A)    
…   Leer(A)  
Escribir(A)  
…  
Leer(B)  
Recuperabilidad  

T10   T11   T12  


 
Leer(A)      
Leer(B)      
Escribir(A)      
Leer(A)    
Escribir(A)    
Leer(A)  
Aislamiento  
•  GaranAzar  que  para  cada  par  de  transacciones  
Ti  y  Tj  se  cumple  que  para  los  efectos  de  Ti:  
–   o  bien  Tj  ha  terminado  antes  de  que  comience  Ti    
–   o  bien  Tj  ha  comenzado  después  de  que  Ti  
termine.    

También podría gustarte