Tapahtumat Fabric Data Warehouse

Soveltaa:✅ SQL Analytics Endpoint and Warehouse in Microsoft Fabric

Samoin kuin SQL Server:ssä, transaktiot antavat sinun hallita luku- ja kirjoituskyselyjen sitoutumista tai palautusta.

Fabric Data Warehouse tukee ACID-yhteensopivia transaktioita. Jokainen transaktio on atominen, johdonmukainen, eristetty ja kestävä (ACID). Kaikkia yhden tapahtuman toimintoja käsitellään atomisesti, kaikki onnistuvat tai epäonnistuvat. Jos jokin tapahtuman tiliote epäonnistuu, koko tapahtuma peruutetaan.

Eksplisiittiset liiketoimet

Voit muokata varastotaulukoihin tallennettuja tietoja käyttämällä eksplisiittisiä tapahtumia muutosten ryhmittelyyn.

Voit esimerkiksi sitoa lisäyksiä kerrannaisiin taulukoihin tai yhtään taulukkoa, jos virhe ilmenee. Jos muutat tietoja ostotilauksesta, joka vaikuttaa kolmeen taulukkoon, voit ryhmitellä nämä muutokset yksittäiseksi tapahtumaksi. Tämä tarkoittaa sitä, että kun näille taulukoille tehdään kysely, kaikilla on joko muutokset tai ei yhdelläkään niistä. Tapahtumat ovat yleinen käytäntö, jos haluat varmistaa, että tietosi ovat yhdenmukaisia useissa taulukoissa.

Voit käyttää T-SQL:n (BEGIN TRAN, , COMMIT TRANja ROLLBACK TRAN) syntaksin vakiohallintamekanismeja eksplisiittisissä tapahtumissa. Lisätietoja on seuraavissa kohdissa: - ALOITA TAPAHTUMAN - TOIMITUSTAPAHTUMAN - PALAUTUSTAPAHTUMA

Esimerkiksi Fabric Data Warehouse käsittelee näitä skeeman muutoksia yhtenä atomiyksikkönä:

-- Sample Syntax--- 
BEGIN TRAN; 
ALTER TABLE <table_name> ADD <column_name> <type>; 
ALTER TABLE <table_name> DROP COLUMN <column_name>; 
COMMIT; 

Jos jokin transaktion lause epäonnistuu, kaikki skeemamuutokset perutaan automaattisesti.

Fabric Data Warehouse tukee seuraavien suorittamista eksplisiittisessä transaktiossa:

  • CREATE TABLE
  • DROP TABLE
  • TRUNCATE TABLE
  • CTAS
  • sp_rename
  • ALTER TABLE lisää nollattavia sarakkeita
  • ALTER TABLE Pudotussarakkeet
  • ALTER TABLElisää tai pudota PRIMARY KEY, UNIQUE, ja FOREIGN KEY rajoitteet avainsanalla NOT ENFORCED
  • Useita väitteitä ALTER TABLE
  • ALTER TABLE Hajautetuilla väliaikaisilla taulukoilla

Tietokantakyselyjen välinen tapahtumien tuki

Warehouse in Microsoft Fabric tukee tapahtumia, jotka ulottuvat varastojen yli samassa työtilassa, mukaan lukien lukeminen Lakehouse:n SQL-analytiikkapäätepisteestä. Katso esimerkki kohdasta Tietokannan välisen SQL-kyselyn kirjoittaminen.

Ymmärrä lukitus ja blokkaus Fabric Data Warehouse

Fabric Data Warehouse käyttää taulukkotason lukitusta riippumatta siitä, koskettaako kysely yhtä vai useita rivejä. Seuraavassa taulukossa on luettelo siitä, mitä lukkoja käytetään eri T-SQL-toimintoihin.

