Bases des bases de données

Quelle proposition décrit correctement le verrouillage à deux phases (2PL), utilisé pour le contrôle de concurrence des transactions ?

  1. AUne transaction peut alterner autant de fois qu'elle le veut entre pose et libération de verrous. Cela garantit qu'aucun interblocage ne se produit
  2. BOn ne pose de verrous que pour les écritures, pas pour les lectures. Cela évite tous les problèmes, y compris les lectures sales
  3. CDès qu'une transaction a libéré un verrou, elle n'en pose plus de nouveau. Cela garantit qu'une exécution simultanée donne le même résultat qu'une exécution en série, mais des interblocages peuvent encore se produire
Afficher la réponse et l'explication

Réponse : C. Dès qu'une transaction a libéré un verrou, elle n'en pose plus de nouveau. Cela garantit qu'une exécution simultanée donne le même résultat qu'une exécution en série, mais des interblocages peuvent encore se produire

Avec le verrouillage à deux phases (2PL), chaque transaction comporte 2 phases : une phase où elle pose l'un après l'autre les verrous dont elle a besoin (phase de croissance) et une phase où elle les libère (phase de décroissance) ; une fois qu'elle a commencé à libérer des verrous, elle n'en pose plus de nouveaux. Si toutes les transactions respectent cette règle, le résultat d'une exécution simultanée est garanti identique à celui d'une exécution des transactions l'une après l'autre dans un certain ordre (sérialisabilité). Il ne peut toutefois pas empêcher un interblocage (deadlock), dans lequel 2 transactions attendent chacune que l'autre libère un verrou ; le SGBD détecte donc les interblocages et les traite, par exemple en annulant l'une des transactions. En pratique, on utilise couramment le verrouillage à deux phases strict, qui conserve les verrous exclusifs jusqu'à la validation ; il empêche aussi les autres transactions de lire des données non validées.

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

Autres questions sur Bases des bases de données

  1. 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 ?
  2. 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 ?
  3. 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 ?
  4. 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 ?
  5. Pour une table Membre de 1 million de lignes, on envisage de créer un index en arbre B+ sur chacune des colonnes NumMembre (toutes différentes), Prefecture (47 valeurs) et Sexe (2 valeurs, réparties à peu près à moitié). Lors d'une recherche qui précise dans la clause WHERE la valeur d'une seule colonne, sur quelle colonne un index sera-t-il probablement le moins efficace ?