Concurrence. Concurrence d accès. Nicolas Travers nicolas.travers@cnam.fr



Documents pareils
Bases de données et sites WEB Licence d informatique LI345

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Bases de données avancées Concurrence d'accès et reprise

Réplication des données

Cours de Base de Données Cours n.12

Données Réparties. Thibault BERNARD.

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

Cours Bases de données 2ème année IUT

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Implémentation des SGBD

Module BDR Master d Informatique (SAR)

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Gestion de données réparties. Cours 1

Projet gestion d'objets dupliqués

Présentation du module Base de données spatio-temporelles

Année Universitaire 2009/2010 Session 2 de Printemps

Les Systèmes de Gestion de Bases de Données Temps Réel

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

Bases de données cours 1

Cours Bases de données

Eléments de base de la sécurité des bases de données

Transactionnel et transactionnel réparti. Source R.CHEVANCE G.Gardarin

Bases de données Cours 1 : Généralités sur les bases de données

Chapitre 4 : Exclusion mutuelle

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Les systèmes de base de données temps réels. Pokrovskaya Natalia, Kabbali Nadia

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Cours de Systèmes d Exploitation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Gestion répartie de données - 1

Notes de cours : bases de données distribuées et repliquées

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Nouveautés Ignition v7.7

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

Initiation à LabView : Les exemples d applications :

Intelligence Artificielle Planification

Logiciel de Gestion de la Relation Client

Le Network File System de Sun (NFS)

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bases de Données Avancées

Performances? Critères de performances (2) Critères de performances

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Les bases de données Page 1 / 8

Introduction aux bases de données: application en biologie

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

SYSTÈME DE GESTION DE FICHIERS

Resolution limit in community detection

Introduction aux Bases de Données Relationnelles Conclusion - 1

Java et les bases de données

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Gestion des bases de données

Le Protocole DHCP. Module détaillé

1. Introduction. Bases de données Réparties, Fédérées et Réplication. Plan. Bibliographie du cours

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

NatRcs Ce document présente la liste des nouvelles fonctionnalités de la 7.00, disponible à partir de Mars 2011.

//////////////////////////////////////////////////////////////////// Administration bases de données

Ordonnancement temps réel

Master I Génie Logiciel

Logiciel de création de badges personnalisés.

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

VIII- Circuits séquentiels. Mémoires

Cours Base de données relationnelles. M. Boughanem, IUP STRI

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Gestion répartie de données - 1 Duplication et cohérence

Optimisations des SGBDR. Étude de cas : MySQL

Les Géodatabases en 9.2

3. La SGA ou System global Area

1 Introduction et installation

Information utiles. webpage : Google+ : digiusto/

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

THOT - Extraction de données et de schémas d un SGBD

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Surveillance et maintenance prédictive : évaluation de la latence de fautes. Zineb SIMEU-ABAZI Univ. Joseph Fourier, LAG)

Introduction à SQL2. Professeur Serge Miranda Directeur Master «MBDS»

données en connaissance et en actions?

CESI Bases de données

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Site Web de paris sportifs

Systèmes d information et bases de données (niveau 1)

NEXTDB Implémentation d un SGBD Open Source

Bases de Données Réparties

Évaluation et optimisation de requêtes

Base de données II Module 3b

Cohérence de Données en Environnement Mobile

Bases de données et sites WEB

Répartition, Réplication, Nomadisme, Hétérogénéité dans les SGBDs


Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Vincent Augusto

Cours 8 Not Only SQL

Chapitre 1 : Introduction aux bases de données

CHAPITRE 1 ARCHITECTURE

Manuel du logiciel PrestaTest.

Transcription:

Concurrence Concurrence d accès FIP1 - Bases de Données Nicolas Travers nicolas.travers@cnam.fr Équipe Vertigo Laboratoire CEDRIC Conservatoire National des Arts & Métiers, Paris, France 1 / 36

Plan Concurrence 1 Concurrence d accès aux données 2 / 36

1 Concurrence d accès aux données Introduction et problématique Problèmes des Mises à jour Contrôle de concurrence Niveaux d isolation dans un SGBD Algorithmes de contrôle de concurrence 3 / 36