Lausekkeen tyyppi Lukitus otettu
DML
VALIKOIDA Schema-Stability (Sch-S)
INSERTTI Vain aikomus (IX)
POISTAA Vain aikomus (IX)
PÄIVITTÄÄ Vain aikomus (IX)
YHDISTÄÄ Vain aikomus (IX)
KOPIOI - Vain aikomus (IX)
DDL
LUO TAULUKKO Schema-Modification (Sch-M)
MUUTA TAULUKKOA Schema-Modification (Sch-M)
PUDOTA TAULUKKO Schema-Modification (Sch-M)
TRUNCATE PÖYTÄ Schema-Modification (Sch-M)
LUO TAULUKKO VALITTUNA Schema-Modification (Sch-M)
LUO TAULUKKO KLOONIKSI Schema-Modification (Sch-M)

Voit käyttää dynaamisen hallintanäkymän (DMV) sys.dm_tran_locks kyselylukkoja.

Lisätietoja lukituksista, lukon eskaloinnista ja lukkojen yhteensopivuudesta on kohdassa Tapahtumien lukitus ja rivien versiointiopas.

Tilannekuvan eristäminen

Fabric Data Warehouse valvoo snapshot-eristystä kaikissa tapahtumissa. Tilannevedoksen eristys on rivipohjainen eristystaso, joka tarjoaa tapahtumatason yhdenmukaisuuden tiedoille ja käyttää tallennettuja tempdb riviversioita päivitettävien rivien valitsemiseen. Tapahtuma käyttää datariviversioita, jotka ovat olemassa tapahtuman alkaessa. Näin varmistetaan, että jokainen tapahtuma toimii johdonmukaisella tilannevedoksella tiedoista sellaisina kuin ne olivat tapahtuman alussa.

Tilannevedoksen eristyksessä tapahtuman kyselyt näkevät saman version tai tilannevedoksen tietokannan tilan perusteella, kun tapahtuma alkaa. Tilannevedoksen eristyksessä tietoja muokkaavat tapahtumat eivät estä tietoja lukevia tapahtumia ja tietoja lukevat tapahtumat eivät estä tietoja kirjoittavia tapahtumia. Tämä optimistinen, estämätön käyttäytyminen vähentää merkittävästi myös monimutkaisten transaktioiden umpikujien todennäköisyyttä.

Jos käytät T-SQL:ää eristystason muuttamiseen, muutos ohitetaan kyselyn suoritushetkellä ja tilannevedoksen eristys otetaan käyttöön.

Snapshot-eristyksessä kirjoitus-kirjoitus- tai päivitysristiriidat ovat mahdollisia, lisätietoja löytyy osoitteesta Ymmärrä kirjoitus-kirjoitus-ristiriidat Fabric Data Warehouse.

Skeeman lukitukset

Rakennelukot estävät DDL-lauseiden ristiriidat, kuten taulukon rakenteen muuttamisen, kun tapahtuman rivejä päivitetään. Huomaa, että DDL-toiminnot, kuten rakenteen muutokset ja siirrot, voivat estää aktiiviset lukukuormitukset tai estää ne.

  • Tietojen määrittelykielen (DDL) operaatioiden aikana Database Engine käyttää skeemamuokkauslukkoja (Sch-M). Lukko estää samanaikaisen pääsyn pöydälle, Sch-M kunnes lukko vapautetaan.
  • Tietojen käsittelykielen (DML) operaatioissa Database Engine käyttää skeeman vakauslukkojen (Sch-S) lukkoja. Lukot estävät lukkoja hankkivat Sch-M toiminnot Sch-S . Muiden tapahtumien suorittaminen jatkuu kyselyn kääntämisen aikana, mutta DDL-toiminnot estetään, kunnes ne voivat saada rakenteen yksinomaisen käyttöoikeuden.
  • DDL-toiminnot saavat myös yksinomaisen (X) lukituksen järjestelmänäkymien, kuten kohdetaulukon kaltaisissa sys.tables ja siihen sys.objects liittyvissä riveissä, tapahtuman ajaksi. Tämä estää samanaikaiset SELECT lausekkeet ja sys.tables .sys.objects

