Bases des bases de données

La transaction T1 détient un verrou partagé sur une ligne et la lit. Sur la même ligne, T2 demande un verrou partagé et T3 un verrou exclusif. Quelle affirmation est correcte pour la période qui précède la libération du verrou par T1 ?

  1. AT2 obtient son verrou immédiatement, mais T3 doit attendre
  2. BT2 et T3 doivent toutes deux attendre
  3. CT2 et T3 obtiennent toutes deux leur verrou immédiatement
Afficher la réponse et l'explication

Réponse : A. T2 obtient son verrou immédiatement, mais T3 doit attendre

Un verrou partagé se pose lors de la lecture des données ; d'autres transactions peuvent aussi poser des verrous partagés sur les mêmes données et les lire en même temps, mais elles ne peuvent pas poser de verrou exclusif pour écrire. Un verrou exclusif se pose lors de la mise à jour des données, et tant qu'il est détenu, les autres transactions ne peuvent poser ni verrou partagé ni verrou exclusif. Dans cet exemple, le verrou partagé de T1 et celui de T2 sont compatibles ; T2 obtient donc son verrou immédiatement et peut lire. Le verrou exclusif de T3 est incompatible avec le verrou partagé de T1 ; T3 doit donc attendre que T1 libère son verrou (et, comme T2 détient aussi un verrou partagé, que T2 libère également le sien). Utiliser ainsi des verrous pour éviter les interférences entre transactions exécutées simultanément s'appelle le contrôle de concurrence.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. Quelle proposition décrit correctement le verrouillage à deux phases (2PL), utilisé pour le contrôle de concurrence des transactions ?
  2. La transaction T1 a posé un verrou exclusif sur la ligne A puis demandé un verrou sur la ligne B, tandis que T2 a posé un verrou exclusif sur la ligne B puis demandé un verrou sur la ligne A ; aucune ne peut donc progresser. Que fait généralement un SGBD lorsqu'il détecte cette situation ?
  3. Lors de la mise à jour des données, de nombreux SGBD enregistrent les modifications dans un journal (log) et écrivent ce journal sur un support de stockage non volatil avant la base de données elle-même (WAL : journalisation à écriture anticipée, write-ahead logging). Quelle est la principale raison de cette approche ?
  4. On considère les transactions T1 à T5 ; un point de contrôle (checkpoint) a été pris une fois avant qu'une panne ne survienne. T1 a démarré et a été validée avant le point de contrôle. T2 et T3 ont démarré avant le point de contrôle ; T2 a été validée après le point de contrôle mais avant la panne, et T3 n'était pas validée au moment de la panne. T4 et T5 ont démarré après le point de contrôle ; T4 a été validée avant la panne, et T5 ne l'était pas. Lors de la reprise après la panne, quelles transactions faut-il rejouer (rollforward) à l'aide du journal ?
  5. On a créé un index en arbre B+ sur la colonne NumMembre d'une table Membre de 1 million de lignes. Quelle combinaison associe correctement l'effet que l'on peut généralement attendre et son coût ?