capítulo 16: control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... ·...

29
©Silberschatz, Korth y Sudarshan 16.1 Fundamentos de bases de datos 3ª Edición Capítulo 16: Control de la concurrencia Capítulo 16: Control de la concurrencia Protocolos basados en bloqueos Protocolos basados en las marcas temporales Esquemas multiversión Tratamiento de interbloqueos

Upload: others

Post on 14-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.1Fundamentos de bases de datos 3ª Edición

Capítulo 16: Control de la concurrenciaCapítulo 16: Control de la concurrencia

■ Protocolos basados en bloqueos

■ Protocolos basados en las marcas temporales

■ Esquemas multiversión

■ Tratamiento de interbloqueos

Page 2: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.2Fundamentos de bases de datos 3ª Edición

Protocolos basados en bloqueosProtocolos basados en bloqueos

■ Un bloqueo es un mecanismo para controlar el acceso concurrente a un elemento de datos

■ Los elementos de datos se pueden bloquear de dos maneras:

1. modo exclusivo (X). El elemento de datos además de leerse se puede escribir. Un bloqueo de este tipo se solicita con la instrucción bloquear-X.

2. modo compartido (C). Los elementos de datos sólo se pueden leer. Un bloqueo de este tipo se solicita con la instrucción bloquear-C.

■ Las solicitudes de bloqueo se dirigen al gestor de control de concurrencia. La transacción puede realizar la operación sólo después de que se conceda la solicitud.

Page 3: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.3Fundamentos de bases de datos 3ª Edición

Protocolos basados en bloqueos (Cont.)Protocolos basados en bloqueos (Cont.)

■ Matriz de compatibilidad de bloqueos

■ A una transacción se le puede garantizar un bloqueo en un elemento si el bloqueo solicitado es compatible con los bloqueos que ya tengan otras transacciones sobre ese mismo elemento

■ Si no se puede garantizar un bloqueo, la transacción que lo solicita tiene que esperar hasta que los bloqueos incompatibles que tienen otras transacciones se hayan liberado. A continuación se autoriza el bloqueo.

Page 4: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.4Fundamentos de bases de datos 3ª Edición

Protocolos basados en bloqueos (Cont.)Protocolos basados en bloqueos (Cont.)

■ Ejemplo de una transacción que realiza un bloqueo:

T2: bloquear-C(A)

leer (A);

desbloquear(A)

bloquear-C(B)

leer (B);

desbloquear(B)

visualizar(A+B)

■ El bloqueo anterior no es suficiente para garantizar la secuencialidad — si se actualizasen A y B entre la lectura de A y B, la suma mostrada sería errónea.

■ Un protocolo de bloqueo es un conjunto de reglas que siguen todas las transacciones cuando se solicitan o se liberan bloqueos. Los protocolos de bloqueo restringen el número de planificaciones posibles.

Page 5: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.5Fundamentos de bases de datos 3ª Edición

Fallos de los protocolos basados en Fallos de los protocolos basados en bloqueosbloqueos

■ Considerar la planificación parcial

■ Ni T3 ni T4 pueden progresar — la ejecución de bloquear-C(B) ocasiona que T4 espere a que T3 libere su bloqueo sobre B, mientras que la ejecución de bloquear-X(A) ocasiona que T3 espera a que T4 libere su bloqueo sobre A.

■ Esta situación se denomina interbloqueo.

t Para manejar un interbloqueo uno de los dos, T3 o T4, debe retroceder y liberar sus bloqueos.

Page 6: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.6Fundamentos de bases de datos 3ª Edición

Fallos de los protocolos basados en Fallos de los protocolos basados en bloqueos (Cont.)bloqueos (Cont.)

■ En la mayoría de los protocolos de bloqueo se pude producir un interbloqueo potencial. Los interbloqueos son un diablo necesario.

■ También es posible que se produzca la inanición si el gestor de control de concurrencia se ha diseñado defectuosamente. Por ejemplo:

Puede que una transacción esté esperando un bloqueo exclusivo sobre un elemento determinado mientras que una secuencia de transacciones diferentes solicitan y obtienen la autorización de bloqueo compartido sobre el mismo elemento.

La misma transacción retrocede repetidamente debido a los interbloqueos.

■ El gestor de control de concurrencia se puede diseñar para impedir que se produzca la inanición.

Page 7: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.7Fundamentos de bases de datos 3ª Edición

El protocolo de bloqueo de dos fasesEl protocolo de bloqueo de dos fases

■ Éste es un protocolo que asegura planificaciones secuenciables en cuanto a conflictos.

