Systèmes de gestion de bases de données NFP 107 Introduction à la concurrence d’accès Second fragment Philippe Rigaux philippe.rigaux@cnam.fr http://idf.pleiad.net/index.php.

Slides:



Advertisements
Présentations similaires
PEGASE – GESTION BUDGéTAIRE
Advertisements

Résolution Graphique d'un Programme Linéaire
Contrôle de la concurrence
Chapitre annexe. Récursivité
Access Frédéric Gava (MCF)
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 6 : Protection des données Bertrand Audras Microsoft Technology Center.
Portée des variables VBA & Excel
But de la lecture critique
TRANSACTION Problèmes posés
1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre.
Jérôme CUTRONA PHP et bases de données Jérôme CUTRONA 01:07:51 Programmation Web
Initiation aux bases de données et à la programmation événementielle
en management de projet
4ème Onglet La cerise sur le gâteau
Rappel sur les bases de données et le vocabulaire
TDD & Legacy By Agile4Techos. Qui sommes nous? Bernard Huguet Luc Jeanniard Johan Martinsson Cyrille Roy.
Crier la Vie.
Atomicité Transactions Atomiques Recouvrement à Base de Journal
Le Combat entre l’Homme et la Machine
La Profondeur de Champ Profondeur de champ : définition
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
LE DISCOURS PHILOSOPHIQUE
1 Gestion des Transactions: Survol Chapitre Transactions Une transaction est la vue abstraite qua le SGBD dun programme dusager: cest une séquence.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Gestion des Transactions: Survol Chapitre 16.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Calcul de probabilités
Systèmes de gestion de bases de données NFP 107 Les techniques du contrôle de concurrence Philippe Rigaux
Introduction.
PRESENTATION DU LOGICIEL CAPTURE SYSTEM (retour d’expériences) S. BOUDON F.LARRAS Groupe des DM des CLCC - Rencontres des 6 et 7 mai 2010, Marseille.
Introduction Les niveaux de RAID offrent un large choix d’alternatives qui permettent de choisir un rapport performance/sécurité différent. Il est aussi.
Dans la barre des messages, cliquez sur Activer la modification,
Date : Juillet 2014 Formation : TAI Formateur : Tayeb BENDJELTI
ATTENTION: les distributeurs 1D, 2D et 3D sont bistables
Gérer la sécurité des mots de passe et les ressources
Projet : Gestion de l’eau
Soutenance Orale Titre : .
Dépense Retenues de garantie
Cette présentation a été testée avec Office 2003 et suivants
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
NUXE au service de la pharmacie
Comportement des systèmes mécaniques
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Bases de données Open Source Pierre Crépieux 13/03/2008.
TDD & Legacy By Agile4Techos.
DES PROBLÈMES DE VERSIONS
Déléguer la saisie à ses socio-pros : comment s'y prendre ? 2014.
Hatainville Les Moitiers d’Allonne – Tel : Website : stratic.online.com La démarche projet Mars 2001.
Menu Structure : Divisions Diffusion Nationale TOULOUSE – Décembre 2008 Structure et Services « STS » Menu Structures : Divisions.
Surveiller et résoudre le conflit de verrouillage
Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien
Manipulation des Données
 Formulaires HTML : traiter les entrées utilisateur
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
Les bases de données Séance 8 Jointures.
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix.
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Le Langage de Manipulation de Données LMD Module 6.
1 CEC A.-CHAVANNE Sites Web et bases de données. 2 UNE BASE DE DONNÉES : POURQUOI ? Manipulation de grandes quantités d’information – représentation des.
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Transaction et concurrence Du Mooc Bador Serge Abiteboul, Benjamin Nguyen, Philippe Rigaux.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Systèmes de gestion de bases de données NFP 107 Introduction à la concurrence d’accès Second fragment Philippe Rigaux philippe.rigaux@cnam.fr http://idf.pleiad.net/index.php

Réponses… J’effectue un commit, puis je m’aperçois d’une erreur: est-il encore temps de faire un rollback? La transaction r[s1]r[c1]w[s2]w[c1]C peut-elle être engendrée par la procédure Réservation? J’exécute la commande: DELETE * FROM MesClients; WHERE id=1; Réponse: 100 000 lignes détruites. Pourquoi et que faire? Exécution de Réservation: je lis un spectacle: il reste 10 places libres; je veux en réserver 5: on me répond qu’une autre transaction a tout pris. Est-ce possible dans un système transactionnel?