Problématique Concurrence Intro Pb MAJ Ctrl Isolation Algo Une Base de Données - Plusieurs accès simultanés Opérations : Lecture (LR), Écriture (LMD) Programmes (ensemble d opérations) : Transaction Problème : Mêmes données accédées 4 / 36

Exemple Concurrence Intro Pb MAJ Ctrl Isolation Algo Programme : Réservation de place d avion 1 Consultation des vols disponibles 2 Consultation des places libres 3 Réservation d une place 4 Paiement 5 Confirmation Variante : Annulation, Réserver plusieurs places... Problème : Deux utilisations du programme sur le même vol. Qui peut réserver sa place? Quelles sont les places disponibles? 5 / 36

Transaction Concurrence Intro Pb MAJ Ctrl Isolation Algo Transaction Séquence d opérations de lectures et d écritures sur des données dont l ordre est immuable et se terminant par une validation ou une annulation. Opérations : Lecture : r i [x] (read) Écriture : w i (write) Numéro de transaction i Données à lire/écrire x Validation / Annulation des effets de la transaction Validation : Commit (c i ) Annulation : Abort (a i ) Exemple : T 1 : r 1 [x] r 1 [y] w 1 [y] c 1 T 2 : r 2 [z] r 2 [x] a 2 6 / 36

Concurrence Concurrence Intro Pb MAJ Ctrl Isolation Algo Histoire Une Histoire H est une séquence d opérations provenant de plusieurs transactions. Histoire concurrentielle H est dites concurrentiel si les opérations simultanées sur les mêmes données. H concurrente : r 1 [x] r 2 [z] r 1 [y] w 1 [y] r 2 [y] c 1 a 2 H non-concurrente : r 1 [x] r 2 [z] r 1 [y] w 1 [y] r 2 [z] c 1 a 2 7 / 36

Validation / Annulation Commit : Validation des effets de la transaction dans la base de données Les opérations d écritures doivent être effectives et visibles par les autres transactions Abord (ou Rollback) : Annulation des effets de la transaction Annule tout effet d écriture sur les données ou les transactions concurrentes 8 / 36

Propriétées ACID Concurrence Intro Pb MAJ Ctrl Isolation Algo Atomicité : Transaction exécutée en totalité (pas d exécution partielle) une transaction interrompue doit être annulée (Abort) Cohérence : respect des contraintes d intégrité sur les données solde(compte) 0 ; solde(source) + solde(dest) = const une transaction modifie la BD d un état initial cohérent à un état final cohérent pendant la transaction, l état peut être incohérent! Isolation : Pas d échanges entre les transactions la transaction s exécute comme si elle était seule objectif : exécution concurrente des transactions équivalente à une exécution en série (non-concurrente) Durabilité : les effets d une transaction validée par Commit sont permanents on ne doit pas annuler une transaction validée 9 / 36

Mise-à-jour de la BD Deux variantes : immédiate : modification immédiate de la BD Modifications directement visibles et utilisables Beaucoup de concurrence différée : chaque transaction travaille sur des copies, avec mise-à-jour de la BD à la fin de la transaction Pas de concurrence Modifications appliquées ou annulation de la transaction (relancée) 10 / 36

1 Concurrence d accès aux données Introduction et problématique Problèmes des Mises à jour Contrôle de concurrence Niveaux d isolation dans un SGBD Algorithmes de contrôle de concurrence 11 / 36

Types de problèmes Concurrence Intro Pb MAJ Ctrl Isolation Algo Exécution d une histoire peut provoquer des incohérences 1 Lecture sale Dépendances non validées Lecture non validés 2 Écriture sale 3 Annulation en cascade 4 Exécution stricte 5 Tuple fantôme 12 / 36

Lectures Sales - Dépendance non-validées Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 au début, x=200 H = r 1 [x] w 1 [x] r 2 [x] w 2 [x] c 2 a 1 BD P1 P2 x = 200 13 / 36

Lectures Sales - Dépendance non-validées Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 au début, x=200 H = r 1 [x] w 1 [x] r 2 [x] w 2 [x] c 2 a 1 BD P1 P2 x = 300 x=300 13 / 36