Parhaat käytännöt estämisen välttämiseksi

  • Vältä pitkäkestoisia tapahtumia tai ajoita ajanjaksoille, jolloin samanaikaista toimintaa on vähäistä tai ei ollenkaan.
  • Ajoita DDL-toiminnot vain huoltoikkunoiden aikana tukkeutumisen minimoimiseksi.
  • Vaikka DDL-lauseita voidaan suorittaa eksplisiittisten käyttäjätransaktioiden sisällä (BEGIN TRAN), niitä tulee käyttää varovaisesti samanaikaisissa työkuormissa. Lukituskäyttäytymisen vuoksi transaktion DDL voi estää samanaikaiset DML- tai SELECT-toiminnot kyseisissä taulukoissa sekä SELECT-kyselyt järjestelmäkataloginäkymissä kuten sys.tables tai sys.objects. Voit seurata ja vianratkaista mahdollisia lukitusristiriitoja käyttämällä sys.dm_tran_locks.
  • Valvo varaston lukkoja ja ristiriitoja.

Ymmärrä kirjoitus- ja kirjoitusristiriidat Fabric Data Warehouse

Kirjoitus- ja kirjoitusristiriitoja voi ilmetä, kun kaksi tapahtumaa yrittää UPDATE, DELETE, tai MERGETRUNCATE samaa taulukkoa.

Kirjoitus- ja kirjoitusristiriidat tai päivitysristiriidat ovat mahdollisia taulukkotasolla, koska Fabric Data Warehouse käyttää taulukkotason lukitusta. Jos kaksi tapahtumaa yrittää muokata saman taulukon eri rivejä, ne voivat silti olla ristiriidassa.

Kirjoitus- ja kirjoitusristiriidat johtuvat useimmiten kahdesta skenaariosta:

  • Käyttäjän aiheuttamat kuormitusristiriidat
    • Useat käyttäjät tai prosessit muokkaavat samaa taulukkoa samanaikaisesti.
    • Voi tapahtua ETL-putkissa, eräpäivityksissä tai päällekkäisissä tapahtumissa.
  • Järjestelmän aiheuttamat konfliktit
    • Taustajärjestelmän tehtävät, kuten automaattinen tietojen tiivistäminen, kirjoittavat tiedostot huonolaatuisiksi.
    • Nämä voivat olla ristiriidassa käyttäjätapahtumien kanssa, vaikka tietojen tiivistämisen ennaltaehkäisy estää aktiivisesti tämäntyyppiset kirjoitus- ja kirjoitusristiriidat.

Jos kirjoitus- ja kirjoitusristiriita ilmenee, saatat nähdä virhesanomia, kuten:

  • Virhe 24556: Tilannekuvan eristystapahtuma keskeytettiin päivitysristiriidan vuoksi. Tilannevedoksen eristäminen taulukon '%.*ls' käyttämiseen suoraan tai epäsuorasti tietokannassa '%.*ls' voi aiheuttaa päivitysristiriitoja, jos kyseisen taulukon rivit on poistettu tai päivitetty toisella samanaikaisella tapahtumalla. Yritä tapahtumaa uudelleen.
  • Virhe 24706: Tilannevedoksen eristystapahtuma keskeytettiin päivitysristiriidan vuoksi. Tilannevedoksen eristämisen avulla et voi käyttää taulukkoa '%.*ls' suoraan tai epäsuorasti tietokannassa '%.*ls' päivittääksesi, poistaaksesi tai lisätäksesi rivin, jota toinen tapahtuma on muokannut tai poistanut. Yritä tapahtumaa uudelleen.

Jos saat nämä virhesanomat, yksi tai useampi tapahtuma onnistui ja yksi tai useampi ristiriitainen tapahtuma epäonnistui. Yritä epäonnistuneita tapahtumia uudelleen.