Passons à la pratique… Après la théorie, voyons ce que signifie le contrôle de concurrence en pratique On utilise MySQL, avec le moteur de stockage InnoDB On crée les tables Client et Spectacle On choisit un niveau d’isolation READ COMMITTED (même qu’ORACLE) On lance deux sessions, en désactivant le mode autocommit Et on regarde le comportement -> illustration avec quelques commandes Toutes les commandes sont dans cmdtrans.sql

Expérience 1: l’isolation en pratique Même scénario que dans le polycopié On effectue deux réservations dans deux sessions différentes. La première finit par un commit La seconde par un rollback Même déroulé que dans le polycopié.

Les niveaux d’isolation Choisir le niveau d’isolation est un compromis entre Aucune isolation: fluidité totale; anomalies possibles (et fréquentes) Niveau d’isolation totale: Aucune anomalie Fluidité faible; au pire une transaction peut être rejetée (deadlock) Très important: les systèmes choisissent un mode par défaut qui n’est pas l’isolation totale.

Niveaux d’isolation SQL Définis par la norme SQL. 4 niveaux READ UNCOMMITED Possibilité de lire des données non validées (MySQL) READ COMMITTED On ne peut lire que des données validées, elles peuvent changer en cours de transaction (ORACLE) REPEATABLE READ On ne lit que des données validées avant le début de la transaction, et une lecture renvoie toujours la même valeur (MySQL/InnoDB) SERIALIZABLE Isolation totale (tous les systèmes, pas par défaut)

Expérience 2: problèmes en cas d’isolation insuffisante. On se met en mode READ UNCOMMITTED On joue l’exemple des mises à jour perdues Les deux transactions lisent d’abord Les deux transactions écrivent ensuite Une des mises à jour est perdue Typique du problème le plus grave et le plus fréquent: on lit une donnée pour la modifier ensuite.

Expérience 3: tuples fantômes Toujours en mode READ UNCOMMITTED Une des sessions effectue un contrôle de cohérence: On lit les clients On lit le spectacle On vérifie qu’il y a autant de places payées (par les clients) que de places réservées (spectacle) La seconde session effectue une réservation.

Expérience 4: lectures sales = lecture d’une donnée modifiée par une autre transaction, mais pas encore validée. Toujours en mode READ UNCOMMITTED La première session commence une réservation La seconde début et lit une donnée non validée La première effectue un rollback. Que doit faire la seconde?

Retour sur les niveaux d’isolation Lectures sales Lectures non répétables Tuples fantômes READ UNCOMMITTED Possible READ COMMITTED Impossible REPEATABLE READ SERIALIZABLE Essentiel: le cas des mises à jour perdues et possibles dans tous les modes, Sauf SERIALIZABLE

Expérience 5: mode SERIALIZABLE On reprend l’exemple des mises à jour perdues On se met en mode SERIALIZABLE Et on constate le comportement du système…

Une possibilité: FOR UPDATE Permet de gérer le cas-type des mises à jour perdues On lit une donnée pour la modifier ensuite Une autre transaction fait la même chose Tout le monde se retrouve bloqué La clause FOR UPDATE permet de « réserver » un ligne au moment de la lecture. Donc pas d’interblocage Séduisant, mais difficile à appliquer …

Conclusion forte Les systèmes de garantissent pas, par défaut, la sérialisabilité Des anomalies peuvent survenir Il est extrêmement difficile de comprendre des anomalies qui surviennent très rarement Noter que les programmes peuvent être corrects Il est donc impératif de se mettre en mode SERIALIZABLE pour les procédures transactionnelles: celles qui passent d’un état cohérent de la base à une autre Il faut accepter comme un moindre mal le rejet parfois, de certaines transactions

Pour réfléchir Reprendre les expériences Pour chacune, se mettre dans un mode donné Essayer de prévoir le résultat Quand une session va être bloquée Quand on va aboutir à une anomalie Faire l’expérience avec MySQL/InnoDB.