■ Fase 1: Fase de crecimiento

las transacciones pueden conseguir bloqueos

las transacciones no pueden liberar bloqueos

■ Fase 2: Fase de decrecimiento

las transacciones pueden liberar bloqueos

las transacciones no pueden conseguir bloqueos

■ El protocolo asegura la secuencialidad, pero no el interbloqueo

ni el retroceso en cascada.

Page 8: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.8Fundamentos de bases de datos 3ª Edición

El protocolo de bloqueo estricto de dos El protocolo de bloqueo estricto de dos fasesfases

■ Es una variante en la que todos los bloqueos son exclusivos

■ Se evita el retroceso en cascada.

Page 9: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.9Fundamentos de bases de datos 3ª Edición

Conversiones de bloqueoConversiones de bloqueo

■ Bloqueo de dos fases con conversiones de bloqueo:

– Primera fase:

puede obtener bloquear-C sobre un elemento

puede obtener bloquear-X sobre un elemento

puede convertir bloquear-C en bloquear-X (subir)

– Segunda fase:

puede liberar bloqueo-C

puede liberar bloqueo-X

puede convertir bloquear-X en bloquear-C (bajar)

■ Este protocolo asegura la secuencialidad.

Page 10: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.10Fundamentos de bases de datos 3ª Edición

Adquisición automática de bloqueosAdquisición automática de bloqueos

■ La operación leer(D) se procesa como sigue:

if Ti tiene un bloqueo en D

then

leer(D)

else

begin

si es necesario, esperar hasta que ninguna otra

transacción tenga un bloquear-X sobre D

autorizar a Ti un bloquear-C sobre D;

leer(D)

end

Page 11: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.11Fundamentos de bases de datos 3ª Edición

Adquisición automática de bloqueos Adquisición automática de bloqueos (Cont.)(Cont.)

■ escribir(D) se procesa como sigue: if Ti tiene un bloquear-X en D then escribir(D) else begin si es necesario, esperar hasta que ninguna otra transacción tenga un bloqueo sobre D, if Ti tiene un bloquear-C en D then subir el bloqueo sobre D a bloquear-X else autorizar a Ti un bloquear-X sobre D escribir(D) end;

■ Todos los bloqueos se liberan después de que se complete o aborte

Page 12: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.12Fundamentos de bases de datos 3ª Edición

Implementación de bloqueosImplementación de bloqueos

■ Un gestor de bloqueos se puede implementar como un proceso independiente, al que las transacciones envían los bloqueos y desbloqueos requeridos

■ El gestor de bloqueos responde a un bloqueo solicitado, enviando un mensaje de concesión de bloqueo

■ La transacción solicitada espera hasta que se atiende su solicitud

■ El gestor de bloqueos mantiene una estructura de datos, denominada tabla de bloqueo, para registrar los bloqueos concedidos y las solicitudes pendientes

Page 13: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.13Fundamentos de bases de datos 3ª Edición

Protocolos basados en las marcas Protocolos basados en las marcas temporalestemporales

■ Cada transacción genera una marca temporal cuando se introduce en el sistema. Si a la transacción Ti se le ha asignado la marca

temporal MT(Ti) y una nueva transacción Tj entra en el sistema,

entonces MT(Ti) < MT(Tj).

■ El protocolo maneja la ejecución concurrente de modo que las marcas temporales de las transacciones determinan el orden de secuencia.

■ Para asegurar dicho comportamiento, el protocolo mantiene por cada elemento de datos Q dos valores de marca temporal:

marca_temporal-E(Q) denota la mayor marca temporal de todas las transacciones que ejecutaron con éxito escribir(Q).

marca_temporal-L(Q) denota la mayor marca temporal de todas las transacciones que ejecutaron con éxito leer(Q).

Page 14: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.14Fundamentos de bases de datos 3ª Edición

Protocolos basados en las marcas Protocolos basados en las marcas temporales (Cont.)temporales (Cont.)

■ El protocolo de ordenación por marcas temporales asegura que todas las operaciones leer y escribir conflictivas se ejecutan en el orden de las marcas temporales.

■ Supóngase que la transacción Ti ejecuta leer(Q)

1. Si MT(Ti) < marca_temporal-E(Q) entonces Ti necesita leer un valor de Q que ya se ha sobrescrito. Por tanto se rechaza la operación leer y Ti se retrocede.

2. Si MT(Ti) > marca_temporal-E(Q) entonces la operación leer se ejecuta, y marca_temporal-L(Q) se fija al máximo de marca_temporal-L(Q) y MT(Ti).

