Transacties in magazijntabellen in Microsoft Fabric
Van toepassing op:✅ SQL Analytics-eindpunt en -magazijn in Microsoft Fabric
Net als bij hun gedrag in SQL Server kunt u met transacties het doorvoeren of terugdraaien van lees- en schrijfquery's beheren.
U kunt gegevens wijzigen die zijn opgeslagen in tabellen in een magazijn met behulp van transacties om wijzigingen samen te groeperen.
- U kunt bijvoorbeeld invoegen in veelvoudentabellen doorvoeren, of geen van de tabellen als er een fout optreedt. Als u details wijzigt over een inkooporder die van invloed is op drie tabellen, kunt u deze wijzigingen groeperen in één transactie. Dat betekent dat wanneer er query's worden uitgevoerd op deze tabellen, ze allemaal de wijzigingen hebben of geen van deze tabellen. Transacties zijn gebruikelijk wanneer u ervoor moet zorgen dat uw gegevens consistent zijn in meerdere tabellen.
Transactionele mogelijkheden
Dezelfde transactionele mogelijkheden worden ondersteund in het SQL Analytics-eindpunt in Microsoft Fabric, maar voor alleen-lezen query's.
Transacties kunnen ook worden gebruikt voor sequentiële SELECT-instructies om ervoor te zorgen dat de betrokken tabellen allemaal gegevens van hetzelfde tijdstip hebben. Als een tabel bijvoorbeeld nieuwe rijen heeft toegevoegd door een andere transactie, hebben de nieuwe rijen geen invloed op de SELECT-query's binnen een geopende transactie.
Belangrijk
Alleen het isolatieniveau voor momentopnamen wordt ondersteund in Microsoft Fabric. Als u T-SQL gebruikt om uw isolatieniveau te wijzigen, wordt de wijziging genegeerd tijdens het uitvoeren van query's en wordt de isolatie van momentopnamen toegepast.
Ondersteuning voor transactie tussen databases
Warehouse in Microsoft Fabric ondersteunt transacties die betrekking hebben op databases die zich in dezelfde werkruimte bevinden, waaronder het lezen van het SQL-analyse-eindpunt van Lakehouse. Elk Lakehouse heeft één alleen-lezen SQL Analytics-eindpunt. Elke werkruimte kan meer dan één lakehouse hebben.
DDL-ondersteuning binnen transacties
Warehouse in Microsoft Fabric ondersteunt DDL, zoals CREATE TABLE binnen door de gebruiker gedefinieerde transacties.
Vergrendelingen voor verschillende typen instructies
Deze tabel bevat een lijst met de vergrendelingen die worden gebruikt voor verschillende typen transacties. Alle vergrendelingen bevinden zich op tabelniveau:
Instructietype | Vergrendeling genomen |
---|---|
SELECT | Schema-stabiliteit (Sch-S) |
INSERT | Intent Exclusive (IX) |
DELETE | Intent Exclusive (IX) |
UPDATE | Intent Exclusive (IX) |
COPY INTO | Intent Exclusive (IX) |
DDL | Schemawijziging (Sch-M) |
Deze vergrendelingen voorkomen dat conflicten, zoals het schema van een tabel, worden gewijzigd terwijl rijen in een transactie worden bijgewerkt.
U kunt momenteel queryvergrendelingen uitvoeren met de dynamische beheerweergave (DMV) sys.dm_tran_locks.
Conflicten van twee of meer gelijktijdige transacties die een of meer rijen in een tabel bijwerken, worden aan het einde van de transactie geëvalueerd. De eerste transactie die moet worden doorgevoerd, wordt voltooid en de andere transacties worden teruggedraaid met een geretourneerde fout. Deze conflicten worden geëvalueerd op tabelniveau en niet op het niveau van het afzonderlijke Parquet-bestand.
INSERT-instructies maken altijd nieuwe Parquet-bestanden, wat betekent dat er minder conflicten zijn met andere transacties, met uitzondering van DDL, omdat het schema van de tabel kan worden gewijzigd.
Transactielogboekregistratie
Transactielogboekregistratie in Warehouse in Microsoft Fabric bevindt zich op het parquet-bestandsniveau omdat parquet-bestanden onveranderbaar zijn (ze kunnen niet worden gewijzigd). Een terugdraaiactie resulteert in het terugwijzen naar de vorige Parquet-bestanden. De voordelen van deze wijziging zijn dat transactielogboekregistratie en terugdraaiacties sneller zijn.
Beperkingen
- Gedistribueerde transacties worden niet ondersteund.
- Opslagpunten worden niet ondersteund.
- Benoemde transacties worden niet ondersteund.
- Gemarkeerde transacties worden niet ondersteund.
- ALTER TABLE wordt niet ondersteund binnen een expliciete transactie.
- Op dit moment is er beperkte T-SQL-functionaliteit in het magazijn. Zie het gebied TSQL voor een lijst met T-SQL-opdrachten die momenteel niet beschikbaar zijn.
- Als een transactie gegevens invoegt in een lege tabel en een SELECT uitgeeft voordat deze wordt teruggedraaid, kunnen de automatisch gegenereerde statistieken nog steeds de niet-verzonden gegevens weerspiegelen, waardoor onnauwkeurige statistieken ontstaan. Onnauwkeurige statistieken kunnen leiden tot niet-geoptimaliseerde queryplannen en uitvoeringstijden. Als u een transactie terugdraait met SELECTs na een grote INSERT, werkt u statistieken bij voor de kolommen die in uw SELECT worden genoemd.