FirebirdSQL logo

ISOLATION LEVEL

Le niveau d’isolement d’une transaction est une valeur qui détermine le niveau auquel une transaction est autorisée à avoir des données incohérentes, c’est-à-dire le degré d’isolement d’une transaction par rapport à une autre. Les modifications apportées par un opérateur seront visibles pour tous les opérateurs suivants s’exécutant dans la même transaction, quel que soit son niveau d’isolement. Les modifications apportées dans une autre transaction restent invisibles pour la transaction actuelle jusqu’à ce qu’elles soient confirmées. Le niveau d’isolement, et parfois d’autres attributs, déterminent comment une transaction est isolée.

La clause optionnelle ISOLATION LEVEL spécifie le niveau d’isolation de la transaction en cours d’exécution. C’est la caractéristique la plus importante d’une transaction et elle détermine son comportement par rapport aux autres transactions concurrentes.

Il existe trois niveaux d’isolation des transactions :

  • SNAPSHOT

  • SNAPSHOT TABLE STABILITY

  • READ COMMITTED révisé (NO RECORD_VERSION ou RECORD_VERSION ou READ CONSISTENCY)

Niveau d’isolation SNAPSHOT

Le niveau d’isolement SNAPSHOT (le niveau d’isolement par défaut) signifie que seules les modifications qui ont été validées au plus tard au moment où cette transaction a démarré sont visibles pour cette transaction. Les modifications confirmées par d’autres transactions concurrentes ne seront pas visibles dans cette transaction pendant son activité sans la relancer. Pour voir ces modifications, la transaction doit être fermée (confirmée ou annulée complètement mais pas annulée au point de sauvegarde) et la transaction doit être relancée.

Note

Les modifications apportées par les transactions autonomes ne seront pas non plus visibles dans le contexte de la transaction ("externe") qui a lancé ces transactions autonomes si elle s’exécute en mode SNAPSHOT.

Dans l’API Firebird, le mode d’isolation SNAPSHOT correspond à la constante isc_tpb_concurrency.