Page 15: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.15Fundamentos de bases de datos 3ª Edición

Protocolos basados en las marcas Protocolos basados en las marcas temporales (Cont.)temporales (Cont.)

■ Supóngase que la transacción Ti ejecuta escribir(Q).

■ Si MT(Ti) < marca_temporal-L(Q) entonces el valor de Q que produce Ti se necesita previamente y el sistema asume que dicho valor no se puede producir nunca. Por tanto, se rechaza la operación escribir y Ti se retrocede.

■ Si MT(Ti) < marca_temporal-E(Q) entonces Ti está intentando escribir un valor de Q obsoleto. Por tanto, se rechaza la operación escribir y Ti se retrocede.

■ En otro caso se ejecuta la operación escribir y MT(Ti) se asigna a marca_temporal-E(Q).

Page 16: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.16Fundamentos de bases de datos 3ª Edición

Características del protocolo de marcas Características del protocolo de marcas temporalestemporales

■ El protocolo de ordenación por marcas temporales garantiza la secuencialidad.

■ El protocolo asegura la ausencia de interbloqueos, ya que ninguna transacción tiene que esperar.

■ No asegura planificaciones recuperables ni el retroceso en cascada

Page 17: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.17Fundamentos de bases de datos 3ª Edición

Esquemas multiversiónEsquemas multiversión

■ Los esquemas multiversión mantienen las versiones anteriores de los elementos de datos para aumentar la concurrencia.

■ Cada escribir con éxito tiene como resultado la creación de una nueva versión de los elementos de datos escritos.

■ Se utiliíczan marcas temporales para etiquetar las versiones.

■ Cuando se genera una operación leer(Q), selecciónese la versión apropiada de Q basándose en la marca temporal de la transacción, y devuélvase el valor de la versión elegida.

■ Las operaciones leer no tienen que esperar nunca ya que se devuelve la versión apropiada inmediatamente.

Page 18: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.18Fundamentos de bases de datos 3ª Edición

Ordenación por marcas temporales Ordenación por marcas temporales multiversiónmultiversión

■ Cada elemento de datos Q tiene una secuencia de versiones <Q1, Q2,...., Qm>. Cada versión Qk contiene tres campos de datos:

contenido -- es el valor de la versión Qk.

marca_temporal-E(Qk) -- es la marca temporal de la transacción que haya creado (escrito) la versión Qk

marca_temporal-L(Qk) es la mayor marca temporal de todas las transacciones que hayan leído con éxito la versión Qk

■ cuando una transacción Ti crea una versión nueva Qk de Q,, la marca_temporal-E y la marca_temporal-L de Qk se inician con el valor MT(Ti).

■ marca_temporal-L de Qk se actualiza cada vez que una transacción Tj lee Qk, y MT(Tj) > marca_temporal-L (Qk).

Page 19: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.19Fundamentos de bases de datos 3ª Edición

Ordenación por marcas temporales Ordenación por marcas temporales multiversión (Cont.)multiversión (Cont.)

■ El esquema de marca temporal multiversión que se presenta a continuación asegura la secuencialidad.

■ Supóngase que la transacción Ti genera una operación leer(Q) o

escribir(Q). Permítase que Qk indique la versión de Q cuya marca

temporal de escritura es la mayor marca temporal menor o igual que MT(Ti).

1. Si la transacción Ti ejecuta leer(Q) entonces el valor que se devuelve es el contenido de la versión Qk.

2. Si la transacción Ti ejecuta escribir(Q) y si MT(Ti) < marca_temporal-L(Qk) entonces la transacción Ti se retrocede. Si no, si MT(Ti) = marca_temporal-E(Qk) se sobrescribe el contenido de Qk, y en otro caso se crea una nueva versión de Q.

■ Las lecturas siempre tienen éxito; se rechaza una escritura de Ti si alguna otra transacción Tj que (en el orden de secuencialidad definido por los valores de la marca temporal) debiera leer la escritura de Ti ya ha leído una versión creada por una transacción anterior a Ti.

Page 20: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.20Fundamentos de bases de datos 3ª Edición

Caracteríasticas de esquemas Caracteríasticas de esquemas multiversiónmultiversión

■ Asegura la secuencialidad

■ Las operaciones de lectura nunca esperan (aunque escriben).

■ No se asegura la recuperabilidad ni el retroceso en cascada.

■ Existen variantes que mezclan las versiones con el bloque de dos fases y se solucionan estos problemas.

Page 21: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.21Fundamentos de bases de datos 3ª Edición

