Dialogue avec la base de données

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

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

Bases de Données relationnelles et leurs systèmes de Gestion

Olivier Mondet

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

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Le langage SQL (première partie) c Olivier Caron

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

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

CREATION WEB DYNAMIQUE

Bases de données et sites WEB

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

OpenPaaS Le réseau social d'entreprise

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

Administration des bases de données. Jean-Yves Antoine

TP Contraintes - Triggers

Mysql. Les requêtes préparées Prepared statements

Java DataBaseConnectivity

SQL Historique

AGRÉGATION «ÉCONOMIE ET GESTION»

Intégrité des données

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Encryptions, compression et partitionnement des données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Bases de données relationnelles

Le Langage SQL version Oracle

Implémentation des SGBD

Les bases de données

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Bases de données avancées

Compétences Business Objects

TP3 : Creation de tables 1 seance

Gestion des utilisateurs et de leurs droits

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

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Cours: Administration d'une Base de Données

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Création et Gestion des tables

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Introduction à JDBC. Accès aux bases de données en Java

Application web de gestion de comptes en banques

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Introduction au Système de Gestion de Base de Données et aux Base de Données

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

Chapitre 10. Architectures des systèmes de gestion de bases de données

PHP 5. La base de données MySql. A. Belaïd 1

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

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

Le Langage De Description De Données(LDD)

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

IFT3030 Base de données. Chapitre 1 Introduction

1. Base de données SQLite

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

A QUOI SERVENT LES BASES DE DONNÉES?

1 Position du problème

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Langage SQL : créer et interroger une base

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Pour les débutants. langage de définition des données

I4 : Bases de Données

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Auto-évaluation Oracle: cours de base

Cours de Base de Données Cours n.12

Intégrité sémantique dans les bases de données relationnelles

Java et les bases de données

FileMaker 13. Guide de référence SQL

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

Projet gestion d'objets dupliqués

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Corrigés détaillés des exercices

Raja Bases de données distribuées A Lire - Tutoriel

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Les BASES de DONNEES dans WampServer

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Base de données II Module 3b

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

CHAPITRE 1 ARCHITECTURE

Notion de base de données

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

I. MySQL : Serveur et SGBD

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Vincent Augusto

Synchronisation Mysql (Replication)

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

MySQL / SQL EXEMPLES

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de Données Réparties

Pratique et administration des systèmes

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Réplication des données

Transcription:

633-2.2 Dialogue avec la base de données 2. Transactions et verrous Cedric.Baudet@he-arc.ch Slide 1

Références Filière Bachelor of Science en informatique de gestion Domaine Technologies informatiques Module 633 Architectures distribuées Unité d enseignement 633-2.1 Applications réseaux et services applicatifs 633-2.2 Dialogue avec la base de données Slide 2

Objectifs Objectifs du module comprendre et mettre en œuvre les services applicatifs fondamentaux; développer, déployer et configurer des composants métiers sur un serveur d applications. Objectifs de l unité d enseignement «Dialogue avec la base de données» comprendre les différences entre l'architecture "serveur de fichiers" et "client/serveur"; maîtriser le principe du dialogue à sessions; comprendre la notion de concurrence; savoir manipuler des données à l'aide d'un langage hôte. Slide 3

Découpage de l unité d enseignement 1. Architecture client/serveur 2. Transactions et verrous 3. Manipulation des données avec un langage hôte Slide 4

Plan de la présentation 1 2 3 Transactions Norme ISO Oracle 5 Slide 5

Transaction = Concept fondamental Toute application manipulant un grand ensemble de données, et exploitées dans un environnement multi-utilisateurs se doit d'être transactionnelle. 1 Transactions Sans système transactionnel, la base de données risque d être incohérente Rappel des missions du SII!! Disponibilité de l'information Pérennité de l'information Intégrité de l'information Confidentialité de l'information Traçabilité des opérations Slide 6

Définition d'une transaction Une transaction doit vérifier les propriétés (A) Atomicité (C) Consistance (I) Isolation (D) Durabilité Moyen mnémotechnique ACID 1 Transactions Slide 7

ACID - Atomicité L'ensemble des opérations d'une transaction apparaît comme une seule opération atomique Soit toutes les opérations sont validées ou toutes annulées (tout ou rien) exemple : débit/crédit 1 Transactions Slide 8

