BDAV2
Page complémentaire de l'EC bases de données avancées 2 en L3 UNC édition 2022
Gare au vérrou
Q1 - Démonstration de deadlocks
- Démonstration du cas de verrou
- Donner le message d’erreur et la documentation de PostgreSQL
Réponse Q1
Création de monnaie par race condition entre transferts
Q2 - Attaque par race condition
- Montrer qu’il est possible de créer 1000€
Réponse Q2
Q3 - Solution par augmentation du niveau d’isolation
- Montrer que ce problème disparait avec le niveau d’isolation
REPEATABLE READ
Réponse Q3
Q4 - Solution par verrou explicite
- Montrer que ce problème disparait avec le niveau d’isolation
FOR UPDATE
- Expliquer sur quels tuples portent les vérrous et
READ COMMITTED
et en SELECT ...FOR UPDATE
Réponse Q4
Création de monnaie par race condition entre vérification et exécution
Q5 - Attaque ACIDRain manuelle
- Montrer qu’il est possible pour
alice
d’avoir un solde négatif
Réponse Q5
Q6 - Transactions concurrentes automatisées
- Montrer qu’il est possible pour
alice
d’avoir un solde négatif de 1000*(n-1) en lancant n transaction concurrentes (renvoyer vers l’annexe pour le code)
- Expliquez la correction apportée pour gérer les exception
Réponse Q6
Nécessité du niveau SERIALIZABLE
Q7 - Démonstration
- Fonctionnement de la procédure
smooth(v_total integer, v_name text)
- Montrer qu’on peut atteindre un état incohérent avec 2 tâches asynchrones, aux niveaux
read_committed
mais aussi repeatable_read
.
- Justification de l’impossibilité de l’action sur un même compte
- Vérification du niveau
SERIALIZABLE
Réponses Q7
Annexes