Transaksjoner i Lager-tabeller i Microsoft Fabric

Gjelder for: SQL Analytics-endepunkt og Warehouse i Microsoft Fabric

På samme måte som i SQL Server, kan du kontrollere utføringen eller tilbakerullingen av lese- og skrivespørringer på samme måte som i SQL Server.

Du kan endre data som er lagret i tabeller i et lager ved hjelp av transaksjoner for å gruppere endringer sammen.

  • Du kan for eksempel utføre innsettinger i multipler-tabeller, eller ingen av tabellene hvis det oppstår en feil. Hvis du endrer detaljer om en bestilling som påvirker tre tabeller, kan du gruppere disse endringene i én enkelt transaksjon. Det betyr at når disse tabellene blir spurt, har de enten endringene eller ingen av dem. Transaksjoner er en vanlig praksis for når du må sikre at dataene er konsekvente på tvers av flere tabeller.

Transaksjonsfunksjoner

De samme transaksjonsfunksjonene støttes i SQL Analytics-endepunktet i Microsoft Fabric, men for skrivebeskyttede spørringer.

Transaksjoner kan også brukes til sekvensielle SELECT-setninger for å sikre at de involverte tabellene har data fra samme tidspunkt. Hvis en tabell for eksempel har nye rader lagt til i en annen transaksjon, påvirker ikke de nye radene SELECT-spørringene i en åpen transaksjon.

Viktig

Bare isoleringsnivået for øyeblikksbilde støttes i Microsoft Fabric. Hvis du bruker T-SQL til å endre isolasjonsnivået, ignoreres endringen ved kjøringstidspunktet for spørring, og isolering av øyeblikksbilde brukes.

Støtte for spørringstransaksjon på tvers av databaser

Warehouse i Microsoft Fabric støtter transaksjoner som strekker seg over databaser som er innenfor samme arbeidsområde, inkludert lesing fra SQL Analytics-endepunktet i Lakehouse. Hver Lakehouse har ett skrivebeskyttet SQL Analytics-endepunkt. Hvert arbeidsområde kan ha mer enn ett lakehouse.

DDL-støtte i transaksjoner

Warehouse i Microsoft Fabric støtter DDL, for eksempel CREATE TABLE i brukerdefinerte transaksjoner.

Låser for ulike typer setninger

Denne tabellen inneholder en liste over hvilke låser som brukes for ulike typer transaksjoner, alle låser er på tabellnivå:

Setningstype Lås tatt
VELG Skjema-stabilitet (Sch-S)
SETTE INN Intent Exclusive (IX)
SLETTE Intent Exclusive (IX)
OPPDATERINGEN Intent Exclusive (IX)
KOPIER INN Intent Exclusive (IX)
DDL Skjemaendring (Sch-M)

Disse låsene hindrer konflikter, for eksempel at skjemaet for en tabell endres mens rader oppdateres i en transaksjon.

Du kan for øyeblikket utføre spørringslåser med den dynamiske administrasjonsvisningen (DMV) sys.dm_tran_locks.

Konflikter fra to eller flere samtidige transaksjoner som oppdaterer én eller flere rader i en tabell, evalueres på slutten av transaksjonen. Den første transaksjonen som utføres fullført, og de andre transaksjonene rulles tilbake med en feil som returneres. Disse konfliktene evalueres på tabellnivå og ikke det individuelle parquetfilnivået.

INSERT-setninger oppretter alltid nye parquetfiler, noe som betyr færre konflikter med andre transaksjoner bortsett fra DDL fordi tabellens skjema kan endres.

Transaksjonslogging

Transaksjonslogging i Warehouse i Microsoft Fabric er på parkettfilnivå fordi parkettfiler er uforanderlige (de kan ikke endres). En tilbakerulling resulterer i å peke tilbake til de forrige parquetfilene. Fordelene med denne endringen er at transaksjonslogging og tilbakerulling er raskere.

Begrensninger

  • Distribuerte transaksjoner støttes ikke.
  • Lagringspunkter støttes ikke.
  • Navngitte transaksjoner støttes ikke.
  • Merkede transaksjoner støttes ikke.
  • ALTER TABLE støttes ikke i en eksplisitt transaksjon.
  • Foreløpig er det begrenset T-SQL-funksjonalitet i lageret. Se TSQL-overflateareal for en liste over T-SQL-kommandoer som for øyeblikket ikke er tilgjengelige.
  • Hvis en transaksjon har datainnsetting i en tom tabell og utsteder en SELECT før tilbakerulling, kan den automatisk genererte statistikken fortsatt gjenspeile de uforpliktende dataene, noe som forårsaker unøyaktig statistikk. Unøyaktig statistikk kan føre til uoptimiserte spørringsplaner og kjøringstider. Hvis du ruller tilbake en transaksjon med SELECTs etter en stor INSERT, oppdaterer du statistikk for kolonnene som er nevnt i SELECT.