Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:✅ SQL Analytics végpont és a Microsoft Fabric Warehouse
A SQL Server viselkedéséhez hasonlóan a tranzakciók lehetővé teszik az olvasási és írási lekérdezések véglegesítésének vagy visszaállításának szabályozását.
Fabric Data Warehouse támogatja az ACID-kompatibilis tranzakciókat. Minden tranzakció atomi, konzisztens, izolált és tartós (ACID). Az egyetlen tranzakción belüli összes művelet atomi módon lesz kezelve, minden sikeres vagy sikertelen. Ha a tranzakció bármely utasítása meghiúsul, a teljes tranzakció vissza lesz állítva.
Explicit tranzakciók
A raktár tábláiban tárolt adatokat explicit tranzakciók használatával módosíthatja a módosítások csoportosításához.
Például több táblára is véglegesíthet beszúrásokat, vagy hiba esetén egyik táblát sem. Ha egy három táblát érintő vásárlási rendelés adatait módosítja, ezeket a módosításokat egyetlen tranzakcióba csoportosíthatja. Ez azt jelenti, hogy amikor lekérdezik ezeket a táblákat, vagy mindegyikben vannak változások, vagy egyik sem. A tranzakciók gyakori gyakorlatnak számítanak, ha több táblában is konzisztensnek kell lennie az adatoknak.
Az explicit tranzakciókhoz szabványos T-SQL (BEGIN TRANCOMMIT TRANés ROLLBACK TRAN) szintaxis-vezérlési mechanizmusokat használhat. További információ: – TRANZAKCIÓJÁNAK MEGKEZDÉSE
- TRANZAKCIÓVÉGLEGESÍTÉSE
- TRANZAKCIÓ-VISSZAÁLLÍTÁSA
A Fabric Data Warehouse például egyetlen atomi egységként kezeli ezeket a sémamódosításokat:
-- Sample Syntax---
BEGIN TRAN;
ALTER TABLE <table_name> ADD <column_name> <type>;
ALTER TABLE <table_name> DROP COLUMN <column_name>;
COMMIT;
Ha a tranzakció bármely utasítása meghiúsul, a rendszer automatikusan visszaállítja az összes sémamódosítást.
Fabric Data Warehouse támogatja a következő műveletek explicit tranzakción belüli végrehajtását:
CREATE TABLEDROP TABLETRUNCATE TABLECTASsp_rename-
ALTER TABLEnull értékű oszlopok hozzáadása -
ALTER TABLEoszlopok elhagyása -
ALTER TABLEkorlátok hozzáadása vagy elhagyásaPRIMARY KEY,UNIQUE, ésFOREIGN KEYaNOT ENFORCEDkulcsszóval - Több
ALTER TABLEutasítás -
ALTER TABLEideiglenes elosztott táblákon
Adatbázisközi lekérdezési tranzakciók támogatása
A Microsoft Fabric-beli warehouse támogatja azokat a tranzakciókat, amelyek egy munkaterületen belül található raktárakra terjednek ki, beleértve a Lakehouse
A Fabric Data Warehouse zárolásának és blokkolásának ismertetése
Fabric Data Warehouse táblaszintű zárolást használ, függetlenül attól, hogy egy lekérdezés egy vagy több sort érint-e. Az alábbi táblázat a különböző T-SQL-műveletekhez használt zárolások listáját tartalmazza.
| Utasítás típusa | Zárolva |
|---|---|
| DML | |
| SELECT | Schema-Stability (Sch-S) |
| INSERT | Kizárólagos célkitűzés (IX) |
| DELETE | Kizárólagos célkitűzés (IX) |
| UPDATE | Kizárólagos célkitűzés (IX) |
| MERGE | Kizárólagos célkitűzés (IX) |
| COPY INTO | Kizárólagos célkitűzés (IX) |
| DDL | |
| TÁBLA LÉTREHOZ | Séma módosítás (Sch-M) |
| ALTER TABLE | Séma módosítás (Sch-M) |
| DROP TABLE | Séma módosítás (Sch-M) |
| TÁBLÁZAT CSONKÍTÁSA | Séma módosítás (Sch-M) |
| TÁBLA LÉTREHOZÁSA KIVÁLASZTÁSSAL | Séma módosítás (Sch-M) |
| TÁBLA LÉTREHOZÁSA KLÓNKÉNT | Séma módosítás (Sch-M) |
A dinamikus felügyeleti nézettel (DMV) jelenleg tárolt zárolásokat lekérdezheti sys.dm_tran_locks.
A zárolásokról, a zárolások eszkalálásáról és a zárolás kompatibilitásáról további információt a tranzakciózárolási és a sorverzió-verziószámozási útmutatóban talál.
Pillanatképek elkülönítése
Fabric Data Warehouse minden tranzakció pillanatkép-elkülönítését kényszeríti ki. A pillanatkép-elkülönítés egy soralapú elkülönítési szint, amely tranzakciószintű konzisztenciát biztosít az adatokhoz, és a sorokban tárolt tempdb verziókkal választja ki a frissítendő sorokat. A tranzakció a tranzakció kezdetekor létező adatsor-verziókat használja. Ez biztosítja, hogy minden tranzakció konzisztens pillanatképet adjon az adatokról a tranzakció kezdetekor.
Pillanatkép-elkülönítés esetén a tranzakció lekérdezései ugyanazt a verziót vagy pillanatképet látják az adatbázis állapota alapján, amikor a tranzakció megkezdődik. A pillanatképek elkülönítése esetén az adatokat módosító tranzakciók nem tiltják le az adatokat olvasott tranzakciókat, és az adatokat olvasott tranzakciók nem tiltják le az adatokat író tranzakciókat. Ez az optimista, nem blokkoló viselkedés jelentősen csökkenti az összetett tranzakciók holtpontjainak valószínűségét is.
Ha A T-SQL használatával módosítja az elkülönítési szintet, a rendszer figyelmen kívül hagyja a módosítást a lekérdezés végrehajtásakor, és alkalmazza a pillanatkép-elkülönítést.
Pillanatkép izoláció esetén írás-írás vagy frissítési ütközések lehetségesek. További információért lásd: A Fabric Data Warehouse írás-írás ütközései megértése.
Sémazárolások
A sémazárolások megakadályozzák a DDL-utasítások ütközéseit, például egy tábla sémájának módosítását, miközben egy tranzakcióban folyamatosan frissítik a sorokat. Vegye figyelembe, hogy a DDL-műveletek, például a sémamódosítások és a migrálások blokkot okozhatnak vagy blokkolhatók az aktív olvasási munkaterhelések által.
- Az adatdefiníciós nyelvi (DDL) műveletek során a Database Engine sémamódosítási (
Sch-M) zárolásokat használ. A zárolás megtartása során aSch-Mzárolás megakadályozza a tábla egyidejű elérését, amíg a zárolás fel nem oldódik. - Az adatmanipulációs nyelv (DML) műveletei során a Database Engine sémastabilitási (
Sch-S) zárolásokat használ. ASch-Mzárolásokat kérő műveleteket aSch-Szárolások blokkolják. Más tranzakciók továbbra is futnak a lekérdezés fordítása közben, de a DDL-műveletek mindaddig le vannak tiltva, amíg kizárólagos hozzáférést nem kapnak a sémához. - A DDL-műveletek kizárólagos (
X) zárolást is szereznek a céltáblához kapcsolódó rendszernézetek, példáulsys.tableséssys.objectssoraiban a tranzakció időtartama alatt. Ez blokkolja az egyidejűSELECTutasításokatsys.tableséssys.objects.
Ajánlott eljárások a blokkolás elkerüléséhez
- Kerülje a hosszú ideig futó tranzakciókat, vagy ütemezze az alacsony vagy nem egyidejű tevékenységek időszakait.
- A DDL-műveletek ütemezése csak karbantartási időszakokban a blokkolás minimalizálása érdekében.
- Bár a DDL-utasítások explicit felhasználói tranzakciókon (
BEGIN TRAN) belül végrehajthatók, azokat körültekintően kell használni az egyidejű számítási feladatokban. A zárolási viselkedés miatt a tranzakción belüli DDL blokkolhatja az egyidejű DML- vagy SELECT-műveleteket az érintett táblákon, valamint a rendszerkatalógus-nézetek select lekérdezéseit, példáulsys.tablesasys.objects. A lehetséges zárolási ütközések figyeléséhez és elhárításához használja a következőtsys.dm_tran_locks: . - A raktár zárolásainak és ütközéseinek monitorozása.
- Az aktuális zárolások vizsgálatához használja a sys.dm_tran_locks.
Írási ütközések megértése a Fabric Adat Raktárban
Írási-írási ütközések akkor fordulhatnak elő, ha két tranzakció kísérel meg UPDATE, DELETE, MERGE vagy TRUNCATE ugyanazt a táblát.
Írási-írási ütközések vagy frissítési ütközések a tábla szintjén is lehetségesek, mivel Fabric Data Warehouse táblaszintű zárolást használ. Ha két tranzakció megkísérli módosítani ugyanabban a táblában a különböző sorokat, akkor is ütközhetnek.
Az írási-írási ütközések többnyire két forgatókönyvből erednek:
- Felhasználó által kiváltott számítási feladatok ütközései
- Egyszerre több felhasználó vagy folyamat is módosítja ugyanazt a táblát.
- Előfordulhat ETL-folyamatokban, kötegfrissítésekben vagy átfedésben lévő tranzakciókban.
- Rendszer által kiváltott ütközések
- A háttérrendszer-feladatok, például az automatikus adattömörítések rossz minőségű fájlokat írnak át.
- Ezek ütközhetnek a felhasználói tranzakciókkal, bár az adattömörítés megszakítása aktívan megakadályozza az ilyen típusú írási-írási ütközéseket.
Írási-írási ütközés esetén hibaüzenetek jelenhetnek meg, például:
- 24556-os hiba: Frissítésütközés miatt megszakadt a pillanatkép-elkülönítési tranzakció. A pillanatkép izoláció használata esetén a "%.*ls" tábla közvetlen vagy közvetett elérése az "%.*ls" adatbázisban frissítési ütközéseket okozhat, ha a tábla sorait egy másik egyidejű tranzakció törölte vagy frissítette. Próbálkozzon újra a tranzakcióval.
- 24706-os hiba: Frissítési ütközés miatt megszakadt a pillanatkép-elkülönítési tranzakció. A pillanatfelvétel-izolációt nem használhatja arra, hogy közvetlenül vagy közvetve elérje a „%.*ls” táblát az „%.*ls” adatbázisban, hogy frissítsen, töröljön vagy beszúrjon egy olyan sort, amelyet egy másik tranzakció már módosított vagy törölt. Próbálkozzon újra a tranzakcióval.
Ha ezeket a hibaüzeneteket tapasztalja, egy vagy több tranzakció sikeres volt, és egy vagy több ütköző tranzakció meghiúsult. Próbálja újra a sikertelen tranzakciókat.
Megjegyzés:
Még ha MERGE a tranzakciók csak hozzáfűző módosításokat eredményeznek, akkor is írási-írási ütközést okoznak. Ha MERGE a tranzakció az egyidejű DML-tranzakcióktól eltérő sorokat érint, akkor ez a hiba akkor fordulhat elő, ha MERGE nem ez az első véglegesítésre kerülő tranzakció: "A pillanatkép-elkülönítési tranzakció megszakadt a frissítési ütközés miatt."
Ajánlott eljárások írási-írási ütközések elkerüléséhez
Írási-írási ütközések elkerülése:
- Kerülje az egyidejű
UPDATE,DELETEésMERGEműveleteket ugyanazon a táblán.- Ügyeljen a
UPDATEDELETEMERGEműveletekre többlépéses tranzakciókon belül.
- Ügyeljen a
- Az Újrapróbálkozás logikája minden alkalmazásban és lekérdezésben használható.
- Újrapróbálkoztatási logika implementálása tárolt eljárásokban és ETL-folyamatokban.
- Adjon hozzá újrapróbálkozási logikát a folyamatok vagy alkalmazások késleltetésével az átmeneti ütközések kezeléséhez.
- Exponenciális visszalépéssel elkerülheti az átmeneti hálózati fennakadásokat rontó újrapróbálkozási viharokat. További információ: Újrapróbálkozási minta.
- A Fabric Data Warehouse háttéradat-tömörítési szolgáltatással való írás-írás ütközések lehetségesek, de általában az Adattömörítés megszakítása funkció akadályozza meg.
Tábla- és parquetfájl-blokkolás
A tábla egy vagy több sorát frissítő két vagy több egyidejű tranzakció ütközései a tranzakció végén lesznek kiértékelve. Az első tranzakció véglegesítése sikeresen megtörténik, míg a többi tranzakció hiba miatt visszaállításra kerül. Ezeket az ütközéseket a rendszer a tábla szintjén értékeli ki, nem pedig az egyes parquet-fájlok szintjén.
Az INSERT utasítások mindig új parquet-fájlokat hoznak létre, ami kevesebb ütközést jelent más tranzakciókkal, kivéve a DDL-t, mert a tábla sémája megváltozhat.
Korlátozások
- Az elosztott tranzakciók például nem támogatottak
BEGIN DISTRIBUTED TRANSACTION. - A mentési pontok nem állnak rendelkezésre.
- Az elnevezett tranzakciók nem támogatottak.
- A megjelölt tranzakciók nem támogatottak.
- Jelenleg a T-SQL-funkciók korlátozottak a raktárban. A jelenleg nem elérhető T-SQL-parancsok listáját a Fabric Data Warehouse "T-SQL Surface Area" című részében találja.
- Ha egy tranzakció adatbeszúrással rendelkezik egy üres táblába, és a visszaállítás előtt kibocsát egy SELECT-et, az automatikusan létrehozott statisztikák továbbra is tükrözhetik a nem véglegesített adatokat, ami pontatlan statisztikákat eredményez. A pontatlan statisztikák nem optimális lekérdezési tervekhez és végrehajtási időkhöz vezethetnek. Ha egy nagyobb INSERT után visszaállít egy tranzakciót, amely SELECT-eket tartalmaz, frissítse a statisztikákat a SELECT-ben említett oszlopokhoz.
Kapcsolódó tartalom
SQL Analytics-végpont vagy a Warehouse lekérdezése a Microsoft Fabricban - Táblázatok