Dela via


Transaktioner i lagertabeller i Microsoft Fabric

Gäller för:✅ SQL-analysslutpunkt och lager i Microsoft Fabric

På samma sätt som med deras beteende i SQL Server kan du med transaktioner styra incheckningen eller återställningen av läs- och skrivfrågor.

Du kan ändra data som lagras i tabeller i ett lager med hjälp av transaktioner för att gruppera ändringar tillsammans.

  • Du kan till exempel checka in infogningar i tabeller med flera tabeller, eller ingen av tabellerna om ett fel uppstår. Om du ändrar information om en inköpsorder som påverkar tre tabeller kan du gruppera ändringarna i en enda transaktion. Det innebär att när dessa tabeller efterfrågas har de antingen alla ändringarna eller så har ingen av dem det. Transaktioner är en vanlig metod för när du behöver se till att dina data är konsekventa i flera tabeller.

Transaktionsfunktioner

Samma transaktionsfunktioner stöds i SQL-analysslutpunkten i Microsoft Fabric, men för skrivskyddade frågor.

Transaktioner kan också användas för sekventiella SELECT-instruktioner för att säkerställa att de berörda tabellerna alla har data från samma tidpunkt. Om en tabell till exempel har nya rader som lagts till av en annan transaktion påverkar de nya raderna inte SELECT-frågorna i en öppen transaktion.

Viktigt!

Endast isoleringsnivån för ögonblicksbilder stöds i Microsoft Fabric. Om du använder T-SQL för att ändra isoleringsnivån ignoreras ändringen vid körning av frågor och ögonblicksbildisolering tillämpas.

Stöd för frågor mellan databaser

Warehouse i Microsoft Fabric stöder transaktioner som sträcker sig över databaser som finns på samma arbetsyta, inklusive läsning från SQL-analysslutpunkten i Lakehouse. Varje Lakehouse har en skrivskyddad SQL-analysslutpunkt. Varje arbetsyta kan ha fler än ett sjöhus.

DDL-stöd inom transaktioner

Warehouse i Microsoft Fabric har stöd för DDL, till exempel CREATE TABLE i användardefinierade transaktioner.

Lås för olika typer av instruktioner

Den här tabellen innehåller en lista över vilka lås som används för olika typer av transaktioner, alla lås är på tabellnivå:

Instruktionstyp Låset har tagits
SELECT Schemastabilitet (Sch-S)
INSERT Exklusiv avsikt (IX)
DELETE Exklusiv avsikt (IX)
UPDATE Exklusiv avsikt (IX)
COPY INTO Exklusiv avsikt (IX)
DDL Schemaändring (Sch-M)

Dessa lås förhindrar konflikter, till exempel att en tabells schema ändras medan rader uppdateras i en transaktion.

Du kan köra frågor mot lås som för närvarande finns i vyn dynamisk hantering (DMV) sys.dm_tran_locks.

Konflikter från två eller flera samtidiga transaktioner som uppdaterar en eller flera rader i en tabell utvärderas i slutet av transaktionen. Den första transaktionen som checkas in slutförs och de andra transaktionerna återställs med ett fel som returneras. Dessa konflikter utvärderas på tabellnivå och inte på den enskilda parquet-filnivån.

INSERT-instruktioner skapar alltid nya parquet-filer, vilket innebär färre konflikter med andra transaktioner förutom DDL eftersom tabellens schema kan ändras.

Transaktionsloggning

Transaktionsloggning i Warehouse i Microsoft Fabric är på parquet-filnivå eftersom parquet-filer är oföränderliga (de kan inte ändras). En återställning resulterar i att peka tillbaka till de tidigare parquet-filerna. Fördelarna med den här ändringen är att transaktionsloggning och återställningar går snabbare.

Begränsningar

  • Distribuerade transaktioner stöds inte.
  • Det går inte att spara punkter.
  • Namngivna transaktioner stöds inte.
  • Markerade transaktioner stöds inte.
  • ALTER TABLE stöds inte i en explicit transaktion.
  • För närvarande finns det begränsade T-SQL-funktioner i lagret. En lista över T-SQL-kommandon som för närvarande inte är tillgängliga finns i TSQL-ytan .
  • Om en transaktion har datainfogning i en tom tabell och utfärdar en SELECT innan den återställs, kan den automatiskt genererade statistiken fortfarande återspegla de ogenomförda data, vilket orsakar felaktig statistik. Felaktig statistik kan leda till ooptimerade frågeplaner och körningstider. Om du återställer en transaktion med SELECT efter en stor INSERT uppdaterar du statistik för kolumnerna som nämns i SELECT.