Note

Vaikka MERGE tapahtumat johtaisivat vain liittämismuutoksiin, ne luovat silti kirjoitus- ja kirjoitusristiriidan. Kun MERGE tapahtuma vaikuttaa eri riveihin kuin muut samanaikaiset DML-tapahtumat, se voi kohdata tämän virheen, jos MERGE se ei ole ensimmäinen tapahtuma, joka toimitetaan: "Tilannevedoksen eristystapahtuma keskeytettiin päivitysristiriidan vuoksi."

Parhaat käytännöt kirjoitus- ja kirjoitusristiriitojen välttämiseksi

Kirjoitus- ja kirjoitusristiriitojen välttäminen:

  • Vältä samanaikaisia UPDATE, DELETE- MERGE toimintoja samassa taulukossa.
    • Kiinnitä erityistä huomiota UPDATE, DELETE, MERGE toimintoihin monivaiheisissa tapahtumissa.
  • Käytä uudelleenyrityslogiikkaa kaikissa sovelluksissa ja kyselyissä.
    • Ota käyttöön uudelleenyrityslogiikka tallennetuissa toimintosarjoissa ja ETL-putkissa.
    • Lisää uudelleenyrityslogiikka, jossa on viive putkissa tai sovelluksissa tilapäisten ristiriitojen käsittelemiseksi.
      • Käytä eksponentiaalista peruutusta välttääksesi uudelleenyritysmyrskyt, jotka pahentavat ohimeneviä verkkokatkoksia. Lisätietoja on kohdassa Yritä kuvio uudelleen.
  • Kirjoitus-kirjoitus-ristiriidat Fabric Data Warehouse taustatietojen tiivistämispalvelun kanssa ovat mahdollisia, mutta ne estetään tyypillisesti Data compaction preemption -ominaisuudella.

Pöytä- ja parkettitiedostojen esto

Ristiriidat kahdesta tai useammasta samanaikaisesta tapahtumasta, jotka päivittävät yhden tai useamman taulukon rivin, arvioidaan tapahtuman lopussa. Ensimmäinen vahvistustapahtuma on suoritettu onnistuneesti, ja muut tapahtumat peruutetaan, ja palautettu virhe. Nämä ristiriidat arvioidaan taulukkotasolla yksittäisen jäsennystiedoston tason sijasta.

INSERT-lausekkeet luovat aina uusia parquet-tiedostoja, mikä tarkoittaa vähemmän ristiriitoja muiden tapahtumien kanssa lukuun ottamatta DDL:ää, koska taulukon rakenne voi muuttua.

Rajoitukset

  • Hajautettuja tapahtumia ei tueta, esimerkiksi BEGIN DISTRIBUTED TRANSACTION.
  • Tallennuspisteitä ei tueta.
  • Nimettyjä tapahtumia ei tueta.
  • Merkittyjä tapahtumia ei tueta.
  • Tällä hetkellä varastossa on rajoitettua T-SQL-toiminnallisuutta. Katso T-SQL-pinta-ala Fabric Data Warehouse lista T-SQL-komennoista, joita ei tällä hetkellä ole saatavilla.
  • Jos tapahtumassa on tietojen lisääminen tyhjään taulukkoon ja select-funktio lisätään ennen kuin se peruutetaan, automaattisesti luodut tilastotiedot voivat silti heijastaa sitomattomia tietoja, mikä aiheuttaa virheellisiä tilastoja. Virheelliset tilastot voivat johtaa optimoimattomaan kyselysuunnitelmiin ja suoritusaikoihin. Jos peruutat SELECTs-tapahtuman suuren LISÄYStoiminnon jälkeen, päivitä SELECT-funktiossa mainittujen sarakkeiden tilastotiedot .
  • Kysy SQL-analytiikan päätepisteestä tai Warehousesta Microsoft Fabric
  • Taulukot