Mini-TP : Simulation d'accès concurrents sous PostgreSQL

  1. Se connecter deux fois à une même base de données dans deux terminaux (term1 et term2) :

    • psql mydb

    • psql mydb

  2. Créer une table test : CREATE TABLE test (a integer);

Question

  1. term1 Insérer une valeur : INSERT ... (COMMIT implicite)

  2. term2 Vérifier que la valeur est visible : SELECT ...

Question

  1. term1 Commencer une transaction : BEGIN TRANSACTION;

  2. term1 Insérer la valeur 2 dans la table : INSERT INTO...

  3. term1 Vérifier que la valeur est bien dans la table : SELECT * FROM ...

  4. term2 Vérifier que la valeur n'est pas visible : SELECT * FROM ...

  5. term1 Valider la transaction : COMMIT;

  6. term2 Vérifier que la valeur est visible : SELECT * FROM ...

Question

  1. term1 Commencer une transaction : BEGIN TRANSACTION;

  2. term1 Exécuter une mise à jour (multiplier toutes les valeurs par 2) : UPDATE...

  3. term2 Exécuter une mise à jour concurrente (multiplier les valeurs par 3) : UPDATE...

  4. term2 Observer la mise en attente

  5. term1 Valider la transaction : COMMIT;

  6. term2 Vérifier le déblocage et que les deux mises à jour ont bien été effectuées (a multiplié par 6) : SELECT...

  7. term1 Vérifier que les deux mises à jour ont bien été effectuées (a multiplié par 6) : SELECT...