Lectures Sales - Dépendance non-validées Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 au début, x=200 H = r 1 [x] w 1 [x] r 2 [x] w 2 [x] c 2 a 1 BD P1 P2 Commit x = 350 x=300 x=350 13 / 36

Lectures Sales - Dépendance non-validées Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 au début, x=200 H = r 1 [x] w 1 [x] r 2 [x] w 2 [x] c 2 a 1 BD P1 Rollback P2 Commit x = 200 x=300 x=350 Mise à jour w 2 [x] perdue (écrasée par l annulation a 1 ) Solution : Retarder le commit/rollback c 2 (après le a 1 ) READ UNCOMMITTED 13 / 36

Lectures Sales - Lecture non-validée Opérations de transfert d argent (50e de x vers y), et de calcul de somme (z = x + y) P1 : Transfert T 1 r 1 [x] w 1 [x] r 1 [y] w 1 [y] c 1 P2 : Somme T 2 r 2 [x] r 2 [y] w 2 [z] c 2 Au début, x=200, y=100, z=0 H = r 1 [x] w 1 [x] r 2 [x] r 2 [y] w 2 [z] c 2 r 1 [y] w 1 [y] c 1 BD P1 P2 x = 200 x=200 y = 100 z = 0 14 / 36

Lectures Sales - Lecture non-validée Opérations de transfert d argent (50e de x vers y), et de calcul de somme (z = x + y) P1 : Transfert T 1 r 1 [x] w 1 [x] r 1 [y] w 1 [y] c 1 P2 : Somme T 2 r 2 [x] r 2 [y] w 2 [z] c 2 Au début, x=200, y=100, z=0 H = r 1 [x] w 1 [x] r 2 [x] r 2 [y] w 2 [z] c 2 r 1 [y] w 1 [y] c 1 BD P1 P2 x = 150 x=150 y = 100 z = 0 14 / 36

Lectures Sales - Lecture non-validée Opérations de transfert d argent (50e de x vers y), et de calcul de somme (z = x + y) P1 : Transfert T 1 r 1 [x] w 1 [x] r 1 [y] w 1 [y] c 1 P2 : Somme T 2 r 2 [x] r 2 [y] w 2 [z] c 2 Au début, x=200, y=100, z=0 H = r 1 [x] w 1 [x] r 2 [x] r 2 [y] w 2 [z] c 2 r 1 [y] w 1 [y] c 1 BD P1 P2 x = 150 x=150 x=150 y = 100 y=100 z = 250 z=250 14 / 36

Lectures Sales - Lecture non-validée Opérations de transfert d argent (50e de x vers y), et de calcul de somme (z = x + y) P1 : Transfert T 1 r 1 [x] w 1 [x] r 1 [y] w 1 [y] c 1 P2 : Somme T 2 r 2 [x] r 2 [y] w 2 [z] c 2 Au début, x=200, y=100, z=0 H = r 1 [x] w 1 [x] r 2 [x] r 2 [y] w 2 [z] c 2 r 1 [y] w 1 [y] c 1 BD P1 P2 x = 150 x=150 x=150 y = 100 y=100 y=100 z = 250 z=250 Incohérence de lecture d une donnée modifiée mais non-validée ( lecture sale ) - w 1 [x] r 2 [x] Solution possible : retarder la lecture r 2 [x] après le commit c 1 READ COMMITTED Annulation en cascade (T 2 annulée si a 1 ) 14 / 36

Lectures Sales - Lecture non-validée Opérations de transfert d argent (50e de x vers y), et de calcul de somme (z = x + y) P1 : Transfert T 1 r 1 [x] w 1 [x] r 1 [y] w 1 [y] c 1 P2 : Somme T 2 r 2 [x] r 2 [y] w 2 [z] c 2 Au début, x=200, y=100, z=0 H = r 1 [x] w 1 [x] r 2 [x] r 2 [y] w 2 [z] c 2 r 1 [y] w 1 [y] c 1 BD P1 P2 x = 150 x=150 x=150 y = 150 y=150 y=100 z = 250 z=250 Incohérence de lecture d une donnée modifiée mais non-validée ( lecture sale ) - w 1 [x] r 2 [x] Solution possible : retarder la lecture r 2 [x] après le commit c 1 READ COMMITTED Annulation en cascade (T 2 annulée si a 1 ) 14 / 36

