Quelle est la différence entre wait-die et la plaie attendre?
Quelle est la différence entre wait-die et la plaie attendre?
J'ai trouvé que les techniques de blocage de la prévention sont en train de faire la même chose (Restauration des Anciens processus).
Quelqu'un peut-il m'expliquer quelle est la différence entre eux avec des exemples appropriés ?
Vous devez vous connecter pour publier un commentaire.
Wait-die régime: C'est un non-préemptif technique de blocage de la prévention. Lors de la transaction Ti demandes d'un élément de données actuellement détenus par les Tj, Ti est autorisé à attendre uniquement si elle a un timestamp plus petite que celle de Tj (C'est-Ti est âgé de plus de Tj), sinon Ti est annulée (dies).
Dans ce schéma, si l'une des demandes d'opération de verrouillage d'une ressource (élément de données), qui est déjà occupé avec un verrou en conflit par une autre transaction, puis l'une des deux possibilités peuvent se produire −
(1) Si TS(Ti) < TS(Tj) − c'est-Ti, qui demande un verrou en conflit, est âgé de plus de Tj − alors Ti est autorisé à attendre jusqu'à ce que la donnée est disponible.
(2) Si TS(Ti) > TS(tj) − c'est-Ti est plus jeune que Tj − alors Ti meurt. Ti est redémarrée plus tard, avec un délai aléatoire, mais à la même heure.
Ce régime permet aux plus âgés de transaction à attendre, mais tue le plus jeune.
Par exemple:
Supposons que la transaction T22, T23, T24 avoir le temps les timbres de 5, 10 et 15, respectivement. Si T22requests un élément de données détenues par T23 puis T22 attendre. Si T24 demandes d'un élément de données détenues par T23, puis T24 sera annulée.
Plaie attendre régime: C'est une préemption de la technique de blocage de la prévention. C'est une contrepartie à l'wait-die régime. Lors de la Transaction Ti demandes d'un élément de données actuellement détenus par les Tj, Ti est autorisé à attendre uniquement si elle a un timestamp plus grande que celle de Tj, sinon Tj est annulée (Tj est blessé par Ti).
Dans ce schéma, si l'une des demandes d'opération de verrouillage d'une ressource (élément de données), qui est déjà tenue en conflit avec verrouillage par certains d'une autre opération, l'une des deux possibilités peuvent se produire −
(1) Si TS(Ti) < TS(Tj), puis Ti forces Tj être annulées − c'est-Ti blessures Tj. Tj est redémarrée plus tard, avec un délai aléatoire, mais à la même heure.
(2) Si TS(Ti) > TS(Tj), alors Ti est obligé d'attendre jusqu'à ce que la ressource est disponible.
Ce schéma, permet à la jeune transaction à attendre; mais lorsqu'une ancienne demandes de transaction, un objet tenu par un plus jeune, le plus âgé opération des forces les plus jeunes à abandonner et relâchez l'élément.
Par exemple:
Supposons que les Opérations T22, T23, T24 avoir le temps les timbres de 5, 10 et 15, respectivement . Si T22requests un élément de données détenues par T23, puis l'élément de données est retardé de T23 et T23 sera annulée. Si T24 demandes d'un élément de données détenues par T23, puis T24 attendra.
Dans les deux cas, l'opération qui entre dans le système à un stade ultérieur est abandonnée.
Parth a donné une réponse détaillée. Ici, je résume d'une manière différente.
Supposer que Ti demande un verrou détenu par Tj. Le tableau suivant résume les mesures prises pour wait-die et la plaie attendre régime:
Les deux régimes préfère plus les transactions avec les anciennes timestamp.
die
même que abort/rollback ?die
est le même que abort/restauration.Dans les deux cas, l'Ancien est toujours le champion va survivre. La différence est que les jeunes de transactions de point de vue.
Si le plus jeune a besoin d'une ressource détenue par une vieille trans. en attente/de mourir, il peut attendre pour lui donner le respect qu'Vieux trans.Si le plus jeune a besoin d'une ressource détenue par une vieille trans., dans de plaie ou de mourir, il sera en vigueur pour la restauration en tant que Vieux trans.
Dans les deux ancien régime n'est jamais une perte.
Consulter:https://www.tutorialspoint.com/dbms/dbms_deadlock.htm
wait-die: Lorsqu'un âgées transaction tente de verrouiller un DB élément qui a été verrouillé par un jeunes transaction, il attend. Lorsqu'un jeunes transaction tente de verrouiller un DB élément qui a été verrouillé par un âgées transaction, il meurt.
plaie attendre: Lorsqu'un âgées transaction tente de verrouiller un DB élément qui a été verrouillé par un jeunes transaction, il blessures le plus jeune de la transaction. Lorsqu'un jeunes transaction tente de verrouiller un DB élément qui a été verrouillé par un âgées transaction, il attend.
Références: