Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 05-06-2006 20:40:15

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

LA GESTION DES TRANSACTIONS

LA DÉFINITION D'UNE TRANSACTION

Une transaction est une opération simple.
Dans une banque un virement, un dépôt de chèque, un retrait sont des transactions.
En informatique, une transaction est la plus petite unité logique complète de traitement.
Une transaction est capable de modifier des données partagées.
Une transaction doit pouvoir être abandonnée.
Si le compte n'est pas créditeur, alors la transaction virement doit être abandonnée.
Quand un système transactionnel détermine qu'une transaction peut avoir lieu sans aucun problème, il valide la transaction. Ce qui signifie que les modifications aux données partagées deviennent permanentes.
Que la transaction soit validées ou abandonnée, elle constitue une transaction complète, peut importe s'il y a modification ou non.
La consultation de compte ne modifie pas les données et constitue une transaction.


LES PROPRIÉTÉS D'UNE TRANSACTION

ATOMICITÉ

Une transaction est une suite d'instructions qui s'exécutent totalement ou pas du tout.


CONSISTANCE

Une transaction réussie transforme les données partagées d'un état valide a un nouveau état valide. Si la transaction est abandonnée, il faut retrouver l'état valide initial.


ISOLATION / SÉRIALISIBILITÉ

Les modifications d'une transaction ne peuvent devenir visibles aux autres transactions que lorsqu'il y a validation des modifications. Par rapport aux autres transactions les modifications semblent avoir été fait d'un coup.

Ce qui implique que l'exécution de plusieurs transactions au même moment produisent le même effet que lorsqu'ils sont exécutés en série.


DURABILITÉ

Une fois que la transaction est validée, les modifications apportées aux données partagées survivront à la panne du SGBD.

L'Atomicité, la Consistance, l'Isolation et la Durabilité constituent les propriétés ACID.


LES VERROUS / LOCKS

Pour les Bases de Données qui supportent les niveaux d'isolations, le choix du type de verrouillage indique le niveau d'isolation avant la connexion à la Base de Données.

Dans une Base de Données Multi-Utilisateurs, les transactions des différents utilisateurs peuvent se chevaucher. Si ces transactions accèdent à des données communes, ils peuvent écraser mutuellement les modifications effectuées.

Pour éviter aux transactions concurrentes de s'interférer mutuellement et de compromettre l'intégrité de la Base, certains Système de Gestion de Bases de Données permettent de choisir le niveau d'isolation à la connexion. Les niveaux d'isolations sont définies par le SGBD, et spécifient le degré qu'ont certaines opérations dans une transaction de voir les modifications faites par d'autres opérations dans une transaction concurrente. Les niveaux d'isolations déterminent comment le SGBD isole ou verrouille les données accédées par un processus des autres processus.

Dans l'environnement de développement, il faut renseigner la valeur de Lock dans le DB Profile.

La valeur par défaut dépend des options choisis lors de l'installation du SGBD.

Quand une application PB se connecte à un SGBD qui supporte les verrous, il faut initialiser la propriété Lock de l'objet Transaction (par défaut SQLCA) dans un script avant le connexion.

SQLCA.Lock = "valeur"

La modification de la valeur de Lock après la connexion n'a aucun effet sur la connexion courante.


Les SGBDs auxquels s'appliquent les verrouillages supportés par PB sont: INFORMIX-OnLine, Microsoft SQL Server 6.x, ODBC, Sybase SQL Server System 1x.

DBMS    Lock values    Isolation levels
INFORMIX-OnLine    Dirty read    Dirty read
    Committed read    Committed read
    Repeatable read    Repeatable read
    Cursor stability    Cursor stability
Microsoft SQL Server 6.x    RU    Read uncommitted
    RC     Read committed
    RR    Repeatable read
    TS    Serializable
ODBC    RU    Read uncommitted
    RC     Read committed
    RR    Repeatable read
    TS    Serializable transactions
    TV    Transaction versioning
Sybase SQL Server System 1x    0    Read uncommitted
    1    Read committed
    3    Serializable transactions

LES NIVEAUX D'ISOLATIONS

Le Niveau d'Isolation 0 / Read Uncommitted (dirty reads)

Un Dirty Read à lieu quand une transaction modifie une ligne et une seconde transaction lit cette ligne avant que la première transaction ne valide. Si la première transaction abandonne la modification, la ligne lue par la seconde transaction devient invalide.

T1 modifie une donnée
    T2 peut lire la donnée modifiée (Dirty Read)
    T2 ne peut modifier la donnée modifiée par T1 et non validée car niveau d'isolation 0.

T2 ne peut modifier la donnée que si T1 finit par une validation ou par un abandon.
Les autres transactions peuvent toujours effectuer des Dirty Reads.

Le niveau d'isolation 0 interdit le rapatriement du Serveur des Verrous de Tables ou de Pages.


Le Niveau d'Isolation 1 / Read Committed

    Interdit les Dirty Reads en effectuant des Verrous Partagés sur les tables ou sur les Pages.


Le Niveau d'Isolation 2 / Repeatable Read

Non repeatable Read

T1 lit une ligne
    T2 modifie cette ligne
    T2 valide la ligne
T1 lit la même ligne qui sera différente

Fantôme

T1 lit un ensemble de lignes vérifiant une condition
    T2 modifie cet ensemble de lignes via Insert, Update, Delete.
T1 lit le même ensemble de lignes vérifiant la même condition qui sera différent


Le Niveau d'Isolation 3 / Serializable Transactions

    Interdit les Dirty Reads, les Non repeatable Reads et les Fantômes.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22