Está en la página 1de 8

Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

UNIDAD III
CONCURRENCIA

En un ambiente de red o multiusuario, la compartición de la base de datos por


n usuarios, establece que dos ó más pueden acceder simultáneamente a la
misma información, esto es conocido como acceso concurrente. En estas
circunstancias se puede presentar el caso particular que dos ó más usuarios
coincidan en el mismo dato, situación conocida como colisión.

Transacción A Tiempo Transacción B


- | -
FIND R T1 -
COPY R.F to Atemp | -
- | -
- | -
- | -
- T2 FIND R
- | COPY R.F to Btemp
- | -
- | -
- | -
UPDATE R T3 -
REPLACE R.F BY ATEMP+1 | -
- | -
- | -
- | -
- T4 UPDATE R
- | REPLACE R.F BY BTEMP+1

Si no lo controlamos podemos tener una pérdida de actualización. En el


t1 el usuario A lee el registro ; en el t2 el usuario B lo lee, en el t3 lo actualiza
A y en el t4 lo actualiza B y se pierde lo que actualizo A (colisión).

18
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

Solución : Sistema de candados ; ahora es XFIND, localizar y bloquear, el


registro, y el sistema le pone un candado para que solo lo use el usuario A,
y nadie lo podrá usar hasta que el usuario A lo deje de utilizar. El usuario B
trata de accesar y el sistema detecta que el registro tiene un candado y no le
pertenece a B, lo detiene hasta que A deja de utilizar el registro. Cuando
esto pasa y accesa B, entonces se le pone un candado de que pertenece a B.

Transacción A Tiempo Transacción B


- | -
XFIND R T1 -
COPY R.F to Atemp | -
- | -
- | -
- | -
- T2 XFIND R
- | ESPERA
- | ESPERA
- | ESPERA
- | ESPERA
UPDATE R T3 ESPERA
REPLACE R.F BY ATEMP+1 | ESPERA
- | ESPERA
- | ESPERA
- | ESPERA
RELEASE R T4 ESPERA
- | ESPERA
- | ESPERA
- | ESPERA
- | ESPERA
- T5 (RESUME) XFIND R
- | COPY R.F TO Btemp
- | -
- | -
- | -
- T6 UPD R
- | REPLACE R.F BY Btemp+1
- | -
- | -
- | -
- T7 RELEASE R

19
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

Mientras estemos capturando datos, no vamos a bloquear registros, eso


se deja hasta el proceso de actualización.

Alternativas de Bloqueo

A) Método optimista : Considera que es poco probable que ocurra una


colisión, y determina poner candados a los registros que se utilizan
(bloqueo), desde las fases iniciales del proceso de actualización (captura de
datos). Esta alternativa es muy segura y relativamente fácil de
implementar, desafortunadamente, si llega a ocurrir una colisión afectara
por un buen periodo de tiempo al usuario que espera.

B) Método pesimista : Considera que es muy probable que se presente una


colisión, por tal motivo determina postergar el bloqueo de los registros
hasta el momento de la actualización. Es de uso generalizado pero presenta
el riesgo de que ocurra un bloqueo muerto (interbloqueo).

Interbloqueo(dead lock espera mutua) : Se le conoce también como


bloqueo mutuo.

Transacción A Tiempo Transacción B


- | -
XFIND R1 T1 -
- | -
- | -
- | -
- | -
- T2 XFIND R2
- | -
- | -
- | -
- | -
XFIND R2 T3 -
ESPERA | -
ESPERA | -
ESPERA | -
ESPERA | -
ESPERA T4 XFIND R1
ESPERA | ESPERA
ESPERA | ESPERA
ESPERA | ESPERA
ESPERA | ESPERA

20
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

Para solucionar un bloqueo muerto tenemos las siguientes alternativas :

A) Aplicar un ROLLBACK que consiste en deshacer la transacción

Transacción A Tiempo Transacción B


- | -
XFIND R1 T1 -
- | -
- T2 XFIND R2
- | -
- | -
XFIND R2 T3
ESPERA | -
ESPERA | -
ESPERA T4 XFIND R1
ESPERA | ESPERA
ESPERA | ESPERA
ESPERA | ESPERA
*** ROLLBACK *** T5 ESPERA
*** & RETRY *** | ESPERA
| ESPERA
T6 (RESUME) XFIND R1
| -
- | -

