128
Introduction pratique aux bases de données relationnelles
soient respectées. Le compte a augmente de 100 unités (a+100), il en
est de même pour b (b+100), et le compte c diminue de 200 unités (c200). Par conséquent, le total des débits et crédits reste inchangé.
La comparaison des deux versions du journal LOG(b) du compte
b (Figures 4-7 et 4-9) révèle une différence fondamentale : selon la
figure 4-9, les deux opérations de lecture (TRX_2: READ) et d'écriture
(TRX_2: WRITE) doivent être exécutées en premier par TRX_2, avant
que TRX_1 prenne à son tour le contrôle du compte b pour le lire
(TRX_1: READ) et le mettre à jour (TRX_1: WRITE). Le second journal
LOG(b) donne lieu à un nouveau graphe de précédence qui ne contient
aucun arc orienté READ_WRITE ou WRITE_WRITE reliant les nœuds
TRX_2 et TRX_1. C'est donc un graphe acyclique. À leur terme, les
deux transactions comptables satisfont par conséquent les contraintes
d'intégrité.
Granularité des
objets à verrouiller
Dans de nombreuses applications de bases de données
caractérisées par un haut degré de concurrence des transactions, le
verrouillage des tables entières ou de toute la base de données est
inadmissible. C'est pourquoi nous devons définir des unités de
verrouillage de taille plus petite qui désignent par exemple une
section d'une base de données, une sous-table, un tuple ou simplement
une valeur de donnée. Dans cette optique, il est avantageux que la
taille des unités de verrouillage soit déterminée de manière à pouvoir
exploiter des dépendances hiérarchiques dans la gestion des verrous.
Par exemple, si une transaction verrouille un ensemble de tuples,
alors, pendant toute la durée du verrouillage, aucune autre transaction
ne peut bloquer entièrement les unités de verrouillage parentes telles
que les tables ou la base de données correspondante. Lorsqu'un objet
acquiert un verrou exclusif, la hiérarchie de verrouillage permet
d'évaluer automatiquement les objets parents et de les identifier.
Importance des
modes de
verrouillage
Outre le verrouillage hiérarchique, il existe d'autres modes de
verrouillage importants. La classification la plus simple consiste à
distinguer des verrous en lecture et en écriture. Un verrou en lecture
(shared lock, en anglais) accorde à une transaction le droit d'accès à
un objet en lecture seule. En revanche, si une transaction demande un
verrou en écriture (exclusive lock, en anglais), elle peut accéder à
l'objet verrouillé en lecture et en écriture.
Introduction pratique aux bases de données relationnelles
soient respectées. Le compte a augmente de 100 unités (a+100), il en
est de même pour b (b+100), et le compte c diminue de 200 unités (c200). Par conséquent, le total des débits et crédits reste inchangé.
La comparaison des deux versions du journal LOG(b) du compte
b (Figures 4-7 et 4-9) révèle une différence fondamentale : selon la
figure 4-9, les deux opérations de lecture (TRX_2: READ) et d'écriture
(TRX_2: WRITE) doivent être exécutées en premier par TRX_2, avant
que TRX_1 prenne à son tour le contrôle du compte b pour le lire
(TRX_1: READ) et le mettre à jour (TRX_1: WRITE). Le second journal
LOG(b) donne lieu à un nouveau graphe de précédence qui ne contient
aucun arc orienté READ_WRITE ou WRITE_WRITE reliant les nœuds
TRX_2 et TRX_1. C'est donc un graphe acyclique. À leur terme, les
deux transactions comptables satisfont par conséquent les contraintes
d'intégrité.
Granularité des
objets à verrouiller
Dans de nombreuses applications de bases de données
caractérisées par un haut degré de concurrence des transactions, le
verrouillage des tables entières ou de toute la base de données est
inadmissible. C'est pourquoi nous devons définir des unités de
verrouillage de taille plus petite qui désignent par exemple une
section d'une base de données, une sous-table, un tuple ou simplement
une valeur de donnée. Dans cette optique, il est avantageux que la
taille des unités de verrouillage soit déterminée de manière à pouvoir
exploiter des dépendances hiérarchiques dans la gestion des verrous.
Par exemple, si une transaction verrouille un ensemble de tuples,
alors, pendant toute la durée du verrouillage, aucune autre transaction
ne peut bloquer entièrement les unités de verrouillage parentes telles
que les tables ou la base de données correspondante. Lorsqu'un objet
acquiert un verrou exclusif, la hiérarchie de verrouillage permet
d'évaluer automatiquement les objets parents et de les identifier.
Importance des
modes de
verrouillage
Outre le verrouillage hiérarchique, il existe d'autres modes de
verrouillage importants. La classification la plus simple consiste à
distinguer des verrous en lecture et en écriture. Un verrou en lecture
(shared lock, en anglais) accorde à une transaction le droit d'accès à
un objet en lecture seule. En revanche, si une transaction demande un
verrou en écriture (exclusive lock, en anglais), elle peut accéder à
l'objet verrouillé en lecture et en écriture.