Écritures sales Concurrence Intro Pb MAJ Ctrl Isolation Algo Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 Au début, x=200 H = r 1 [x] r 2 [x] w 1 [x] w 2 [x] c 1 c 2 BD P1 P2 x = 200 x=200 x=200 15 / 36

Écritures sales Concurrence Intro Pb MAJ Ctrl Isolation Algo Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 Au début, x=200 H = r 1 [x] r 2 [x] w 1 [x] w 2 [x] c 1 c 2 BD P1 P2 x = 300 x=300 x=200 15 / 36

Écritures sales Concurrence Intro Pb MAJ Ctrl Isolation Algo Opérations de crédits (sur le compte x) P1 : Crédit(x, 100) T 1 r 1 [x] w 1 [x] c 1 P2 : Crédit(x, 50) T 2 r 2 [x] w 2 [x] c 2 Au début, x=200 H = r 1 [x] r 2 [x] w 1 [x] w 2 [x] c 1 c 2 BD P1 P2 x = 250 x=300 x=250 Mise à jour w 1 [x] perdue (écrasée par w 2 [x]), lecture r 1 [x] n est plus répétable après le w 2 [x] Solution : retarder l écriture w 2 [x] après commit/rollback c 1 REPEATABLE READ 15 / 36

Objets Fantômes Concurrence Intro Pb MAJ Ctrl Isolation Algo Opérations de sommes des comptes (x,y) et d ajout d un compte (z) pour une même personne P1 : Somme T 1 r 1 [x] r 1 [y] c 1 P2 : Création T 2 w 2 [z] c 2 H = r 1 [x] r 1 [y] w 2 [z] c 2 c 1 Pas de concurrence directe Concurrence logique (liste des comptes de la personne : x, y, z, à la fin de T 2 ) Le tuple z n existe pas au début de T 1 Solution : Isolation logique ou globale des données SERIALIZABLE 16 / 36

1 Concurrence d accès aux données Introduction et problématique Problèmes des Mises à jour Contrôle de concurrence Niveaux d isolation dans un SGBD Algorithmes de contrôle de concurrence 17 / 36

Réordonnancement des transactions Solution : Algorithmes de réordonnancement des opérations Contrainte de temps et d ordre à respecter Une opération déjà effectuée ne peut être déplacée La séquence d opération d une transaction doit être respectée La nouvelle histoire doit être équivalente Retarder les opérations causant les problèmes Objectif : un maximum de concurrence, donc un minimum de retards Idéal : Produire une histoire équivalente et sérialisable 18 / 36

Sérialisabilité Concurrence Intro Pb MAJ Ctrl Isolation Algo Exécution sérialisable H est sérialisable si elle est équivalente à une exécution en série quelconque des transactions. Les effets (lectures/écritures) de l histoire sont identiques à une exécution en série. Exemple : T 1 = crédit sur x ; T 2 = transfert de y vers x Série : H 1 = r 1 [x] w 1 [x] c 1 r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 Sérialisable : H 2 = r 1 [x] r 2 [y] w 1 [x] w 2 [y] r 2 [x] c 1 w 2 [x] c 2 19 / 36

Équivalence d histoires Equivalence de deux histoires 1 Les transactions sont identiques 2 La liste des conflits sont équivalentes 3 Le graphe de sérialisation est acyclique Conflits p i [x] et q j [y] sont en conflit i j, x=y (transactions différentes, même enregistrement) p i [x] q j [x] n a pas le même effet que q j [x] p i [x] Graphe de sérialisation Noeuds : transactions T i validées dans H Arcs : si conflits p i [x]-q j [x] arc T i T j 20 / 36