Después de haberse interbloqueado, se hace un reproceso al que tenga 30


segundos(mayor antigüedad), en este caso el A que esta en espera desde el t3.

B) Aplica ROLLBACK por prioridad.

Transacción A Tiempo Transacción B


- | -
XFIND R1 T1 -
- | -
- | -
- T2 XFIND R2
- | -
- | -
XFIND R2 T3
Espera |
Espera |
Espera T4 XFIND R1
- | *** ROLLBACK ***
- | *** & RETRY ***

21
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

Se necesita de un registro adicional que contenga :

Identificación de usuario
Nombre de la transacción
Hora de inicio
Registros que esta actualizando
Y
Una marca que indique si puede seguir trabajando o debe de aplicar
un ROLLBACK.

Protocolo de comisión de 2 fases (para bloqueos)

1.-En esta fase de crecimiento se inicia con el bloqueo del 1er. registro del
conjunto que se va a actualizar y finaliza cuando termina la actualización. No
se permite liberar registros en esta etapa.

2.-Fase de encogimiento empieza con la liberación de un registro, y no se


permite bloquear registros ya liberados.

Alternativas para aplicar ROLLBACK para plataformas anteriores

A) Simular la actualización o simulando el ROLLBACK. Revisar todos los


registros que se van a actualizar, ponerles candado y si no se puede a todos,
entonces liberarlos, y empezar otra vez.

SET MULTILOCKS ON
M TERM = .T.
DO WHILE MTERM
DO VERIFICA
END DO
DO ACTUALIZA

22
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

PROCEDURE VERIFICA
SELE FAC_DET
SEEK MFACT
DO WHILE FACTURA = MFACT .AND. .NOT. EOF()
SELE INVENTARIO
SEEK FACT_DET.PARTE

DO WHILE .T.
IF .NOT. RLOCK()
WAIT WINDOW “REGISTRO” + FACT_DET.PARTE + ;
“OCUPADO, REINTENTAR S/N” TO MRES
IF MRES $ “Ss”
LOOP
ELSE
UNLOCK ALL
RETURN
ENDIF
ELSE && IF .NOT. RLOCK()
EXIT
ENDIF
ENDDO
SELE FACT_DET
SKIP
ENDDO
MTERM = .F.
** FIN VERIFICA

23
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

B) Actualización con técnicas de árbol :


Si los registros que se actualizan se ordenan ascendentemente, no se evitan las
colisiones, pero si se elimina la posibilidad de un bloqueo muerto , ya que en
cada instante y para cada usuario el requerimiento de candados, es sobre
registros de valor mayor (hacia delante, nunca hacia atrás).

Considerar en el 1er. Ejemplo, que el usuario U1 actualizará los registros B,C


y H, y el usuario U2 los registros A y C : si llegan al mismo tiempo, en t1 el
usuario U1 bloquea B, y U2 bloquea A; en el t2 U1 logra el candado para C,
por lo tanto U2 debe de esperar. Como se puede ver U2 esperará hasta que U1
termine, y no hay posibilidad de que U1 requiera un registro ya bloqueado por
U2, esto debido a que va solicitando candados en registros mayores.

Lo mismo sucede en el 2º. Ejemplo, donde U1 actualiza A,F y G, y el U2 va


por G y J.

INVENTARIO U1 U2 U1 U2
A * *
B *
C * ESPERA
D
E
F *
G ESPERA *
H *
I
J *

Para lograr lo anterior es necesario contar con un ordenamiento ó índice adicional , compuesto por el
documento principal que se actualiza, más la clave del registro por actualizar.

24
Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación.

INDEX ON FACTURA TAG FAC


FAC_DET

FACTURA PARTE CANTIDAD


1000 F
1000 G
1000 A
1000 J

Nosotros Debemos de hacer la actualización en forma ordenada.

INDEX ON FACTURA + PARTE TAG ARBOL

U1 U2
A *
B *
C *
D *
E * ESPERA
F
G
H
I
J

Nota:
INDEX ON ...
REINDEX
PACK

No deben de aparecer dentro de un programa normal, sino al crear la tabla.

Si solo fueran esos dos índices pondríamos :

SET ORDER TO 2

Primero ordena por factura, así lo ve el usuario y luego se ordena por factura
más parte.

25

También podría gustarte