ACID Consistance (cohérence) L'exécution de la transaction fait passer la base de données d'un état consistant à un autre état consistant ceci en accord avec l ensemble de la base de données et de ses contraintes. Un état incohérent ne doit pas être possible! 1 Transactions Slide 9

ACID Isolation Chaque transaction est indépendante des autres transactions concurrentes. Semblable à une exécution en série des transactions. On parle de «sérialisation» des transactions. Les concurrences sont parfaitement contrôlées 1 Transactions Slide 10

ACID Durabilité C'est la persistance des mises à jour d'une transaction validée. Les effets d'une transaction validée sont durables et permanents, quelques soient les problèmes logiciels ou matériels, notamment après la fin de la transaction. 1 Transactions Slide 11

Principales utilisations des transactions Traitement des opérations sémantiquement liées Doit garantir le "tout ou rien" Exemple : débit crédit, Soit toutes les opérations sont validées soit annulées. Gestion des concurrences Acquisition de verrous sur les enregistrements traités, empêchant une utilisation malencontreuse des données. 1 Transactions Reprise sur pannes Utilisation du système transactionnel pour la reconstitution d'un état cohérent de la base au redémarrage d'un système après une panne, quel quesoitletypedepanne. Slide 12

Exemple de transaction comptable, état initial Num Libellé Cpt débit Ecritures comptables Cpt crédit Montant Ecriture passée 12345 Bla bla 1010 2302 250.- 0. Compte 1010 ecriture libelle mouvement Solde.. 12340 Bla bla 1000.- Compte 2302 ecriture libelle mouvement Solde.. 2340 Bla bla 600.- Slide 13

Exemple de transaction comptable, 3 écritures 3. Mise à jour du grand livre Num Libellé Cpt débit Ecritures comptables Cpt crédit Montant Ecriture passée 12345 Bla bla 1010 2302 250.- 1. 1. écriture dans compte débité 2. écriture dans compte crédité Compte 1010 ecriture libelle mouvement Solde.. 12340 Bla bla 1000.- Compte 2302 ecriture libelle mouvement Solde.. 2340 Bla bla 600.- Slide 14

Exemple de transaction comptable, 3 écritures 3. Mise à jour du grand livre Num Libellé Cpt débit Ecritures comptables Cpt crédit Montant Ecriture passée 12345 Bla bla 1010 2302 250.- 1. 1. écriture dans compte débité 2. écriture dans compte crédité Compte 1010 ecriture libelle mouvement Solde.. 12340 Bla bla 1000.- 12345 Bla bla -250.- 750.- Compte 2302 ecriture libelle mouvement Solde.. 2340 Bla bla 600.- 12345 Bla bla 250.- 850.- Slide 15

Exemple de transaction comptable, avec panne 3. Mise à jour du grand livre Num Libellé Cpt débit Ecritures comptables Cpt crédit Montant Ecriture passée 12345 Bla bla 1010 2302 250.- 1. 1. écriture dans compte débité BING 2. écriture dans compte crédité Compte 1010 ecriture libelle mouvement Solde.. 12340 Bla bla 1000.- 12345 Bla bla -250.- 750.- Compte 2302 ecriture libelle mouvement Solde.. 2340 Bla bla 600.- Slide 16

Instructions de la transaction comptable L écriture comptable complète nécessite 3 instructions SQL INSERT INTO compte_1010( ) VALUES( ); INSERT INTO compte_2302( ) VALUES( ); UPDATE ecritures_comptables SET ecriture_passee = 1 WHERE num=12345; 1 Transactions Les 3 instructions constituent un ordre atomique, elles doivent être validées (ou annulées) ensemble! Slide 17

Commandes SQL pour les transactions COMMIT Validation de la transaction ROLLBACK Annulation de la transaction COMMIT ; 1 Etat cohérent de la base de données i Etat cohérent de la base de données j Transactions ROLLBACK ; Slide 18

Instructions de la transaction comptable Les trois instructions sont une seule transaction INSERT INTO compte_1010( ) VALUES( ); Transaction INSERT INTO compte_2302( ) VALUES( ); UPDATE ecritures_comptables SET ecriture_passee = 1 WHERE num=12345; COMMIT ; 1 Transactions C est à la fin de la transaction que la base de données est cohérente. A l intérieur de la transaction elle ne l est pas!! Slide 19

