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.
Delta-taulukon tiedostot hajoavat ajan myötä. Fragmentaatio lisää tiedostotoiminnan ylikuormitusta, heikentää pakkaustehokkuutta ja voi rajoittaa lukijan rinnakkaisuutta. Pakkaus kirjoittaa monia pieniä tiedostoja uudelleen harvemmiksi, oikean kokoisiksi tiedostoiksi, jotta Spark voi lukea ja käsitellä dataa tehokkaammin.
Komento OPTIMIZE on ensisijainen tiivistymisoperaatio. Se ryhmittelee pienet tiedostot bineihin, jotka tähtäävät ihanteelliseen tiedostokokoon, ja kirjoittaa ne sitten uudelleen storage-tilaan.
Ristintyökuorman ohjausta tiivistämisstrategioista SQL Analytics Endpointissa, Power BI Direct Lakessa ja Sparkissa löytyy kohdasta Cross-workload table maintenance and optimization.
Tiivistysmenetelmät
Microsoft Fabric tarjoaa useita tapoja ylläpitää optimaalisia tiedostokokoja Delta-taulukoissa:
OPTIMIZE komento
Komento OPTIMIZE on Delta-taulukoiden tiivistämisen perustoiminto. Se kirjoittaa pienet tiedostot uudelleen suuremmiksi tiedostoiksi parantaakseen Delta-taulukoiden tietojen asettelua.
| Ominaisuus | Kuvaus | Oletusarvo | Istunnon määritys |
|---|---|---|---|
| minFileSize | Tätä raja-arvoa pienemmät tiedostot ryhmitellään yhteen ja kirjoitetaan uudelleen suuremmiksi tiedostoiksi. | 1073741824 (1g) | spark.databricks.delta.optimize.minFileSize |
| maxFileSize | Komennon tuottama OPTIMIZE kohdetiedoston koko. |
1073741824 (1g) | spark.databricks.delta.optimize.maxFileSize |
OPTIMIZE on idempotentti, mutta ylisuurikokoinen minFileSize voi lisätä kirjoitusvahvistusta. Esimerkiksi, kun minFileSize tiedosto on asetettu 1 GB:ksi, 900 MB tiedosto voidaan kirjoittaa uudelleen pienen lisäkirjoituksen jälkeen. Automaattisen tiedostokoon hallinnan ohjeita löytyy kohdasta adaptiivinen kohdetiedoston koko.
OPTIMIZE Z-Orderilla
Kun käytät lauseketta ZORDER BY , OPTIMIZE aktiiviset tiedostot kirjoitetaan uudelleen niin, että samanarvoiset rivit ovat samassa tiedostossa. Tämä parantaa tiedostojen ohittamista valikoivissa suodattimissa. Käytä Z-Orderia, kun:
- Kyselyt suodattavat usein kahta tai useampaa saraketta yhdessä (esimerkiksi päivämäärä + customer_id) ja
- Nämä predikaatit ovat riittävän valikoivia, jotta tiedostotason ohittaminen vähentää tarkistettujen tiedostojen määrää.
OPTIMIZE dbo.table_name ZORDER BY (column1, column2)
OPTIMIZE V-Orderilla
Lauseke VORDER johtaa siihen, että tiivistämiseen tarkoitetuissa tiedostoissa käytetään V-Order-optimointia. Lisätietoja V-Orderista on yksityiskohtaisessa dokumentaatiossa.
OPTIMIZE dbo.table_name VORDER
OPTIMIZE Nesteklusterointi
Nesteklusterointi on määritetty taulukkovaihtoehtona; Katso lisätietoja kohdasta Liquid-klusteroinnin ottaminen käyttöön . Kun liquid-klusterointi on käytössä, OPTIMIZE suorittaa fyysisen uudelleenkirjoituksen, joka käyttää klusterointikäytäntöä.
Tärkeää
Tiedot klusteroidaan vain, kun OPTIMIZE ne suoritetaan Liquid-klusteroiduissa taulukoissa. Tavalliset kirjoitustoiminnot EIVÄT klusteroi tietoja. Tiivistysstrategia, kuten automaattisen tiivistyksen käyttäminen tai optimointitöiden manuaalinen ajoittaminen, on ratkaisevan tärkeää, jotta klusteroitujen tietojen edut (eli parannettu Delta-tiedostojen ohittaminen) voidaan toteuttaa.
Nopea optimointi
Nopea optimointi analysoi älykkäästi Delta-taulukkotiedostoja ja ohittaa tiivistystoiminnot, jotka eivät todennäköisesti paranna suorituskykyä merkittävästi.
Sen sijaan, että tiedostoja tiivistettäisiin sokeasti aina, kun pieniä tiedostoja on olemassa, nopea optimointi arvioi, täyttääkö kukin ehdokaslokero (pienten tiedostojen ryhmä) määritettävissä olevat parhaiden käytäntöjen tiivistystavoitteet. Fast Optimize suorittaa tiivistämisen tiedostovarastossa vain, jos niiden yhdistäminen todennäköisesti saavuttaa vähimmäistavoitekoon tai jos pieniä tiedostoja on liikaa. Muussa tapauksessa se ohittaa kyseisen ryhmän tai vähentää tiivistämiensä tiedostojen määrää.
Nopeaa optimointia voidaan hienosäätää tiivistysodotusten perusteella:
| Ominaisuus | Kuvaus | Oletusarvo | Istunnon määritys |
|---|---|---|---|
| minNumFiles | Niiden pienten tiedostojen määrä, joiden on oltava varastopaikassa, jotta optimointi voidaan suorittaa, jos varastopaikka ei sisällä tarpeeksi tietoja, joiden on arvioitu tuottavan tiivistetyn tiedoston tuottamiseksi. | 50 | spark.microsoft.delta.optimize.fast.minNumFiles |
| parkettiKerroin | Kerrottuna optimoi kontekstin vähimmäistiedostokoko, jotta voidaan määrittää pienten tiedostotietojen vähimmäismäärä, jonka varastopaikassa on oltava, jotta varastopaikka voidaan sisällyttää tiivistämisen piiriin. | 1.3 | spark.microsoft.delta.optimize.fast.parquetKerroin |
Note
Tuloksena parquetCoefficient on, että varastopaikan kohdekoko on suurempi kuin optimointikontekstin kohdetiedoston vähimmäiskoko. Tämä kerroin selittää sen tosiasian, että useiden pienten parquet-tiedostojen yhdistäminen johtaa parempaan pakkaukseen ja siten vähemmän dataa kuin pienten tiedostojen summa. Tätä arvoa voidaan suurentaa varovaisemmaksi sen suhteen, kuinka usein nopea optimointi ohittaa varastopaikat, tai pienentää, jotta varastopaikkojen ohittaminen sallitaan sallivammin.
Miten se toimii
Nopea optimointi ottaa käyttöön ylimääräisiä tarkistuksia ennen varastopaikkojen tiivistämistä. Nopea optimointi arvioi kullekin ehdokaslokerolle:
- Varastopaikassa olevan raakadatan arvioitu määrä (pienten tiedostokokojen summa)
- Onko pienten tiedostojen yhdistämisen arvioitu tuottavan tiedoston, joka täyttää määritetyn vähimmäistavoitekoon
- Sisältääkö varastopaikka vähintään määritetyn vähimmäismäärän pieniä tiedostoja
Nopea optimointi arvioi pienten tiedostojen jokaisen lokeron ja tiivistää vain ne pienet tiedostot, jotka todennäköisesti saavuttavat vähimmäistavoitekoon tai ylittävät tiedostojen vähimmäismäärän. Varastopaikat, jotka eivät täytä näitä raja-arvoja, ohitetaan tai tiivistetään osittain. Epäoptimaalisten lokeroiden ohittaminen vähentää tarpeettomia uudelleenkirjoituksia, vähentää kirjoitusvahvistusta ja tekee OPTIMIZE-töistä idempotentimpia.
Note
Tarkka toteutus voi kehittyä ajan myötä.
Nopea optimointi voi vähentää uudelleenkirjoitettua dataa Delta-taulun elinkaaren aikana. Kuten seuraavassa kaaviossa näkyy, nopea optimointi ohittaa suboptimaaliset binit, mikä johtaa nopeampiin ja idempotenttimpiin OPTIMIZE töihin, joissa on vähemmän kirjoitusvahvistusta.
Note
Yllä olevissa kaavioissa oletetaan, että tiivistämällä kirjoitetun tiedoston koko on pienten tiedostojen koon summa. Se tarkoittaa myös 1:tä parquetCoefficient .
Rajoitukset
- Ei koske liquid-klusterointia ja Z-Order-toimintoja
- Nopea optimointi ei muuta automaattisen tiivistämisen toimintaa
Tiedostotason tiivistyskohteet
Jos haluat välttää aiemmin pakatuina (riittävän suurina) pidettyjen tietojen uudelleenkirjoittamisen tiedostojen vähimmäis- ja enimmäiskokokohteiden muuttamisen perusteella, spark.microsoft.delta.optimize.fileLevelTarget.enabled voit ottaa käyttöön jo tiivistettyjen tiedostojen uudelleentiivistämisen estämiseksi. Kun tämä on käytössä, tiedostoja ei pakkaa uudelleen, jos ne ovat aiemmin täyttäneet vähintään puolet kohdetiedoston koosta tiivistyshetkellä. Tiedostotason tavoitteiden ylläpito minimoi kirjoitusvahvistuksen, kun tiivistyskohteen koko muuttuu ajan myötä (esimerkiksi adaptiivisen kohdetiedoston koon arvioinnin ja suuremman kohteen asettamisen myötä). Jos tämä on käytössä, tunniste lisätään uusiin tiedostoihin, kun OPTIMIZE suoritetaan, tai mihin tahansa kirjoitustoimintoon, OPTIMIZE_TARGET_SIZE jos delta.targetFileSize tai delta.targetFileSize.adaptive table-ominaisuus on määritetty.
Note
Vaikka se ei ole oletusarvoisesti käytössä, Microsoft suosittelee tiedostotason tiivistyskohteiden käyttöönottoa mahdollisen kirjoitusvahvistuksen rajoittamiseksi.
Automaattinen tiivistys
Automaattinen tiivistys arvioi osion kunnon jokaisen kirjoitustoiminnon jälkeen. Kun se havaitsee liiallisen tiedoston pirstoutumisen (liian monta pientä tiedostoa) osiossa, se käynnistää synkronisen OPTIMIZE toiminnon heti kirjoituksen suorittamisen jälkeen. Tämä kirjoittajalähtöinen lähestymistapa tiedostojen ylläpitoon on optimaalinen, koska tiivistys suoritetaan vain, kun se on ohjelmallisesti todettu hyödylliseksi.
Ota käyttöön istuntotasolla
Aseta spark.databricks.delta.autoCompact.enabled istuntotasolle automaattinen tiivistäminen uusille Spark-istunnossa luoduille tauluille:
Ota käyttöön taulukkotasolla
Aseta tauluominaisuus delta.autoOptimize.autoCompact automaattisen tiivistymisen mahdollistamiseksi tietyille tauluille:
CREATE TABLE dbo.table_name
TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
Käytä DataFrameWriter-vaihtoehtoa delta.autoOptimize.autoCompact automaattisen tiivistämisen ottamiseen käyttöön taulua luodessa:
df.write.option('delta.autoOptimize.autoCompact', 'true').saveAsTable('dbo.table_name')
Ota sama tauluominaisuus käyttöön olemassa olevassa taulukossa:
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
Säädä automaattinen tiivistymiskynnysarvot
Säädä automaattinen tiivistymiskäyttäytyminen asettamalla nämä Spark-istuntoasetukset:
| Ominaisuus | Kuvaus | Oletusarvo | Istunnon määritys |
|---|---|---|---|
| maxFileSize | Tiivistettyjen tiedostojen enimmäistiedostokoko tavuina. | 134217728b (128 Mt) | spark.databricks.delta.autoCompact.maxFileSize |
| minFileSize | Tiedoston vähimmäiskoko tavuina, jotta tiedosto katsotaan pakatuksi. Kaikki tämän kynnyksen alapuolella olevat lasketaan tiivistymiseen ja lasketaan mukaan kynnysarvoon minNumFiles . |
Oletusarvoisesti määrittämätön , lasketaan 1/2 arvosta, maxFileSize ellet määritä arvoa eksplisiittisesti. |
spark.databricks.delta.autoCompact.minFileSize |
| minNumFiles | Tiedostojen vähimmäismäärä, jonka on oltava kynnysarvon alapuolella, minFileSize jotta automaattinen tiivistys käynnistyy. |
50 | spark.databricks.delta.autoCompact.minNumFiles |
Valitse automaattisen tiivistymisen ja aikataulutetun OPTIMoinnin välillä
Microsoft suosittelee automaattista tiivistymistä oletusstrategiana useimmissa syöttökuormissa. Se yleensä ylittää kiinteät aikataulut ja vähentää töiden ylläpidon OPTIMIZE operatiivista kuormitusta.
Jos viivetavoitteesi ovat tiukat, erilliselle Spark-poolille ajoittaminen OPTIMIZE voi olla parempi ratkaisu, koska automaattinen tiivistyminen tapahtuu synkronisesti kirjoitusten jälkeen.
Käytä tiivistämistä yhdessä pienten tiedostojen estotoimintojen, kuten kirjoituksen optimoinnin, kanssa. Ohjeeksi katso Optimoi kirjoitus.
Lakehouse-taulukoiden ylläpito
Voit suorittaa ad hoc -huoltotoimintoja, kuten OPTIMIZE Lakehouse Explorerista. Lisätietoja löytyy kohdasta Lakehouse-pöydän ylläpito.
Yhteenveto parhaista käytännöistä
Käytä näitä suosituksia tasapainottamaan kirjoituskustannusta, lukusuorituskykyä ja ylläpitokuormaa Delta-taulukon tiivistämisessä.
- Ota automaattinen tiivistys käyttöön vastaanottoon pipelines usein pienillä kirjoituksilla (suoratoisto tai mikroerä) manuaalisen aikataulutuksen vähentämiseksi.
- Käytä automaattista tiivistämistä valikoivasti muille kirjoitusmalleille , kun palvelutason tavoitteesi kestävät ajoittaisia kirjoitusviiveen piikkejä.
-
Aikatauluta koko taulukko
OPTIMIZEhiljaisina ikkunoina , kun sinun täytyy kirjoittaa useita osioita uudelleen tai soveltaa Z-järjestystä. -
Ota nopea optimointi käyttöön vähentääksesi kirjoitusvahvistusta ja tehdäksemme
OPTIMIZEenemmän idempotenttia. - Ota tiedostotason tiivistyskohteet käyttöön vähentääksesi tarpeetonta uudelleenpakkaamista kohdetiedostojen koon kasvaessa ajan myötä.
- Käytä optimoitua kirjoitusta sopivissa syöttöpoluissa , koska esikirjoituspakkaaminen on usein edullisempaa kuin jälkikirjoitus. Ohjeeksi katso Optimoi kirjoitus.