124
Introduction pratique aux bases de données relationnelles
TRX_1 au nœud TRX_2. Dessinons un deuxième arc orienté
WRITE_WRITE qui relie TRX_2 au nœud TRX_1, car selon le journal
un WRITE de la part de TRX_2 est suivi d'un autre WRITE (du même
objet b) provenant de TRX_1. Nous constatons que ce graphe de
précédence est cyclique (ou circulaire) : en partant d'un nœud
quelconque il existe un chemin orienté qui nous ramène au point de
départ. Cette dépendance cyclique entre les transactions TRX_1 et
TRX_2 nous permet de conclure qu'elles ne sont pas sérialisables.
Critère de sérialisabilité
Sérialisabilité
garantie
Un ensemble de transactions est sérialisable si le graphe de
précédence correspondant ne contient aucun cycle.
Méthodes
pessimistes et
optimistes
La sérialisabilité d'un ensemble de transactions signifie que leur
exécution simultanée dans un système de bases de données multiutilisateur donne des résultats identiques à ceux obtenus dans un
environnement à un seul utilisateur. Pour garantir la sérialisabilité, les
méthodes pessimistes visent à empêcher le plus tôt possible des
conflits entre les transactions simultanées. Les méthodes optimistes
admettent l'existence des conflits entre transactions, mais cherchent à
les résoudre le plus tard possible en annulant les transactions
conflictuelles.
4.3.3 Approches pessimistes
Rôle des verrous
exclusifs
En verrouillant les objets qu'elle doit lire ou modifier, une
transaction peut en bloquer l'accès aux autres transactions. Les
verrous exclusifs (exclusive locks, en anglais) permettent à une
transaction de traiter exclusivement un objet déterminé en mettant les
autres transactions simultanées en attente jusqu'à ce que l'objet en
question soit libéré.
Emploi d’un
protocole de
verrouillage
Le mécanisme de verrouillage et de déverrouillage est défini par
un protocole de verrouillage (locking protocol, en anglais). Si les
verrous sont relâchés trop tôt ou à un moment inapproprié, cela peut
déclencher des opérations non sérialisables. Il faut en outre éviter que
les transactions se bloquent mutuellement, provoquant ainsi une
situation d'interblocage dite «verrou mortel» (deadlock, en anglais).
Introduction pratique aux bases de données relationnelles
TRX_1 au nœud TRX_2. Dessinons un deuxième arc orienté
WRITE_WRITE qui relie TRX_2 au nœud TRX_1, car selon le journal
un WRITE de la part de TRX_2 est suivi d'un autre WRITE (du même
objet b) provenant de TRX_1. Nous constatons que ce graphe de
précédence est cyclique (ou circulaire) : en partant d'un nœud
quelconque il existe un chemin orienté qui nous ramène au point de
départ. Cette dépendance cyclique entre les transactions TRX_1 et
TRX_2 nous permet de conclure qu'elles ne sont pas sérialisables.
Critère de sérialisabilité
Sérialisabilité
garantie
Un ensemble de transactions est sérialisable si le graphe de
précédence correspondant ne contient aucun cycle.
Méthodes
pessimistes et
optimistes
La sérialisabilité d'un ensemble de transactions signifie que leur
exécution simultanée dans un système de bases de données multiutilisateur donne des résultats identiques à ceux obtenus dans un
environnement à un seul utilisateur. Pour garantir la sérialisabilité, les
méthodes pessimistes visent à empêcher le plus tôt possible des
conflits entre les transactions simultanées. Les méthodes optimistes
admettent l'existence des conflits entre transactions, mais cherchent à
les résoudre le plus tard possible en annulant les transactions
conflictuelles.
4.3.3 Approches pessimistes
Rôle des verrous
exclusifs
En verrouillant les objets qu'elle doit lire ou modifier, une
transaction peut en bloquer l'accès aux autres transactions. Les
verrous exclusifs (exclusive locks, en anglais) permettent à une
transaction de traiter exclusivement un objet déterminé en mettant les
autres transactions simultanées en attente jusqu'à ce que l'objet en
question soit libéré.
Emploi d’un
protocole de
verrouillage
Le mécanisme de verrouillage et de déverrouillage est défini par
un protocole de verrouillage (locking protocol, en anglais). Si les
verrous sont relâchés trop tôt ou à un moment inapproprié, cela peut
déclencher des opérations non sérialisables. Il faut en outre éviter que
les transactions se bloquent mutuellement, provoquant ainsi une
situation d'interblocage dite «verrou mortel» (deadlock, en anglais).
