Auf dieser Seite wird beschrieben, wie die Transaktionsisolation in Microsoft SQL Server-Datenbank-Snapshots in Cloud Data Fusion-Replikationsjobs aktiviert wird.
Isolationsstufen
Zum Erfassen von Änderungen in den Quelltabellen in einer SQL Server-Datenbank verwendet der Replikationsjob einen Debezium-Connector. Während der Snapshot-Phase erhält Debezium Sperren gemäß der konfigurierten snapshot.isolation.mode
.
In der folgenden Tabelle werden die unterstützten Isolationsmodi für Replikationsjobs verglichen.
Isolierungsmodus | Erhaltene Schlösser | Datenkonsistenz |
---|---|---|
read_uncommitted |
– | Nein. |
read_committed |
Freigegebene Sperren für einen Batch von Zeilen gleichzeitig | Teilweise. Ein hinzugefügter Eintrag kann zweimal angezeigt werden: einmal im ersten Snapshot und einmal in der Streamingphase. |
repeatabe_read (Standard) |
Gemeinsame Sperren in allen Zeilen | Teilweise. Ein hinzugefügter Eintrag kann zweimal angezeigt werden: einmal im ersten Snapshot und einmal in der Streamingphase. |
snapshot |
– | Voll. |
exclusive |
Exklusive Sperre für alle Tabellen | Voll. |
Weitere Informationen zu Isolationsmodi finden Sie unter Transaktionsisolationsebene festlegen.
Standardmäßig ist der Snapshot-Isolationsmodus repeatable_read
. In diesem Modus werden gemeinsame Sperren aller Daten angewendet, die während des Snapshot-Prozesses gelesen werden. Sie verhindert, dass andere Transaktionen die vorhandenen Zeilen ändern, und kann das Einfügen neuer Datensätze zulassen (siehe Eskalierung von Sperren).
Die Replikation mit Snapshot-Isolation wird empfohlen, wenn sie bereits in der Quelldatenbank aktiviert ist, da sie vollständige Datenkonsistenz ohne Sperren der Tabellen bietet. Ist dies nicht der Fall, informieren Sie sich über die Auswirkungen der zeilenbasierten Isolationsebenen in der SQL Server-Datenbank-Engine, bevor Sie sie aktivieren.
Snapshot-Isolierung in einem Replikationsjob aktivieren
Aktivieren Sie die Snapshot-Isolierung in der SQL Server-Datenbank:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Ersetzen Sie
DATABASE_NAME
durch den Namen der SQL Server-Datenbank.Legen Sie das Laufzeitargument
snapshot.isolation.mode
aufsnapshot
fest. Weitere Informationen finden Sie unter Laufzeitargument an einen Replikationsjob übergeben.