Cette page explique comment activer l'isolation de transaction dans les instantanés de base de données Microsoft SQL Server dans les tâches de réplication Cloud Data Fusion.
À propos des niveaux d'isolation
Pour capturer les modifications apportées aux tables sources d'une base de données SQL Server, la tâche de réplication utilise un connecteur Debezium. Lors de la phase d'instantané, Debezium acquiert des verrous en fonction du snapshot.isolation.mode
configuré.
Le tableau suivant compare les modes d'isolation compatibles avec les tâches de réplication.
Mode d'isolation | Serrures acquises | Cohérence des données |
---|---|---|
read_uncommitted |
Aucune | N° |
read_committed |
Verrouillers partagés sur un lot de lignes à la fois | Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans l'instantané initial et une fois dans la phase de diffusion. |
repeatabe_read (par défaut) |
Cadenas partagés sur toutes les lignes | Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans l'instantané initial et une fois dans la phase de diffusion. |
snapshot |
Aucune | Plein. |
exclusive |
Verrouillage exclusif sur toutes les tables | Plein. |
Pour en savoir plus sur les modes d'isolation, consultez Définir le niveau d'isolation de transaction.
Par défaut, le mode d'isolation d'instantané est repeatable_read
. Ce mode utilise des verrous partagés sur toutes les données lues pendant le processus de création d'instantanés. Cela empêche les autres transactions de modifier les lignes existantes et peut potentiellement autoriser l'insertion de nouveaux enregistrements (consultez la section Remonter le problème).
Nous vous recommandons d'activer la réplication avec isolation des instantanés si elle est déjà activée sur la base de données source, car elle garantit une cohérence complète des données sans verrouillage des tables. Si cette fonctionnalité n'est pas activée, découvrez l'impact des niveaux d'isolation basés sur la gestion des versions des lignes dans le moteur de base de données SQL Server avant de l'activer.
Activer l'isolation d'instantané dans une tâche de réplication
Activez l'isolation d'instantanés dans la base de données SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Remplacez
DATABASE_NAME
par le nom de la base de données SQL Server.Définissez l'argument d'exécution
snapshot.isolation.mode
sursnapshot
. Pour en savoir plus, consultez la section Transmettre un argument d'exécution à une tâche de réplication.
Étapes suivantes
- Apprenez-en plus sur la réplication.