Quelle est la différence entre wait-die et bless-wait?
j'ai constaté que les deux techniques de prévention des blocages font la même chose (processus Rollback of Older).
n'importe quel corps peut m'expliquer, quelle est la différence entre eux avec un exemple approprié.
Schéma Wait-die : Il s’agit d’une technique non préventive de prévention des blocages. Lorsque la transaction Ti demande un élément de données actuellement détenu par Tj, Ti n’est autorisé à attendre que si son horodatage est inférieur à celui de Tj (c’est-à-dire que Ti est plus ancien que Tj), sinon Ti est restauré.
Dans ce schéma, si une transaction demande à verrouiller une ressource (donnée) déjà détenue avec un verrou en conflit par une autre transaction, alors l'une des deux possibilités peut se présenter:
(1) Si TS (Ti) <TS (Tj) - c'est-à-dire que Ti, qui demande un verrou en conflit, est plus ancien que Tj - alors Ti est autorisé à attendre que l'élément de données soit disponible.
(2) Si TS (Ti)> TS (tj) - c'est-à-dire que Ti est plus jeune que Tj - alors Ti meurt. Ti est redémarré plus tard avec un retard aléatoire mais avec le même horodatage.
Ce schéma permet à l'ancienne transaction d'attendre mais tue le plus jeune.
Par exemple:
Supposons que les transactions T22, T23 et T24 ont les horodatages 5, 10 et 15 respectivement. Si T22 demande un élément de données détenu par T23, T22 attendra. Si T24 demande un élément de données détenu par T23, T24 sera annulé.
Schéma Wound-Wait: Il s’agit d’une technique préventive de prévention des blocages. C'est une contrepartie du système wait-die. Lorsque Transaction Ti demande un élément de données actuellement détenu par Tj, Ti n’est autorisé à attendre que si son horodatage est supérieur à celui de Tj, sinon Tj est annulé (Tj est blessé par Ti).
Dans ce schéma, si une transaction demande à verrouiller une ressource (donnée) déjà bloquée de manière conflictuelle par une autre transaction, une des deux possibilités peut se présenter:
(1) Si TS (Ti) <TS (Tj), alors Ti force à faire reculer Tj - c'est-à-dire que Ti blesse Tj. Tj est redémarré plus tard avec un retard aléatoire mais avec le même horodatage.
(2) Si TS (Ti)> TS (Tj), Ti est obligé d'attendre que la ressource soit disponible.
Ce schéma permet à la transaction la plus jeune d’attendre; mais lorsqu'une transaction plus ancienne demande à un élément détenu par un objet plus ancien, cette dernière oblige le plus jeune à abandonner et à libérer l'élément.
Par exemple:
Supposons que les transactions T22, T23 et T24 ont des horodatages respectifs 5, 10 et 15. Si T22 demande un élément de données détenu par T23, celui-ci sera préempté de T23 et celui-ci sera annulé. Si T24 demande un élément de données détenu par T23, T24 attendra.
Dans les deux cas, la transaction qui entre dans le système à un stade ultérieur est annulée.
Parth a donné une réponse détaillée. Ici, je le résume différemment.
Supposons que Ti demande un verrou détenu par Tj. Le tableau ci-dessous récapitule les mesures prises pour les schémas d’attente et de plaie:
wait-die wound-wait
Ti is younger than Tj Ti dies Ti waits
Ti is older than Tj Ti waits Tj aborts
Les deux systèmes préfèrent les transactions plus anciennes avec un horodatage plus ancien.
Dans les deux cas, Old est toujours champion, c’est-à-dire qu'il survivra. La différence est du point de vue de la transaction plus jeune.
Si le plus jeune demande une ressource détenue par un ancien trans. , en attente/meurt il peut attendre pour donner le respect en tant que Old trans.Si le plus jeune demande une ressource détenue par un ancien trans, en blessure/mourir il sera forcé de revenir en arrière en tant que Old trans.
Dans les deux cas, le vieux n’est jamais perdu.