Udostępnij za pośrednictwem


Transakcje w tabelach magazynu w usłudze Microsoft Fabric

Dotyczy:✅ punkt końcowy analizy SQL i magazyn w usłudze Microsoft Fabric

Podobnie jak w przypadku ich zachowania w programie SQL Server, transakcje umożliwiają kontrolowanie zatwierdzenia lub wycofywania zapytań odczytu i zapisu.

Dane przechowywane w tabelach w magazynie można modyfikować przy użyciu transakcji w celu grupowania zmian.

  • Można na przykład zatwierdzić wstawki do tabel wielokrotnych lub, jeśli wystąpi błąd, żadna z tabel. Jeśli zmieniasz szczegóły dotyczące zamówienia zakupu, które ma wpływ na trzy tabele, możesz pogrupować te zmiany w jedną transakcję. Oznacza to, że gdy te tabele są odpytywane, wszystkie mają zmiany lub żaden z nich nie. Transakcje są powszechną praktyką w przypadku konieczności zapewnienia spójności danych w wielu tabelach.

Możliwości transakcyjne

Te same możliwości transakcyjne są obsługiwane w punkcie końcowym analizy SQL w usłudze Microsoft Fabric, ale w przypadku zapytań tylko do odczytu.

Transakcje mogą być również używane do sekwencyjnych instrukcji SELECT, aby upewnić się, że tabele, w których uczestniczyły wszystkie dane z tego samego punktu w czasie. Jeśli na przykład tabela zawiera nowe wiersze dodane przez inną transakcję, nowe wiersze nie mają wpływu na zapytania SELECT wewnątrz otwartej transakcji.

Ważne

Tylko poziom izolacji migawki jest obsługiwany w usłudze Microsoft Fabric. Jeśli używasz języka T-SQL do zmiany poziomu izolacji, zmiana zostanie zignorowana w czasie wykonywania zapytań i zostanie zastosowana izolacja migawki.

Obsługa transakcji zapytań między bazami danych

Magazyn w usłudze Microsoft Fabric obsługuje transakcje obejmujące wiele baz danych znajdujących się w tym samym obszarze roboczym, w tym odczyt z punktu końcowego analizy SQL usługi Lakehouse. Każda usługa Lakehouse ma jeden punkt końcowy analizy SQL tylko do odczytu. Każdy obszar roboczy może mieć więcej niż jeden obiekt lakehouse.

Obsługa języka DDL w ramach transakcji

Magazyn w usłudze Microsoft Fabric obsługuje język DDL, taki jak CREATE TABLE wewnątrz transakcji zdefiniowanych przez użytkownika.

Blokady dla różnych typów instrukcji

Ta tabela zawiera listę blokad używanych dla różnych typów transakcji, wszystkie blokady znajdują się na poziomie tabeli:

Typ instrukcji Blokada zajęta
SELECT Stabilność schematu (Sch-S)
INSERT Intencja wyłączna (IX)
DELETE Intencja wyłączna (IX)
UPDATE Intencja wyłączna (IX)
COPY INTO Intencja wyłączna (IX)
DDL Modyfikacja schematu (Sch-M)

Te blokady uniemożliwiają konflikty, takie jak zmiana schematu tabeli podczas aktualizowania wierszy w transakcji.

Blokady zapytania są obecnie przechowywane za pomocą dynamicznego widoku zarządzania (DMV) sys.dm_tran_locks.

Konflikty z co najmniej dwóch współbieżnych transakcji, które aktualizują jeden lub więcej wierszy w tabeli, są oceniane na końcu transakcji. Pierwsza transakcja do zatwierdzenia zostanie ukończona pomyślnie, a pozostałe transakcje zostaną wycofane z zwróconym błędem. Te konflikty są oceniane na poziomie tabeli, a nie na poziomie pojedynczego pliku parquet.

Instrukcje INSERT zawsze tworzą nowe pliki parquet, co oznacza mniej konfliktów z innymi transakcjami z wyjątkiem języka DDL, ponieważ schemat tabeli może ulec zmianie.

Rejestrowanie transakcji

Rejestrowanie transakcji w magazynie w usłudze Microsoft Fabric jest na poziomie pliku parquet, ponieważ pliki parquet są niezmienne (nie można ich zmienić). Wycofanie powoduje powrót do poprzednich plików parquet. Korzyści wynikające z tej zmiany są takie, że rejestrowanie transakcji i wycofywanie są szybsze.

Ograniczenia

  • Transakcje rozproszone nie są obsługiwane.
  • Punkty zapisywania nie są obsługiwane.
  • Nazwane transakcje nie są obsługiwane.
  • Oznaczone transakcje nie są obsługiwane.
  • FUNKCJA ALTER TABLE nie jest obsługiwana w ramach transakcji jawnej.
  • Obecnie w magazynie istnieją ograniczone funkcje języka T-SQL. Zobacz obszar powierzchni TSQL, aby uzyskać listę poleceń języka T-SQL, które są obecnie niedostępne.
  • Jeśli transakcja zawiera wstawienie danych do pustej tabeli i wystawia polecenie SELECT przed cofnięciem, automatycznie wygenerowane statystyki nadal mogą odzwierciedlać niezatwierdzone dane, powodując niedokładne statystyki. Niedokładne statystyki mogą prowadzić do niezoptymalizowanego czasu wykonywania i planów zapytań. Jeśli wycofasz transakcję z funkcją SELECTs po dużej operacji INSERT, zaktualizuj statystyki kolumn wymienionych w elembacie SELECT.