Début d'une transaction Il n'y a pas de commande pour définir explicitement le début d'une transaction sous Oracle. Le début d'une transaction est défini : par le début de la session; par la fin de la transaction précédente. 1 Transactions Slide 20

Fin d'une transaction L'exécution d'un COMMIT ou d'un ROLLBACK définit le point de synchronisation où la base de données est dans un état consistant. En fin de session, un COMMIT est automatiquement exécuté si la déconnexion se fait sans erreurs, sinon un ROLLBACK est exécuté. 1 Transactions Slide 21

Les schémas d Oracle <> CREATE SCHEMA Un schéma est un ensemble d objets Oracle (tables, vues, triggers, etc ) regroupés sous un même nom. Sous Oracle la notion de schéma est équivalente à la notion d utilisateur. Pour les puristes, un utilisateur n est pas un schéma mais possède un schéma avec son nom CREATE USER 1 Transactions Attention, la commande CREATE SCHEMA n a pas du tout la même utilité Slide 22

Création de plusieurs objets dans une transaction Oracle propose l instruction CREATE SCHEMA pour créer plusieurs objets (LDD) dans une transaction. Si l ensemble des instructions contenues dans CREATE SCHEMA sont correctes, elles seront toutes validées, sinon elles seront toutes annulées. L instruction CREATE SCHEMA ne peut comporter que des créations de tables, de vues et d affectation de privilèges sur des objets. 1 Transactions Slide 23

Création de plusieurs objets dans une transaction Syntaxe CREATE SCHEMA AUTHORIZATION schema [ create_table_statement create_view_statement grant_statement ]...; 1 Transactions Slide 24

Questions? 1 Transactions Slide 25

Travaux pratiques Série 2, exercice 1 Sur Cyberlearn 1 Transactions Slide 26

Plan de la présentation 1 2 3 Transactions Norme ISO Oracle Slide 27

Gestion des concurrences L accès concurrent par plusieurs sessions à un objet partagé doit impérativement être contrôlé. Si le système ne gère pas la concurrence des accès, les données risquent de devenir incohérentes Missions du SII quels sont les problèmes potentiels? 1 Transactions Slide 28

Terminologie des problématiques Lecture inconsistante (dirty read) La lecture de données est fausse!! Lecture non répétitive (nonrepeatable read) Deux lectures successives de la même donnée retournent des valeurs différentes Lecture de lignes fantômes (phantom) Une lecture retourne une ligne qui n existe pas!! 1 Transactions Slide 29

Exemple de lecture inconsistante T1 T2 UPDATE enr SELECT enr ROLLBACK 1 Transactions Slide 30

Exemple de lecture non répétitive T1 T2 SELECT enr1 (consultation) SELECT enr2 (consultation) SELECT enr1 (pour mise a jour) UPDATE enr1 COMMIT; 1 Transactions Slide 31

Exemple de lignes fantômes T1 T2 SELECT enr1 (pour stat) SELECT enr2 Sommation SELECT enr3 Sommation DELETE enr3 1 Transactions SELECT enr5 Sommation SELECT enr6 Sommation Slide 32

Solution pour gérer correctement la concurrence Utiliser des verrous! 1 Transactions Slide 33

Verrous Protection active des données pendant la transaction, par acquisition de verrous sur les enregistrements traités. Dans la norme, les verrous sont automatiquement réalisés par le système, donc le programmeur ne doit pas bloquer et débloquer lui-même les enregistrements. C est une bonne nouvelle non?!? 1 Transactions Slide 34

Eléments clés des étudiants Une transaction doit respecter ACID! Si on est en multi-utilisateur et qu il n y a pas de transaction, il y a risque d incohérence. Selon la norme, le développeur n a rien à faire 1 Une transaction se termine soit par un commit, soit par un rollback. Transactions Slide 35

Plan de la présentation 1 2 3 Transactions Norme ISO Oracle Slide 36

Typologie des verrous SQL2 Selon la norme Verrou partagé, shared lock utilisé pour lire 1 ou n enregistrements Verrou exclusif, exclusif lock utilisé pour modifier 1 ou n enregistrements Verrou global, global lock utilisé pour bloquer les enregistrements d une table http://www.iso.org/iso/fr/iso_catalogue/catalogue_tc/ catalogue_detail.htm?csnumber=38646 Slide 37

