database deadlock database-deadlocks

database - ¿Cuál es la diferencia entre esperar y morir y esperar?



deadlock database-deadlocks (3)

¿Cuál es la diferencia entre esperar y morir y esperar?

Descubrí que ambas técnicas de prevención de interbloqueo están haciendo lo mismo (Rollback of Older process).

¿Puede algún cuerpo explicarme cuál es la diferencia entre ellos con un ejemplo adecuado?


En ambos casos, Viejo siempre es campeón, es decir, sobrevivirá. La diferencia es desde el punto de vista de la transacción más joven.

Si el más joven está solicitando un recurso en poder de una antigua trans. , en espera / morir, puede esperar a que se respete mientras la Vieja Trans. Si el más joven solicita un recurso en poder de una antigua Trans., en herida / dado se verá obligado a retroceder como la Antigua Trans.

En ambos esquemas de edad nunca se pierde.

Consulte: https://www.tutorialspoint.com/dbms/dbms_deadlock.htm


Parth ha dado una respuesta detallada. Aquí lo resumo de una manera diferente.

Supongamos que Ti solicita un bloqueo mantenido por Tj. La siguiente tabla resume las acciones tomadas para el esquema de espera-muerte y herida-espera:

wait-die wound-wait Ti is younger than Tj Ti dies Ti waits Ti is older than Tj Ti waits Tj aborts

Ambos esquemas prefieren transacciones más antiguas con una marca de tiempo más antigua.


Esquema de espera : es una técnica no preventiva para la prevención de interbloqueos. Cuando la transacción Ti solicita un elemento de datos actualmente en poder de Tj, se permite que Ti espere solo si tiene una marca de tiempo más pequeña que la de Tj (que es Ti es más antigua que Tj); de lo contrario, Ti se deshace (muere).

En este esquema, si una transacción solicita bloquear un recurso (elemento de datos), que ya está retenido con un bloqueo conflictivo por otra transacción, puede ocurrir una de las dos posibilidades:

(1) Si TS (Ti) <TS (Tj), es decir Ti, que solicita un bloqueo conflictivo, es más antiguo que Tj, entonces se permite que Ti espere hasta que el elemento de datos esté disponible.

(2) Si TS (Ti)> TS (tj), es decir Ti es más joven que Tj, entonces Ti muere. Ti se reinicia más tarde con un retraso aleatorio pero con la misma marca de tiempo.

Este esquema permite que la transacción más antigua espere pero mata a la más joven.

Por ejemplo:

Supongamos que las transacciones T22, T23, T24 tienen sellos de tiempo 5, 10 y 15 respectivamente. Si T22 solicita un elemento de datos en poder de T23, T22 esperará. Si T24 solicita un elemento de datos en poder de T23, entonces T24 se retrotraerá.

Esquema de herida en espera: es una técnica preventiva para la prevención de interbloqueos. Es una contraparte del esquema de esperar y morir. Cuando Transaction Ti solicita un elemento de datos actualmente en poder de Tj, se permite que Ti espere solo si tiene una marca de tiempo mayor que la de Tj, de lo contrario, Tj se deshace (Tj está herido por Ti).

En este esquema, si una transacción solicita bloquear un recurso (elemento de datos), que ya está retenido con un bloqueo en conflicto por alguna otra transacción, puede ocurrir una de las dos posibilidades:

(1) Si TS (Ti) <TS (Tj), entonces Ti obliga a Tj a retroceder, es decir, las heridas Ti Tj. Tj se reinicia más tarde con un retraso aleatorio pero con la misma marca de tiempo.

(2) Si TS (Ti)> TS (Tj), entonces Ti se ve obligado a esperar hasta que el recurso esté disponible.

Este esquema, permite que la transacción más joven espere; pero cuando una transacción más antigua solicita un artículo en poder de uno más joven, la transacción más antigua obliga al más joven a abortar y liberar el artículo.

Por ejemplo:

Supongamos que las Transacciones T22, T23, T24 tienen sellos de tiempo 5, 10 y 15 respectivamente. Si T22 solicita un elemento de datos en poder de T23, entonces el elemento de datos se reemplazará de T23 y T23 se revertirá. Si T24 solicita un elemento de datos en poder de T23, entonces T24 esperará.

En ambos casos, la transacción que ingresa al sistema en una etapa posterior se cancela.