Équivalence d histoires : Exemple H 1 = r 1 [x] w 1 [x] c 1 r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 T 1 : r 1 [x] w 1 [x] c 1, T 2 : r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 Conflits : r 1 [x]-w 2 [x], w 1 [x]-r 2 [x], w 1 [x]-w 2 [x] H 2 = r 1 [x] r 2 [y] w 1 [x] w 2 [y] c 1 r 2 [x] w 2 [x] c 2 T 1 : r 1 [x] w 1 [x] c 1, T 2 : r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 Conflits : r 1 [x]-w 2 [x], w 1 [x]-r 2 [x], w 1 [x]-w 2 [x] H 3 = r 1 [x] r 2 [y] w 2 [y] r 2 [x] w 1 [x] c 1 w 2 [x] c 2 T 1 : r 1 [x] w 1 [x] c 1, T 2 : r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 Conflits : r 1 [x]-w 2 [x], r 2 [x]-w 1 [x], w 1 [x]-w 2 [x] H 4 = r 1 [x] w 2 [y] r 2 [y] w 1 [x] c 1 r 2 [x] w 2 [x] c 2 T 1 : r 1 [x] w 1 [x] c 1, T 2 : w 2 [y] r 2 [y] r 2 [x] w 2 [x] c 2 21 / 36

Équivalence d histoires : Exemple H 1 = r 1 [x] w 1 [x] c 1 r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 T 1 : r 1 [x] w 1 [x] c 1, T 2 : r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 Conflits : r 1 [x]-w 2 [x], w 1 [x]-r 2 [x], w 1 [x]-w 2 [x] H 2 = r 1 [x] r 2 [y] w 1 [x] w 2 [y] c 1 r 2 [x] w 2 [x] c 2 T 1 : r 1 [x] w 1 [x] c 1, T 2 : r 2 [y] w 2 [y] r 2 [x] w 2 [x] c 2 Conflits : r 1 [x]-w 2 [x], w 1 [x]-r 2 [x], w 1 [x]-w 2 [x] H 1 et H 2 sont équivalentes Graphe de sérialisation : T 1 T 2 H 1 est une exécution en série H 2 est sérialisable 21 / 36

1 Concurrence d accès aux données Introduction et problématique Problèmes des Mises à jour Contrôle de concurrence Niveaux d isolation dans un SGBD Algorithmes de contrôle de concurrence 22 / 36

Comment gérer le niveau de concurrence dans un SGBD? Définir le niveau d isolation du système SET TRANSACTION ISOLATION LEVEL < level > 23 / 36

Niveaux d isolation Concurrence Intro Pb MAJ Ctrl Isolation Algo 1 SERIALIZABLE Protection : lectures sales, lecture répétable, objets fantômes 2 REPEATABLE READ (lecture répétable) Les données lues ne sont pas modifiables par d autres Ne lit que des valeurs validées (pas de lecture sale) Protection : lectures sales, lecture répétable, objets fantômes 3 READ COMMITTED (lecture de valeurs validées) Ne lit que des valeurs validées Protection : lectures sales, lecture répétable, objets fantômes 4 READ UNCOMMITTED (lecture de valeurs non-validées) Protection : lectures sales, lecture répétable, objets fantômes Préférable pour transactions READ ONLY Annulations en cascade possibles 24 / 36

1 Concurrence d accès aux données Introduction et problématique Problèmes des Mises à jour Contrôle de concurrence Niveaux d isolation dans un SGBD Algorithmes de contrôle de concurrence 25 / 36

Verrouillage à deux phases Objectif : Retarder toutes les opérations conflictuelles Gestion de verrous au niveau de l ordonanceur Lecture : Verrou partagé (compatible avec d autres lectures) Ecriture : Verrou exclusif (incompatible avec les autres transactions) Verrou relâché après commit ou rollback Blocage des opérations en attente de verrous 26 / 36

Verrouillage à deux phases : Algorithme 1 Arrivée de l opération p i [x] à l ordonnanceur 2 La transaction T i est-elle en attente? Oui p i [x] est mis en attente 3 p i [x] est une opération de : Lecture Y a t-il un verrou exclusif sur x? (par T j ) Oui p i [x] est mise en attente Non Verrou Partagé sur x par T i, p i [x] est exécutée Écriture Y a t-il un verrou sur x? (par T j ) Oui p i [x] est mise en attente Non Verrou Exclusif sur x par T i, p i [x] est exécutée Commit ou Rollback Tous les verrous de T i sont relâchés On reprend les opérations en attente par ordre chronologique 27 / 36