Verrou partagé (shared lock) Il est utilisé pour lire un enregistrement et est placé par un SELECT. Il permet un autre accès en verrou partagé sur le même enregistrement, mais pas d'acquérir un autre type de verrou. Oracle ne pose pas de verrous partagés par défaut!!! Slide 38

Verrou exclusif (exclusif lock) Il est utilisé pour modifier un enregistrement et est placé par les commandes INSERT,UPDATE et DELETE. Une fois le verrou posé, il interdit tout autre accès à l'enregistrement. Pas même en lecture. (verrou partagé) Slide 39

Verrou global (global lock) Il est utilisé pour modifier la structure d une table par les instruction CREATE, ALTER et DROP. Bloque la table entière!! L'ensemble de la table n'est plus accessible pour les autres transactions. Slide 40

Résumé des verrous implicites SQL 2 La norme SQL 2 spécifie les verrous implicites suivants: l instruction SELECT pose implicitement un verrou partagé; les instructions INSERT, UPDATE et DELETE posent implicitement un verrou exclusif. Le programmeur ne doit en principe pas verrouiller manuellement les tuples. C est néanmoins possible, particulièrement avec un verrou global. Slide 41

Relâchement des verrous C est les instructions COMMIT et ROLLBACK qui relâchent les verrous donc la fin de la transaction! L ensemble des verrous posé par les instructions d une transaction sont relâchés à la fin de la transaction. Il n existe pas d instruction explicite UNLOCK!! Slide 42

Des solutions à nos problèmes? Alors ces verrous donnent des solutions à nos problèmes?!? Lecture inconsistante Lecture non répétitive Lignes fantômes Slide 43

Solution de la lecture inconsistante T1 Verrou exclusif sur enr T2 En attente du relâchement du verrou UPDATE enr SELECT enr Verrou exclusif sur enr SELECT enr ROLLBACK Slide 44

Solution de la lecture non répétitive T1 Verrou partagé T2 SELECT enr1 (consultation) SELECT enr2 (consultation) Verrou partagé Attente verrou exclusif sur le verrou partagé UPDATE enr1 SELECT enr1 (pour mise a jour) UPDATE enr1 COMMIT; Verrou exclusif Verrou exclusif UPDATE enr1 COMMIT; Slide 45

Solution évitant les lignes fantômes T1 T2 SELECT enr1 (pour stat) SELECT enr2 Sommation SELECT enr3 Sommation SELECT enr5 Sommation SELECT enr6 Sommation COMMIT Attente verrou exclusif DELETE enr3 DELETE enr3 Slide 46

Problématiques engendrés par les verrous La pose de verrous résout les problèmes décrits, mais ont deux conséquences négatives: sérialisation des transactions provoque une attente pour la libération de la ressource; La contention (maintient) engendre une dégradation de performance globale du système. Le non possibilité de poser un verrou exclusif (pour modif) se nomme Famine ou live lock. le verrouillage de plusieurs ressources peut être bloquant Inter-verrouillage bloquant ou dead lock Slide 47

Dead lock T1 Verrou sur T1 UPDATE table 1 T2 Verrou sur T2 Attente sur verrou pour UPDATE table2; UPDATE table 2 UPDATE table 2 Attente sur verrou pour UPDATE table1; UPDATE table 1 Slide 48

Traitement du Dead lock Le Dead lock doit être détecté par le SGBD, car il ne peut l'être par le développeur. Sur détection du blocage, le système doit avertir l'utilisateur de la non possibilité de terminer la transaction. Le comportement du système en cas de dead lock est dépendant du produit utilisé. Annulation d'une transaction ou des deux transactions Message à l'utilisateur... Slide 49

Verrous explicites Certains cas de figures (dead lock) peuvent être évités par l utilisation de verrous explicites. La pose de verrous globaux risque d augmenter la contention sur les données et de provoque une forte dégradation des performances. Slide 50

Questions? Slide 51

Caractéristiques d'une transaction Une transaction est bornée Début implicite Fin explicite (COMMIT, ROLLBACK) Le mode de la transaction détermine les opérations possibles READ ONLY READ WRITE Niveau d'isolation de la transaction Slide 52

