Sdílet prostřednictvím


Transakce v tabulkách skladu v Microsoft Fabric

Platí pro:✅ Koncový bod sql Analytics a sklad v Microsoft Fabric

Podobně jako jejich chování v SQL Serveru umožňují transakce řídit potvrzení nebo vrácení zpět čtení a zápisu dotazů.

Data uložená v tabulkách ve skladu můžete upravit pomocí transakcí, aby seskupily změny.

  • Můžete například potvrdit vložení do více tabulek nebo žádná z tabulek, pokud dojde k chybě. Pokud měníte podrobnosti o nákupní objednávce, která ovlivňuje tři tabulky, můžete tyto změny seskupit do jedné transakce. To znamená, že když jsou tyto tabulky dotazovány, všechny mají buď změny, nebo žádné z nich. Transakce jsou běžným postupem, kdy potřebujete zajistit, aby vaše data byla konzistentní napříč více tabulkami.

Transakční funkce

Stejné transakční funkce jsou podporovány v koncovém bodu analýzy SQL v Microsoft Fabric, ale pro dotazy jen pro čtení.

Transakce lze také použít pro sekvenční příkazy SELECT, aby všechny tabulky měly data ze stejného bodu v čase. Například pokud tabulka obsahuje nové řádky přidané jinou transakcí, nové řádky nemají vliv na dotazy SELECT uvnitř otevřené transakce.

Důležité

Microsoft Fabric podporuje jenom úroveň izolace snímků. Pokud ke změně úrovně izolace použijete T-SQL, bude tato změna ignorována v době provádění dotazu a použije se izolace snímků.

Podpora transakcí mezi databázemi

Sklad v Microsoft Fabric podporuje transakce, které se nacházejí napříč databázemi, které jsou ve stejném pracovním prostoru, včetně čtení z koncového bodu analýzy SQL lakehouse. Každý Lakehouse má jeden koncový bod analýzy SQL jen pro čtení. Každý pracovní prostor může mít více než jeden jezerní dům.

Podpora DDL v rámci transakcí

Sklad v Microsoft Fabric podporuje DDL, například CREATE TABLE uvnitř uživatelem definovaných transakcí.

Zámky pro různé typy příkazů

Tato tabulka obsahuje seznam zámků používaných pro různé typy transakcí, všechny zámky jsou na úrovni tabulky:

Typ příkazu Uzamčení pořízené
SELECT Schema-Stability (Sch-S)
INSERT Intent Exclusive (IX)
DELETE Intent Exclusive (IX)
UPDATE Intent Exclusive (IX)
COPY INTO Intent Exclusive (IX)
DDL Úprava schématu (Sch-M)

Tyto zámky brání konfliktům, jako je změna schématu tabulky při aktualizaci řádků v transakci.

Zámky aktuálně uchovávané pomocí zobrazení dynamické správy (DMV) můžete dotazovat sys.dm_tran_locks.

Konflikty ze dvou nebo více souběžných transakcí, které aktualizují jeden nebo více řádků v tabulce, se vyhodnocují na konci transakce. První transakce, která se úspěšně potvrdí, a ostatní transakce se vrátí zpět s vrácenou chybou. Tyto konflikty se vyhodnocují na úrovni tabulky, nikoli na úrovni jednotlivých souborů Parquet.

Příkazy INSERT vždy vytvářejí nové soubory parquet, což znamená, že méně konfliktů s jinými transakcemi s výjimkou DDL, protože schéma tabulky může být změněno.

Protokolování transakcí

Protokolování transakcí ve skladu v Microsoft Fabric je na úrovni souboru parquet, protože soubory parquet jsou neměnné (nelze je změnit). Vrácení zpět vede zpět k předchozím souborům parquet. Výhody této změny jsou, že protokolování transakcí a vrácení zpět jsou rychlejší.

Omezení

  • Distribuované transakce nejsou podporovány.
  • Body uložení nejsou podporovány.
  • Pojmenované transakce nejsou podporovány.
  • Označené transakce nejsou podporovány.
  • ALTER TABLE není podporován v rámci explicitní transakce.
  • V tuto chvíli je ve skladu omezené funkce T-SQL. Seznam příkazů T-SQL, které aktuálně nejsou k dispozici, najdete v části Plocha TSQL.
  • Pokud transakce obsahuje vložení dat do prázdné tabulky a před vrácením zpět vydá select, automaticky generované statistiky můžou stále odrážet nepotvrzená data, což způsobuje nepřesné statistiky. Nepřesné statistiky můžou vést k neoptimalizovaným plánům dotazů a časům provádění. Pokud vrátíte transakci se SELECTs po velkém INSERT, aktualizujte statistiky pro sloupce uvedené v select.