Transazioni nelle tabelle warehouse in Microsoft Fabric

Si applica a: Endpoint di analisi SQL e Warehouse in Microsoft Fabric

Analogamente al comportamento in SQL Server, le transazioni consentono di controllare il commit o il rollback delle query di lettura e scrittura.

È possibile modificare i dati archiviati nelle tabelle di un warehouse usando transazioni per raggruppare le modifiche.

  • Ad esempio, è possibile eseguire il commit degli inserimenti in più tabelle o in nessuna delle tabelle se si verifica un errore. Se si modificano i dettagli relativi a un ordine di acquisto che influisce su tre tabelle, è possibile raggruppare tali modifiche in una singola transazione. Ciò significa che quando vengono eseguite query su tali tabelle, tutte hanno le modifiche o nessuna di esse. Le transazioni sono una procedura comune per quando è necessario assicurarsi che i dati siano coerenti tra più tabelle.

Funzionalità transazionali

Le stesse funzionalità transazionali sono supportate nell'endpoint di analisi SQL in Microsoft Fabric, ma per le query di sola lettura.

Le transazioni possono essere usate anche per istruzioni sequenziali edizione Standard LECT per garantire che le tabelle coinvolte abbiano dati dallo stesso punto nel tempo. Ad esempio, se una tabella include nuove righe aggiunte da un'altra transazione, le nuove righe non influiscono sulle query edizione Standard LECT all'interno di una transazione aperta.

Importante

In Microsoft Fabric è supportato solo il livello di isolamento dello snapshot. Se si usa T-SQL per modificare il livello di isolamento, la modifica viene ignorata in fase di esecuzione della query e viene applicato l'isolamento dello snapshot.

Supporto delle transazioni di query tra database

Warehouse in Microsoft Fabric supporta transazioni che si estendono su database all'interno della stessa area di lavoro, inclusa la lettura dall'endpoint di analisi SQL di Lakehouse. Ogni Lakehouse ha un endpoint di analisi SQL di sola lettura. Ogni area di lavoro può avere più di una lakehouse.

Supporto DDL nelle transazioni

Warehouse in Microsoft Fabric supporta DDL, ad esempio CREATE TABLE, all'interno di transazioni definite dall'utente.

Blocchi per tipi diversi di istruzioni

Questa tabella fornisce un elenco dei blocchi usati per diversi tipi di transazioni, tutti i blocchi sono a livello di tabella:

Tipo di istruzione Blocco preso
SELECT Stabilità dello schema (Sch-S)
INSERT Finalità esclusiva (IX)
DELETE Finalità esclusiva (IX)
UPDATE Finalità esclusiva (IX)
COPY INTO Finalità esclusiva (IX)
DDL Modifica dello schema (Sch-M)

Questi blocchi impediscono conflitti, ad esempio lo schema di una tabella da modificare durante l'aggiornamento delle righe in una transazione.

È possibile eseguire query sui blocchi attualmente mantenuti con il sys.dm_tran_locks DMV (Dynamic Management View).

I conflitti di due o più transazioni simultanee che aggiornano una o più righe in una tabella vengono valutati alla fine della transazione. La prima transazione di cui eseguire il commit viene completata correttamente e viene eseguito il rollback delle altre transazioni con un errore restituito. Questi conflitti vengono valutati a livello di tabella e non a livello di singolo file Parquet.

Le istruzioni IN edizione Standard RT creano sempre nuovi file parquet, ovvero un minor numero di conflitti con altre transazioni, ad eccezione di DDL, perché lo schema della tabella potrebbe cambiare.

Registrazione delle transazioni

La registrazione delle transazioni nel warehouse in Microsoft Fabric è a livello di file parquet perché i file parquet non sono modificabili (non possono essere modificati). Un rollback restituisce i file parquet precedenti. I vantaggi di questa modifica sono che la registrazione delle transazioni e i rollback sono più veloci.

Limiti

  • Le transazioni distribuite non sono supportate.
  • I punti di salvataggio non sono supportati.
  • Le transazioni denominate non sono supportate.
  • Le transazioni contrassegnate non sono supportate.
  • ALTER TABLE non è supportato all'interno di una transazione esplicita.
  • In questo momento, è disponibile una funzionalità T-SQL limitata nel warehouse. Vedere Area di attacco TSQL per un elenco di comandi T-SQL attualmente non disponibili.
  • Se una transazione include l'inserimento di dati in una tabella vuota e rilascia un edizione Standard LECT prima del rollback, le statistiche generate automaticamente possono comunque riflettere i dati non inviati, causando statistiche non accurate. Le statistiche imprecise possono causare piani di query non ottimizzati e tempi di esecuzione. Se si esegue il rollback di una transazione con edizione Standard LET dopo un'operazione IN edizione Standard RT di grandi dimensioni, aggiornare le statistiche per le colonne indicate nell'edizione Standard LECT.