Niveaux d'isolation Le niveau d'isolation indique le comportement de la transaction par rapport aux autres transactions. Plus le niveau d'isolation est faible, plus les autres transactions peuvent agir sur les données concernées par la première. Slide 53

Niveaux d'isolation et comportement des verrous par défaut Selon la norme! READ UNCOMITED Les verrous ne sont pas maintenus entre les instructions. aucune isolation, toutes les erreurs possibles. READ COMMITTED Verrou exclusif maintenus jusqu'à la fin de la transaction. Les verrous partagés ne sont pas maintenus. prévient l'apparition de l'erreur de lecture inconsistante, autres erreurs possibles Slide 54

Niveaux d'isolations et comportement des verrous par défaut REPETABLE READ Les verrous partagés sont maintenus. Les verrous exclusifs ne sont pas maintenus erreur de lecture inconsistante et non répétitive impossible, erreur de lignes fantômes possibles. SERIALIZABLE Tous les verrous sont maintenus pas de problème possible Slide 55

Erreurs possibles avec niveaux d isolation Niveau d'isolation Lecture inconsistante Lecture non répétitive Ligne fantôme Read Possible Possible Possible uncomitted Read Impossible Possible Possible committed Repeatable Impossible Impossible Possible read Serializable impossible Impossible Impossible Slide 56

Mode de transaction sécurisé Mode : Read/Write Niveau : Serializable Toutes opérations en toute sécurité, mais performances diminuées. Possibilité d'abaisser explicitement le niveau d'isolation. Performance accrue Danger, problèmes possibles Slide 57

Modification des caractéristiques Au début de la transaction, on peut modifier ses caractéristiques, soit son mode ou son niveau d isolation. Exemple SET TRANSACTION READ ONLY ISOLATION LEVEL READ UNCOMMITTED ; Les nouvelles caractéristiques seront actives lors de toute la transaction et les valeurs par défaut seront reprises en fin de transaction. Slide 58

Contraintes et transaction Les contraintes déclaratives du schéma seront contrôlées soit après chaque ordre SQL soit en fin de transaction, à l exécution du COMMIT. Une contrainte peut donc être dans deux «états» IMMEDIATE Contrôlée après chaque ordre SQL DEFERRED Contrôlée en fin de transaction, à l exécution du COMMIT Slide 59

Déclaration de la contraintes Lors de sa déclaration, on donne à la contraintes deux attributs Si elle est «deferrable», Son état par défaut Syntaxe : <constraint_attributes> ::= [NOT]DEFERRABLE [INITIALLY DEFERRED INITIALLY IMMEDIATE] Exemple CONSTRAINT pk_table PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE ; Slide 60

Modification de la contrainte Au début d une transaction, on peut modifier l état de la contraintes si elle est définie DEFERRABLE. Syntaxe SET CONSTRAINTS {liste_contrainte ALL} {DEFERRED IMMEDIATE} Exemple SET CONSTRAINT pk_table DEFERRED ; L état défini par la clause INITIALY sera repris en fin de transaction (COMMIT) Slide 61

Questions? Slide 62

Eléments clés des étudiants Slide 63

Plan de la présentation 1 2 3 Transactions Norme ISO Oracle Slide 64

Gestion de concurrence par Oracle Les niveaux supportés sont Read committed Serializable Pour des raisons de performance, le niveau d isolation par défaut d Oracle est Read Committed. La transaction peut-être mise serializable SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ; Slide 65

Verrouillage avec Oracle Pour préserver la cohérence des données, Oracle implémente la notion de verrou. Verrouillage implicite Le moteur effectue automatiquement des verrous prédéfinis. Verrouillage explicite Contrôle manuel des mécanismes de verrouillages. Au niveau de la transaction Au niveau de l'instance (DBA) Slide 66

Verrouillage des données Oracle ne suit pas vraiment la norme mot à mot Ce n est pas le seul. Beaucoup utilisé : Mode lignes partagées (Row share) Mode lignes exclusives (Row exclusive) Mode table exclusive (Exclusive) Moins utilisé : Mode table partagée (Share) Mode partage exclusif de ligne (Share row exclusive) Slide 67