Verrouillage à deux phases : Exemple H 1 : r 1 [x] r 2 [y] w 1 [y] c 1 w 2 [y] c 2 I Verrous Exécution En attente x y T 1 T 2 T 3 (1) rl 1 r 1 [x] (2) rl 1 rl 2 r 2 [y] (3) rl 1 rl 2 w 1 [y] (4) rl 1 rl 2 w 1 [y] c 1 (5) rl 1 wl 2 w 2 [y] w 1 [y] c 1 (6) rl 1 c 2 w 1 [y] c 1 (7) rl 1 wl 1 w 1 [y] c 1 (8) c 1 rl : read lock, verrou partagé (en lecture). wl : write lock, verrou exclusif (en écriture). 28 / 36

Verrouillage à deux phases : Effets + Plus d incohérences possibles - Retardement abusif des transactions concurrentielles - Modification d histoires sérialisables - Possibilité d interblocages (deadlock) 29 / 36

Verrouillage à deux phases : Interblocage T 1 : r 1 [x] w 1 [y] c 1 T 2 : w 2 [y] w 2 [x] c 2 Ordre de réception : r 1 [x] w 2 [y] w 2 [x] w 1 [y] T 1 obtient verrou pour r 1 [x], T 2 pour w 2 [y] w 2 [x] attend r 1 [x], w 1 [y] attend w 2 [y] interblocage de T 1 et de T 2 Solution : timeout, graphe d attente 30 / 36

Estampillage Concurrence Intro Pb MAJ Ctrl Isolation Algo Objectif : Ne rien retarder, valider si c est possible Donner une estampille aux transactions et aux données Estampilles ordonnées (temporel) T i e(t i ) Deux opérations en conflit doivent s exécuter suivant l ordre des estampilles Si p i [x] puis q j [x] e(t i ) < e(t j ) 31 / 36

Estampillage : Algorithme 1 Arrivée de l opération p i [x] à l ordonnanceur 2 Les paires d opérations conflictuelles s exécutent dans l ordre des transactions (de leurs estampilles) 3 Si p i [x] arrive après q j [x] et e(t i ) < e(t j ) p i [x] rejetée, ainsi que T i 4 Si p i [x] peut être exécutée (pas en retard) Exécutée réellement dès que les transactions conflictuelles (sur x ) sont validées 32 / 36

Estampillage : Exemple r 1 [x] w 2 [x] r 3 [x] r 2 [x] w 1 [x] c 1 c 2 c 3 e(t 1 ) < e(t 2 ) < e(t 3 ) 1 r 1 [x] acceptée 2 w 2 [x] conflit avec r 1 [x], test : 2 > 1 acceptée 3 r 3 [x] conflit avec w 2 [x], test : 3 > 2 acceptée 4 r 2 [x] aucun conflit acceptée 5 w 1 [x] conflit avec r 2 [x], test : 1 < 2 rejetée Exécution finale : r 1 [x] w 2 [x] r 3 [x] r 2 [x] a 1 c 2 c 3 33 / 36

Estampillage : Effets Concurrence Intro Pb MAJ Ctrl Isolation Algo + Exécution optimiste + Produit des exécutions sérialisables - Si beaucoup de conflits, beaucoup d annulations 34 / 36

Contrôle dans différents SGBD Oracle, MySQL (InnoDB) : Contrôle multi-version Plusieurs versions de chaque donnée Ordonnancement de type estampillage 1 version Transaction d écriture 1 donnée Dernière transaction de lecture une lecture n attend jamais! (dernière version respectant l ordre) une écriture nouvelle version ou annulation (si ne respecte pas l ordre) SQL Server (Microsoft), DB2 (IBM) : Au choix Optimiste : Multi-version Pessimiste : Verrouillage à deux phases 35 / 36

Démonstration Concurrence Intro Pb MAJ Ctrl Isolation Algo Exemple de concurrence sous MySQL Moteur InnoDB Deux consoles (deux transactions) Mode autocommit OFF 36 / 36