Tratamiento de interbloqueosTratamiento de interbloqueos

Estrategias:

■ Prevención de interbloqueos

■ Tiempo límite: se espera un tiempo y luego se retrocede.

■ Detección y recuperación de intebloqueos.

Page 22: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.22Fundamentos de bases de datos 3ª Edición

Tratamiento de interbloqueosTratamiento de interbloqueos

Prevención de interbloqueos:

• Ordenación de las peticiones y se solicitan TODOS los bloqueos de una sola vez y antes de la ejecución de la transacción. . Problema: se pueden mantener bloqueados datos que no es necesario bloquear

• Expropiación y retrocesos

Page 23: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.23Fundamentos de bases de datos 3ª Edición

Prevención de interbloqueos Prevención de interbloqueos con marcas temporales.con marcas temporales.

Esquema esperar-morir: sin expropiación.

si Ti solicita un dato que posee T

j entonces

- Si MT(Ti ) < MT(T

j ) (T

i es anterior a T

j) entonces T

i espera a T

j

- Si MT(Ti ) > MT(T

j ) (T

i es posterior a T

j) entonces se retrocede a T

i

Esquema herir-esperar: con expropiación.

si Ti solicita un dato que posee T

j entonces

- Si MT(Ti ) < MT(T

j ) entonces se retrocede a e T

j

- Si MT(Ti ) > MT(T

j ) entonces T

i espera a a T

j

Page 24: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.24Fundamentos de bases de datos 3ª Edición

Prevención de interbloqueos (Cont.)Prevención de interbloqueos (Cont.)

Las transacciones retrocedidas se reinician con su marca temporal original. De este modo, las transacciones más antiguas tienen precedencia sobre las más nuevas y, por lo tanto, en ambos casos se impide que se produzca la inanición.

Page 25: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.25Fundamentos de bases de datos 3ª Edición

Prevención de interbloqueos (Cont.)Prevención de interbloqueos (Cont.)

■ Esquemas basados en límite de tiempo:

una transacción espera un bloqueo sólo durante un período de tiempo especificado. Después, la espera expira y se retrocede la transacción.

por lo que los interbloqueos no son posibles

fácil de implementar; pero existe la posibilidad de que aparezca la inanición. También es complicado determinar un buen valor para el intervalo de límite de tiempo.

Page 26: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.26Fundamentos de bases de datos 3ª Edición

Detección de interbloqueosDetección de interbloqueos

■ Los interbloqueos se pueden describir como un grafo de espera, que consta de un par G = (V,A),

V es un conjunto de vértices (todas las transacción del sistema)

A es el conjunto de arcos ; cada elemento es un par ordenado Ti →Tj.

■ Si Ti → Tj pertenece a A, entonces hay un arco dirigido de la transacción Ti a Tj, lo cual implica que la transacción Ti está esperando a que la transacción Tj libere un elemento de datos que necesita.

■ Cuando la transacción Ti solicita un elemento de datos que posee actualmente la transacción Tj, entonces se inserta el arco Ti → Tj en el grafo de espera. Este arco sólo se borra cuando la transacción Tj deja de poseer un elemento de datos que necesite la transacción Ti.

■ Existe un interbloqueo en el sistema si y sólo si el grafo de espera contiene un ciclo.

Page 27: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.27Fundamentos de bases de datos 3ª Edición

Detección de interbloqueos (Cont.)Detección de interbloqueos (Cont.)

Grafo de espera sin ciclo Grafo de espera con un ciclo

Page 28: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

©Silberschatz, Korth y Sudarshan16.28Fundamentos de bases de datos 3ª Edición

Recuperación de interbloqueosRecuperación de interbloqueos

Cuando se detecta un interbloqueo:

• Selección de una víctima: se tendrán que retroceder algunas transacciones () para romper el interbloqueo. Se debe seleccionar como víctima aquella transacción que incurra en un coste mínimol.

• Retroceso -- determinar hasta dónde se retrocederá dicha transacción. Se aborta la transacción o se retrocede la transacción sólo lo necesario para romper el interbloqueo

• Se produce la inanición cuando siempre se elige a la misma transacción como víctima. Para impedir la inanición se debe incluir en el factor de coste el número de retrocesos.

Page 29: Capítulo 16: Control de la concurrenciadi002.edv.uniovi.es/~fcano/bdatos/materiales/... · Fundamentos de bases de datos 3ª Edición 16.5 ©Silberschatz, Korth y Sudarshan Fallos

Fin del capítuloFin del capítulo