Verrouillage des données en mode read committed sur Oracle SELECT pas de verrou INSERT, UPDATE et DELEVE Les lignes manipulées par une commande d'écriture seront verrouillées, mode lignes exclusives (Row Exclusive), pendant la transaction. LDD Mode table exclusive (Exclusive) Slide 68

La lecture inconsistante sur Oracle T1 Verrou exclusif sur enr T2 Pas de verrou pas d attente! UPDATE enr SELECT enr ROLLBACK Slide 69

Verrouillage partagé de lignes Sous Oracle, l'instruction SELECT associé au niveau d'isolation READ COMMITTED ne garde pas les verrous. Lecture inconsistante possible!!! Dans ce mode d'isolation la clause FOR UPDATE permet de poser des verrous de lignes partagées (Row share) sur tous les tuples qui satisfont la clause WHERE. SELECT liste_selection FROM nom_table WHERE condition FOR UPDATE ; Slide 70

La lecture inconsistante sur Oracle T1 Verrou exclusif sur enr T2 En attente du relâchement du verrou UPDATE enr SELECT enr FOR UPDATE SELECT enr FOR UPDATE ROLLBACK Slide 71

La lecture inconsistante sur Oracle ou plus intelligent T1 T2 SELECT enr FOR UPDATE En attente! SELECT enr FOR UPDATE Ou UPDATE ROLLBACK Slide 72

Lecture consistante avec transaction en lecture seule De part le niveau d isolation par défaut, l'instruction SELECT ne pose pas de verrous implicites :!! Lecture inconsistante Possibilité de transaction en lecture seule SET TRANSACTION READ ONLY C est une lecture consistante sans verrous A utiliser pour les états et les calculs puisque cette transaction ne mettra pas les autres en attente. Slide 73

Lecture non répétitive sur Oracle T1 Pas de verrou T2 SELECT enr1 (consultation) SELECT enr2 (consultation) Pas de verrou Verrou exclusif UPDATE enr1 SELECT enr1 (pour mise a jour) Verrou exclusif Pas d attente! COMMIT; UPDATE enr1 COMMIT; Slide 74

Lecture non répétitive sur Oracle T1 Verrou partagé T2 SELECT enr1 FOR UPDATE (consultation) SELECT enr1 FOR UPDATE (pour mise a jour) UPDATE enr1 COMMIT; Verrou partagé SELECT enr2 FOR UPDATE (consultation) Verrou exclusif Attente verrou exclusif sur le verrou partagé UPDATE enr1 Verrou exclusif UPDATE enr1 COMMIT; Slide 75

Lignes fantômes sur Oracle T1 SELECT enr1 (pour stat) SELECT enr2 Sommation SELECT enr3 Sommation SELECT enr5 Sommation SELECT enr6 Sommation COMMIT Pas de verrou T2 Attente verrou exclusif DELETE enr3 COMMIT; Slide 76

Lignes fantômes sur Oracle T1 Verrous partagés T2 SELECT enr1 FOR UPDATE (pour stat) SELECT enr2 FOR UPDATE Sommation SELECT enr3 FOR UPDATE Sommation SELECT enr5 FOR UPDATE Sommation SELECT enr6 FOR UPDATE Sommation COMMIT Attente verrou exclusif DELETE enr3 DELETE enr3 Slide 77

Verrouillage explicite Avec Oracle, seul le verrouillage explicite sur une table pour la transaction est possible. Tous les tuples de la tables seront verrouillés Syntaxe : LOCK TABLE nom_table IN mode_verrouilage MODE ; Slide 78

Verrouillage explicite Le SELECT FOR UPDATE est un verrouillage explicite. Il en existe d autres types. Le verrouillage explicite sur une table pour la transaction est possible. Tous les tuples de la tables seront verrouillés Syntaxe : LOCK TABLE nom_table IN mode_verrouillage MODE ; Mode_verrouillage [ROW SHARE ROW EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE] Slide 79

Verrouillage explicite ROW SHARE, RS Idem SELECT FOR UPDATE mais sur toute une table. ROW EXCLUSIVE, RX Idem INSERT, UPDATE et DELETE. SHARE, S Permet aux autres transactions exclusivement les SELECT, SELECT FOR UPDATE et les LOCK TABLE IN SHARE MODE et SHARE ROW MODE. SHARE ROW EXCLUSIVE, SRX Permet aux autres transactions exclusivement les SELECT, SELECT FOR UPDATE et les LOCK TABLE IN SHARE MODE. EXCLUSIVE, X Permet uniquement la lecture par les autres transactions. Slide 80

