Transaktionen in Warehouse-Tabellen in Microsoft Fabric
Gilt für:✅ SQL-Analyseendpunkt und Warehouse in Microsoft Fabric
Ähnlich wie in SQL Server ermöglichen Transaktionen die Steuerung des Commits oder Rollbacks von Lese- und Schreibabfragen.
Sie können Daten, die in Tabellen in einem Warehouse gespeichert sind, mithilfe von Transaktionen ändern, um Änderungen zu gruppieren.
- Beispielsweise können Sie Einfügungen in mehrere Tabellen committen oder in keine der Tabellen, wenn ein Fehler auftritt. Wenn Sie Details zu einer Bestellung ändern, die sich auf drei Tabellen auswirkt, können Sie diese Änderungen in einer einzelnen Transaktion gruppieren. Wenn diese Tabellen abgefragt werden, weisen sie somit entweder alle die Änderungen auf oder keine von ihnen. Transaktionen sind eine gängige Praxis, wenn Sie sicherstellen müssen, dass Ihre Daten über mehrere Tabellen hinweg konsistent sind.
Transaktionsfunktionen
Dieselben Transaktionsfunktionen werden im SQL-Analyseendpunkt in Microsoft Fabric unterstützt, jedoch für schreibgeschützte Abfragen.
Transaktionen können auch für sequenzielle SELECT-Anweisungen verwendet werden, um sicherzustellen, dass alle beteiligten Tabellen Daten vom gleichen Zeitpunkt aufweisen. Wenn eine Tabelle beispielsweise neue Zeilen enthält, die von einer anderen Transaktion hinzugefügt wurden, wirken sich die neuen Zeilen nicht auf die SELECT-Abfragen innerhalb einer offenen Transaktion aus.
Wichtig
In Microsoft Fabric wird nur die Momentaufnahme-Isolationsstufe unterstützt. Wenn Sie die Isolationsstufe über T-SQL ändern, wird die Änderung zum Zeitpunkt der Abfrageausführung ignoriert und Momentaufnahmeisolation angewendet.
Unterstützung von datenbankübergreifenden Abfragetransaktionen
Warehouse in Microsoft Fabric unterstützt Transaktionen über Datenbanken im selben Arbeitsbereich, einschließlich des Lesens aus dem SQL-Analyseendpunkt des Lakehouse. Jedes Lakehouse hat einen schreibgeschützten SQL-Analyseendpunkt. Jeder Arbeitsbereich kann mehr als ein Lakehouse haben.
DDL-Unterstützung in Transaktionen
Warehouse in Microsoft Fabric unterstützt DDL-Anweisungen wie CREATE TABLE in benutzerdefinierten Transaktionen.
Sperren für verschiedene Arten von Anweisungen
Diese Tabelle enthält eine Liste der verwendeten Sperren für verschiedene Arten von Transaktionen, wobei alle Sperren auf Tabellenebene erfolgen:
Anweisungstyp | Vorgenommene Sperre |
---|---|
SELECT | Schemastabilität (Sch-S) |
INSERT | Beabsichtigte exklusive Sperre (IX) |
DELETE | Beabsichtigte exklusive Sperre (IX) |
UPDATE | Beabsichtigte exklusive Sperre (IX) |
COPY INTO | Beabsichtigte exklusive Sperre (IX) |
DDL | Schemaänderung (Schema-Modification, Sch-M) |
Diese Sperren verhindern Konflikte wie Änderungen am Schema einer Tabelle während der Aktualisierung von Zeilen in einer Transaktion.
Sie können aktuelle aktive Sperren mit der dynamischen Verwaltungsansicht (DMV) sys.dm_tran_locks abfragen.
Konflikte aus mehreren gleichzeitigen Transaktionen, die Zeilen in einer Tabelle aktualisieren, werden am Ende der Transaktion ausgewertet. Die erste committete Transaktion wird erfolgreich abgeschlossen, und für die anderen Transaktionen wird ein Rollback ausgeführt und ein Fehler zurückgegeben. Diese Konflikte werden auf Tabellenebene und nicht auf der Ebene der einzelnen Parquet-Dateien ausgewertet.
INSERT-Anweisungen erstellen immer neue Parquet-Dateien, sodass es weniger Konflikte mit anderen Transaktionen gibt. Dies gilt nicht für DDL, da das Schema der Tabelle geändert werden kann.
Transaktionsprotokollierung
Die Transaktionsprotokollierung in Warehouse in Microsoft Fabric findet auf der Ebene der Parquet-Datei statt, da Parquet-Dateien unveränderlich sind. Ein Rollback führt dazu, dass auf die vorherigen Parquet-Dateien zurückverwiesen wird. Die Vorteile dieser Änderung sind schnellere Transaktionsprotokollierung und Rollbacks.
Begrenzungen
- Verteilte Transaktionen werden nicht unterstützt.
- Speicherpunkte werden nicht unterstützt.
- Benannte Transaktionen werden nicht unterstützt.
- Markierte Transaktionen werden nicht unterstützt.
- ALTER TABLE wird in einer expliziten Transaktion nicht unterstützt.
- Derzeit ist die T-SQL-Funktionalität im Warehouse eingeschränkt. Eine Liste der derzeit nicht verfügbaren T-SQL-Befehle finden Sie unter T-SQL-Oberfläche.
- Wenn bei einer Transaktion Daten in eine leere Tabelle eingefügt werden und vor dem Rollback eine SELECT-Anweisung ausgegeben wird, können die automatisch generierten Statistiken weiterhin die nicht committeten Daten widerspiegeln, sodass es zu ungenauen Statistiken kommt. Ungenaue Statistiken können zu nicht optimierten Abfrageplänen und Ausführungszeiten führen. Wenn Sie ein Rollback für eine Transaktion mit SELECT-Anweisungen nach einem großen INSERT-Vorgang durchführen, aktualisieren Sie die Statistiken für die in der SELECT-Anweisung genannten Spalten.