Partager via


Niveaux d'isolation basés sur les versions de lignes dans le moteur de base de données

Le Microsoft Moteur de base de données SQL Server introduit une nouvelle implémentation d'un niveau d'isolation de la transaction existant, le niveau de lecture validée, qui fournit une capture instantanée au niveau des instructions basée sur les versions de lignes. Le Moteur de base de données SQL Server introduit également un niveau d'isolation nouveau, la capture instantanée, qui fournit une capture instantanée au niveau des transactions également basée sur les versions de lignes.

Pour activer l'isolation de lecture validée utilisant les versions de lignes, affectez la valeur ON à l'option de base de données READ_COMMITTED_SNAPSHOT. Pour activer l'isolation de capture instantanée, affectez la valeur ON à l'option de base de données ALLOW_SNAPSHOT_ISOLATION. Quand l'une de ces options est activée pour une base de données, le Moteur de base de données gère des versions de chaque ligne modifiée. Quand une transaction modifie une ligne, une image de cette ligne avant modification est copiée dans une page de la banque des versions. La banque des versions est un ensemble de pages de données stockées dans tempdb. Si plusieurs transactions modifient une ligne, différentes versions de cette ligne sont reliées en une chaîne de versions. Les opérations de lecture utilisant la gestion des versions de lignes vont extraire la dernière version de chaque ligne qui a été validée au moment du lancement de la transaction ou de l'instruction.

Les applications qui ont été écrites pour SQL Server 2000 ou qui sont des nouveautés pour SQL Server implémentent l'isolation de lecture validée basée sur les versions de lignes en spécifiant le niveau d'isolation de la transaction validée lorsque l'option de base de données READ_COMMITTED_SNAPSHOT a la valeur ON. Toutes les opérations de lecture prennent les versions de lignes qui étaient validées au moment du lancement d'une instruction. Ce mécanisme fournit une capture instantanée des données basée sur les instructions.

Les applications développées pour SQL Server implémentent l'isolation de capture instantanée en spécifiant le niveau d'isolation de la transaction de capture instantanée lorsque l'option de base de données ALLOW_SNAPSHOT_ISOLATION a la valeur ON. Toutes les opérations de lecture d'une transaction présentant ce type d'isolation prennent les versions de lignes qui étaient validées au moment du lancement de la transaction. Ce mécanisme fournit une capture instantanée des données au niveau des transactions.

Pour les transactions qui utilisent un niveau d'isolation basé sur les versions de lignes, les opérations de lecture ne demandent pas de verrous partagés sur les données. Autrement dit, les programmes de lecture qui utilisent la gestion des versions de lignes ne bloquent pas les autres programmes de lecture ou d'écriture qui accèdent aux mêmes données. De même, les programmes d'écriture ne bloquent pas les programmes de lecture. En revanche, les programmes d'écriture se bloquent entre eux même s'ils utilisent des niveaux d'isolation basés sur les versions de lignes. Deux opérations d'écriture ne peuvent pas modifier simultanément les mêmes données.

Le tableau suivant décrit les rubriques qui fournissent plus d'informations sur les niveaux d'isolation basés sur les versions de lignes.

Rubrique

Description

Présentation des niveaux d'isolement basés sur le versioning de ligne

Décrit les concepts de la gestion des versions de lignes.

Choix des niveaux d'isolement selon le versioning de ligne

Décrit les avantages et les inconvénients de la gestion de versions de lignes et fournit des recommandations relatives aux scénarios les plus appropriés.

Activation des niveaux d'isolement selon le versioning de ligne

Décrit les options qui permettent de gérer les versions de lignes dans une base de données.

Utilisation de niveaux d'isolement basés sur la gestion de la version des lignes

Décrit les limites des niveaux d'isolation basés sur les versions de lignes.

Utilisation de la ressource de versioning de ligne

Décrit l'impact de la gestion des versions de lignes sur le système et présente les vues de gestion dynamique (DMVs) et les compteurs de performances qui renvoient des informations sur l'état des versions de lignes dans les bases de données et les transactions.