Récapitulation verrou sous Oracle Instruction Verrou Comptabilité RS RX S SRX X SELECT Aucun O O O O O INSERT RX O O N N N UPDATE RX O* O* N N N DELETE RX O* O* N N N SELECT FOR UPDATE RS O* O* O* O* N O* : Oui sauf si verrou incompatible attente Source cba-dernière mise : DEMAL, à jour : 07.03.2013 P. SQL2-SQL3 LOCK TABLE IN ROW SHARE MODE LOCK TABLE IN ROW EXCLUSIVE MODE LOCK TABLE IN SHARE MODE LOCK TABLE IN SHARE ROW EXCLUSIVE MODE LOCK TABLE IN EXCLUSIVE MODE RS O O O O N RX O O N N N S O N O N N SRX O N N N N X N N N N N Slide 81 81

Traitement du Dead Lock Le SGBD Oracle détecte bien les Dead Lock et son comportement est le suivant: 1. Détection du verrouillage bloquant 2. Avertissement par message de la transaction qui s est faite bloquée. ORA-00060: deadlock detected while waiting for resource 3. Le SGBD ne fait pas de ROLLBACK!! C est au client d annuler lui même la transaction. Ce comportement est très bien adapté au mode client-serveur, puisque il est aisé de réessayer la transaction une fois que l autre transaction aura relâché ses verrous. Slide 82

Verrouillage du dictionnaire Chaque instruction est une transaction. Chaque instruction termine la transaction en cours.!! Attention aux transactions comportant des instructions du LMD. Les verrous sur le dictionnaire sont implicites et peuvent êtres posés dans deux modes: Exclusif Suppression, modification d'une structure de table. Partagé Création de tables, vues, procédures et synonymes. Slide 83

Contraintes et transactions sur Oracle Les contraintes du schéma peuvent être contrôlées selon la norme. IMMEDIATE Contrôlée après chaque ordre SQL DEFERRED Contrôlée en fin de transaction, à l exécution du COMMIT Commande en début de transaction SET CONSTRAINTS {liste_contrainte ALL} {DEFERRED IMMEDIATE} ; Slide 84

Questions? Slide 85

Quizz 1 En read committed sur Oracle T1 UPDATE ELEVES SET nom = 'Mistelli' WHERE matricule = '32928'; T2 SELECT * FROM ELEVES WHERE matricule = 32928; COMMIT; Slide 86

Quizz 1 En read committed sur Oracle Quelle est la valeur que voit l utilisateur de T2? SELECT * FROM ELEVES WHERE matricule = 32928; 56% A. 'Mistelli' B. La T2 est en attente 17% 28% C. 'La valeur avant Mistelli' 'Mistelli' La T2 est en attente 'La valeur avant Mistelli' Slide 87

Quizz 2 Sur Oracle T1 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SELECT * FROM ELEVES WHERE matricule = '32928'; T2 UPDATE ELEVES SET nom = 'Baudet' WHERE ELE_MATRICULE = '32928'; COMMIT; SELECT * FROM ELEVES WHERE matricule = '32928'; Slide 88

Quizz 2 Sur Oracle Quelle est la valeur sur T1 dans le dernier SELECT? 53% A. La T1 est en attente 32% B. Baudet 16% C. La valeur avant Baudet La T1 est en attente Baudet La valeur avant Baudet Slide 89

Quizz 3 Sur Oracle T1 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SELECT * FROM ELEVES WHERE matricule = '32928'; T2 UPDATE ELEVES SET nom = 'Baudet' WHERE ELE_MATRICULE = '32928'; COMMIT; SELECT * FROM ELEVES WHERE matricule = '32928'; ROLLBACK; SELECT * FROM ELEVES WHERE matricule = '32928'; Slide 90

Quizz 3 Sur Oracle Quelle est la valeur sur T1 dans le dernier SELECT? 68% A. La T1 est en attente 32% B. Baudet C. La valeur avant Baudet La T1 est en attente 0% Baudet La valeur avant Baudet Slide 91

Eléments clés des étudiants Slide 92

Travaux pratiques Série 2, exercice 2 Sur Cyberlearn Slide 93