Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
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 TABLEDROP TABLETRUNCATE TABLECTASsp_rename-
ALTER TABLElisää nollattavia sarakkeita -
ALTER TABLEPudotussarakkeet -
ALTER TABLElisää tai pudotaPRIMARY KEY,UNIQUE, jaFOREIGN KEYrajoitteet avainsanallaNOT ENFORCED - Useita väitteitä
ALTER TABLE -
ALTER TABLEHajautetuilla 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
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-Mkunnes lukko vapautetaan. - Tietojen käsittelykielen (DML) operaatioissa Database Engine käyttää skeeman vakauslukkojen (
Sch-S) lukkoja. Lukot estävät lukkoja hankkivatSch-MtoiminnotSch-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 kaltaisissasys.tablesja siihensys.objectsliittyvissä riveissä, tapahtuman ajaksi. Tämä estää samanaikaisetSELECTlausekkeet jasys.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ä kutensys.tablestaisys.objects. Voit seurata ja vianratkaista mahdollisia lukitusristiriitoja käyttämälläsys.dm_tran_locks. - Valvo varaston lukkoja ja ristiriitoja.
- Käytä sys.dm_tran_locks nykyisten lukkojen tarkastamiseen.
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-MERGEtoimintoja samassa taulukossa.- Kiinnitä erityistä huomiota
UPDATE,DELETE,MERGEtoimintoihin monivaiheisissa tapahtumissa.
- Kiinnitä erityistä huomiota
- 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 .
Liittyvä sisältö
Kysy SQL-analytiikan päätepisteestä tai Warehousesta Microsoft Fabric - Taulukot