FORMATION D’INGÉNIEURS EN INFORMATIQUE FIIFO
UNIVERSITÉ PARIS SUD
IUT d’ORSAY et FACULTÉ des SCIENCES d’ORSAY
G.Ausseresse
Spécialisation Bases de données
FIIFO 582698532 édité le 18/04/2017 00:04:00
TRANSACTIONS
ET
ACCÈS CONCURRENTS
Page
I. INTRODUCTION ....................................................................................................................... 2
II. GESTION DES TRANSACTIONS............................................................................................. 3
1. Définitions. ............................................................................................................................... 3
2. Contrôle des transactions. ........................................................................................................ 3
III. GESTION DES ACCÈS CONCURRENTS ............................................................................ 5
1. Introduction .............................................................................................................................. 5
2. Intégrité des données ................................................................................................................ 5
3. Concurrence des données ......................................................................................................... 5
4. Consistance des données .......................................................................................................... 5
5. Consistance des données en lecture (read consistency) ........................................................... 5
IV. VERROUILLAGE DES DONNÉES....................................................................................... 7
1. Concepts relatifs au verrouillage .............................................................................................. 7
2. Verrouillage bloquant .............................................................................................................. 8
3. Modes d’activation de verrouillage.......................................................................................... 8
4. Différents types de verrouillage ............................................................................................. 10
V. RÉFÉRENCES........................................................................................................................... 14
582698532 Page 2 sur 14
L’un des objectifs d’un SGBD est de mettre à la disposition d’un grand nombre d’utilisateurs un
ensemble cohérent de données. En présence de ce grand nombre d’utilisateurs, une attention
particulière doit être apportée pour garantir la cohérence des données lors de leur manipulation
simultanée par différents utilisateurs. Cette cohérence est assurée à l’aide des concepts de
transaction et d’accès concurrents.
Ce cours est consacré à la présentation des concepts et mécanismes relatifs aux transactions et accès
concurrents.
Nous présentons d’abord les concepts et les techniques offerts par Oracle pour gérer les
transactions :définition de début et de fin de transaction, validation et annulation d’une transaction,
puis le découpage d’une transaction en sous-transactions.
Nous présentons ensuite la gestion des accès concurrents dans Oracle. Après avoir donné les
concepts de base relatifs aux accès concurrents, nous présentons en détail les différents modes et
types de verrouillage de données.
I. INTRODUCTION
582698532 Page 3 sur 14
1. Définitions.
Une transaction est une unité logique de traitements, regroupant un ensemble d’opérations
élémentaires (commandes SQL). Ces opérations doivent être exécutés entièrement, soit pas du tout,
permettant ainsi à la base de données de passer d’un état cohérent à un nouvel état cohérent.
Exemple :
Soient les deux commandes suivantes :
INSERT INTO ligne_com
VALUES (100, 1, 1001, 10) ;
et
UPDATE article
SET qtestock = qtestock 10
WHERE idarticle = 1001 ;
La première commande une nouvelle ligne de commande et la seconde met à jour l’état du stock
pour l’article commandé. Pour que la base de données reste dans un état cohérent, ces deux
commandes doivent être exécutées et validées. Si, pour une raison quelconque, la seconde
commande n’a pas pu être traitée, le système doit annuler la première.
Lorsque toutes les opérations constituant la transaction sont exécutées et deviennent effectives, nous
disons que la transaction est validée. Les modifications apportées par les opérations élémentaires
deviennent alors finitives. Dans le cas contraire au moins une opération n’a pu être exécutée
pour une raison quelconque (condition non vérifiée, accès impossible aux données, panne), nous
disons que la transaction est annulée. Les modifications apportées par toutes les opérations
élémentaires sont alors annulées et on revient à l’état qu’avait la base avant la transaction.
Dans le but d’assurer une souplesse dans la gestion des transactions, il est possible de découper une
longue transaction en sous-transactions à l’aide de repères permettant d’effectuer, en cas de besoin,
des annulations partielles de la transaction. Cette notion de sous-transaction permet d’effectuer un
découpage plus fin des unités de traitement.
2. Contrôle des transactions.
Le contrôle des transactions consiste à définir le début et la fin d’une transaction (validation ou
annulation) ainsi que son découpage éventuel en sous-transactions.
2.1. Début de transaction
II. GESTION DES TRANSACTIONS
582698532 Page 4 sur 14
Il n’existe pas de commande permettant de marquer explicitement le début d’une transaction. Ce
début est implicitement défini par la première commande SQL exécutée ou par la fin d’une
transaction précédente. Le début d’une application ou d’une session SQL constitue
automatiquement le début d’une transaction. De même, la fin d’une transaction (par validation ou
par annulation) marque le début d’une nouvelle transaction.
2.2. Fin de transaction
La fin d’une transaction peut être définie explicitement ou implicitement.
La fin explicite d’une transaction est alisée à l’aide des deux commandes COMMIT ou
ROLLBACK. La première valide las opérations élémentaires de la transaction et la seconde les
annule.
Les événements suivants constituent une fin implicite de transaction :
Exécution d’une commande de définition de données (CREATE, ALTER, RENAME et DROP) :
toutes les opérations exécutées depuis le début de la transaction sont validées.
Fin normale d’un programme ou d’une session avec déconnexion d’Oracle : la transaction est
validée.
Fin anormale d’un programme ou d’une session (sortie sans déconnexion d’Oracle) : la
transaction est annulée.
2.3. Découpage d’une transaction.
Il est possible, dans Oracle, d’effectuer un découpage d’un transaction en insérant des points de
repère (en anglais savepoints). A l’aide de ces points de repère, il est possible d’annuler un sous-
ensemble d’opérations d’une transaction à partir d’un point de repère.
La création d’un point de repère se fait à l’aide de la commande suivante :
SAVEPOINT point_de_repère ;
Pour annuler les opérations à partir d’un point de repère « point_repère », on utilise la commande
ROLLBACK en précisant le point de repère.
ROLLBACK TO [SAVEPOINT] point_repère ;
582698532 Page 5 sur 14
1. Introduction
L’une des fonctions du noyau d’un SGBD est d’assurer la gestion des accès concurrents dans les
environnements multi-utilisateurs. Selon la norme ANSI/ISO du langage SQL, la gestion des accès
concurrents consiste à assurer la sérialisation des transactions multiples accédant simultanément
aux mêmes données. Cette sérialisation consiste à s’assurer que l’exécution simultanée d’un
ensemble de transactions accédant aux mêmes données donne le même résultat que leur exécution
en série.
La gestion des accès concurrents est basé sur les concepts d’intégrité, de concurrence et de
consistance de données. Elle utilise essentiellement la technique de verrouillage de données.
Avant d’aborder les techniques utilisées dans Oracle pour assurer la gestion des accès concurrents,
nous allons d’abord présenter les concepts d’intégrité, de concurrence et de consistance des
données.
2. Intégrité des données
L’intégrité des données est assurée en respectant les différentes contraintes d’intégrité finies lors
de la création de la base de données. En particulier, cette intégrité doit être assurée suite à une mise
à jour de mêmes données par différents utilisateurs. La base de données doit passer d’un état
cohérent avant les mises à jour à un autre état cohérent après les mise à jour.
3. Concurrence des données
La concurrence de données consiste à assurer une coordination des accès concurrents de plusieurs
utilisateurs aux mêmes données. Plus le nombre d’utilisateurs pouvant accéder simultanément aux
mêmes données est grand, plus le degré de concurrence devient important.
4. Consistance des données
La consistance des données est assurée lorsque ces données restent inchangées jusqu’à la fin d’une
opération de mise à jour ou de lecture, c’est à dire que, lorsqu’un utilisateur utilise ces données en
lecture ou en mise à jour, elles doivent rester dans un état consistant (inchangé) jusqu’à la fin de
l’opération même si d’autres transactions essaient de la modifier.
5. Consistance des données en lecture (read consistency)
III. GESTION DES ACCÈS CONCURRENTS
1 / 14 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !