Del via


Justere størrelsen på Delta-tabelldatafiler

Filer med passende størrelse er viktige for spørringsytelse, ressursutnyttelse og metadatabehandling. Mindre filer øker oppgavekostnadene og metadataoperasjonene, mens større filer kan underutnytte parallellitet og forvrenge I/O. Delta Lake bruker filmetadata for partisjonsbeskjæring og datahopping, så målretting av riktig filstørrelse sikrer effektiv lesing, skriving og vedlikehold.

For anbefalinger om filstørrelse etter forbruksscenario (SQL Analytics Endpoint, Power BI Direct Lake, Spark), se Cross-workload table maintenance and optimization.

De følgende seksjonene beskriver hovedfunksjonene du kan bruke for å justere filstørrelsen i Delta-tabeller.

Operasjoner for justerbart dataoppsett

Optimaliser

Kommandoen OPTIMIZE skriver om små filer som større filer for å forbedre oppsettet av data i Delta-tabeller. Hvis du vil ha mer informasjon, inkludert informasjon om justering av filstørrelse, kan du se dokumentasjonen for OPTIMIZE-kommandoen .

Automatisk komprimering

Automatisk komprimering evaluerer automatisk partisjonstilstanden etter hver skriveoperasjon. Når den oppdager overdreven filfragmentering (for mange små filer) i en partisjon, utløser den en synkron OPTIMIZE operasjon umiddelbart etter at skrivingen er utført. Denne forfatterdrevne tilnærmingen til filvedlikehold er generelt optimal fordi komprimering bare utføres når det er programmatisk fastslått å være fordelaktig. Hvis du vil ha detaljerte konfigurasjonsalternativer og tilleggsinformasjon, kan du se dokumentasjonen for automatisk komprimering .

Optimaliser skriving

Optimaliser skriving reduserer kostnadene ved små filer ved å utføre komprimering før skriving (bin packing), som genererer færre, større filer. Denne tilnærmingen blander data i minnet til hyller med optimal størrelse før Spark skriver Parquet-filene, noe som maksimerer potensialet for å generere filer i riktig størrelse uten å kreve umiddelbare oppryddingsoperasjoner etter skriving.

Bruk optimaliser, skriv selektivt. Stokking kan legge til unødvendig prosesseringstid i noen skrivestier. Optimalisering av skriving er mest fordelaktig når skriving ellers ville skapt mange små filer som senere krever komprimering.

Skjermbilde som viser hvordan optimalisering av skriving resulterer i færre filer som skrives.

Optimaliser skriving er ofte fordelaktig for:

  • Partisjonerte tabeller
  • Bord med hyppige små innsatser
  • Operasjoner som sannsynligvis vil berøre mange filer (MERGE, UPDATE, og DELETE)

For selektiv anvendelse på bestemte tabeller opphever du sesjonskonfigurasjonen og aktiverer tabellegenskapen enkeltvis. Dette lar hver tabell kontrollere om optimaliseringsskriving brukes.

  1. Fjern optimaliser skriving

    spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")
    
  2. Aktiver på enkeltbord

    ALTER TABLE dbo.table_name
    SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
    

For å aktivere optimalisering av skriving til alle partisjonerte tabeller i en Spark-økt, sørg for at sesjonskonfigurasjonen er fjernet, og sett spark.microsoft.delta.optimizeWrite.partitioned.enabledderetter :

SET spark.microsoft.delta.optimizeWrite.partitioned.enabled = TRUE

Målfilstørrelsen som genereres fra optimalisert skriving kan justeres via konfigurasjonen spark.databricks.delta.optimizeWrite.binSize .

Note

Se ressursprofiler for standard innstillinger for optimalisering av skriving etter ressursprofil.

Sett målfilstørrelsen konsekvent

For å unngå å sette separate minimums- og maksimumsfilstørrelser for økt for optimalisering, automatisk komprimering og optimalisering av skriving, bruk delta.targetFileSize tabellegenskapen. Denne egenskapen forener filstørrelsesoppførsel på tabellnivå. Spesifiser verdien som en bytestreng (for eksempel 1073741824b, 1048576k, , 1024m, 1g). Når den er satt, har den forrang over sesjonskonfigurasjoner og adaptiv målfilstørrelse.

ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')

Adaptiv målfilstørrelse

Microsoft Fabric gir adaptiv målfilstørrelse for å eliminere kompleksiteten knyttet til manuell justering av målfilstørrelsen på alle tabeller i en økt eller individuelle tabeller via delta.targetFileSize tabellegenskapen. Adaptiv målfilstørrelse bruker Delta-tabellheuristikk som tabellstørrelse for å estimere den ideelle målfilstørrelsen og oppdaterer målet automatisk etter hvert som forholdene endres, noe som sikrer optimal ytelse uten manuell inngripen eller vedlikeholdskostnader.

Aktiver adaptiv målfilstørrelse

Note

Selv om det for øyeblikket ikke er aktivert som standard, anbefaler Microsoft at du aktiverer øktkonfigurasjonen for adaptiv målfilstørrelse .

Aktiver adaptiv målfilstørrelse på tabeller som er opprettet eller endret i en Spark-økt ved å angi følgende Spark-øktkonfigurasjon:

SET spark.microsoft.delta.targetFileSize.adaptive.enabled = TRUE

Forstå evalueringsatferd

Når den er aktivert, evalueres og angis den adaptive målfilstørrelsen i følgende scenarioer:

  • CREATE TABLE AS SELECT og CREATE OR REPLACE TABLE AS SELECT drift
  • Overskrive skriver (for eksempel DataFrame.write.mode("overwrite") eller INSERT OVERWRITE)
  • Skriver i ErrorIfExists, Appendeller Ignore modus når du oppretter en ny tabell
  • På begynnelsen av kommandoen OPTIMIZE

Når den ideelle størrelsen er angitt, fortsetter den å evalueres på nytt ved starten av hver OPTIMIZE operasjon for å sikre at gjeldende heuristikk gjenspeiler den nyeste datadistribusjonen og tabellveksten. Denne adaptive tilnærmingen oppdaterer automatisk målfilstørrelsen over tid, noe som fjerner behovet for manuell justering samtidig som spørrings- og skriveytelsen bevares etter hvert som dataene vokser. Når du trenger å låse inn en bestemt størrelse, for eksempel i hyperjustering eller testing av brukstilfeller, kan du overstyre den adaptive innstillingen ved å eksplisitt angi den brukerdefinerte delta.targetFileSize tabellegenskapen.

Juster adaptive målfilstørrelsesgrenser

Adaptiv målfilstørrelse kan konfigureres ytterligere via følgende Spark-øktkonfigurasjoner:

Eiendom Beskrivelse Standardverdi Konfigurasjon av økt
minFileSize Angir minimum filstørrelse (nedre grense) som en bytestreng som adaptiv målfilstørrelse bruker når den evalueres. Må være mellom 128 MB og 1 GB. 128 millioner spark.microsoft.delta.targetFileSize.adaptive.minFileSize
maxFileSize Angir maksimal filstørrelse (øvre grense) som en bytestreng som adaptiv målfilstørrelse bruker når den evalueres. Må være mellom 128 MB og 1 GB. 1024m spark.microsoft.delta.targetFileSize.adaptive.maxFileSize
stopAtMaxSize Når true, stopper ytterligere størrelsesevalueringer når den beregnede målfilstørrelsen når maxFileSize, noe som reduserer eventuelle evalueringskostnader på svært store tabeller. sann spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize

Note

Når stopAtMaxSize den er aktivert (standard), forblir den adaptive målstørrelsen fast på maksimumsverdien når den er nådd, og unngår ekstra beregninger. Hvis tabellene dine kan krympe etter å ha vokst, setter du denne egenskapen til false for å tillate ny beregning under maksimumsterskelen.

Inspekter vurdert målstørrelse

Du kan revidere den evaluerte adaptive målfilstørrelsen ved å inspisere tabelldetaljer og egenskaper fra DESCRIBE DETAIL eller DESCRIBE EXTENDED. Den evaluerte verdien skrives som en bytestreng i tabellegenskapen delta.targetFileSize.adaptive .

Denne verdien brukes som mål- (eller maks-) størrelse for optimalisering, automatisk komprimering og optimalisering av skriving. Den tilhørende minimumsverdien beregnes som halvparten av delta.targetFileSize.adaptive.

Forstå ytelsespåvirkning

Diagrammet nedenfor illustrerer forholdet mellom tabellstørrelse og den optimale parkettfilstørrelsen. For tabeller under 10 GB evaluerer Fabric Spark-kjøretid målfilstørrelsen til å være 128 MB. Etter hvert som tabellstørrelsen vokser, skaleres målfilstørrelsen lineært og når opptil 1 GB for tabeller som overskrider 10 TB.

Diagram som illustrerer forholdet mellom tabellstørrelse og optimal parkettfilstørrelse.

Å starte i det små på 128 MB og deretter skalere størrelsen på parkettfiler etter hvert som en tabell vokser i størrelse, har gjennomgripende fordeler:

  • Forbedret Delta-filhopping: Filer i riktig størrelse støtter optimal dataklynging og hopping, slik at Deltas filhoppprotokoll kan eliminere flere irrelevante filer under spørringskjøring. En liten tabell med 128 MB filer i stedet for 1 GB filer muliggjør 8 ganger mer mulig filhopping.

  • Reduserte oppdateringskostnader: MERGE og UPDATE operasjoner omskriver bare berørte filer. Filer i riktig størrelse minimerer antall filer som berøres per operasjon, noe som reduserer mengden data som skrives om. Når Deletion Vectors er aktivert, blir riktig filstørrelse avgjørende: Gravsteiner på radnivå i overdimensjonerte filer resulterer i betydelige oppryddingskostnader under komprimerings- eller tømmingsoperasjoner.

  • Optimalisert parallellitet: Filer i riktig størrelse gjør det mulig for Spark å oppnå ideell oppgaveparallellitet. For mange små filer overvelder planleggeren; for få store filer underutnytter Spark-utvalget. Optimal størrelse maksimerer både lese- og skrivegjennomstrømming.

Adaptiv målfilstørrelse kan forbedre komprimeringsytelsen og spørrings-/skriveforsinkelsen når den velger en bedre størrelse enn standardkonfigurasjonen. Hvis adaptiv evaluering gir samme størrelse som standard Spark-sesjonskonfigurasjon, forventes ingen målbar forbedring.

Viktig!

Skriveforsterkning oppstår når tidligere komprimerte filer skrives om etter hvert som målfilstørrelsen øker over tid. For å redusere denne risikoen, aktiver filnivå-komprimeringsmål (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true). Denne innstillingen hjelper til med å bevare tidligere komprimeringsarbeid ved å hoppe over unødvendig omkompostering av filer som allerede var komprimert under tidligere målstørrelser. For mer informasjon, se filnivå-kompakteringsmål.

Sammendrag av anbefalte fremgangsmåter

Bruk disse anbefalingene for å balansere skrivekostnader, leseytelse og vedlikeholdsoverhead etter hvert som tabellene vokser.

  • Aktiver automatisk komprimering for inntasting pipelines med hyppige små skrivinger (strømming eller mikrobatch) slik at filhelsen opprettholdes uten manuell planlegging.
  • Bruk automatisk komprimering selektivt for andre skrivemønstre når dine servicenivåmål tåler sporadiske topper i skrive-latens.
  • Slå til adaptiv filstørrelse for mål for å redusere manuell justering og holde målstørrelser tilpasset tabellvekst.
  • Bruk Optimize write i kontrollerte inntastingsstier (batchjobber som tåler stokking, partisjonerte skrivinger eller hyppige små skrivinger) for å redusere komprimeringspresset nedstrøms.
  • Planlegg full tabell OPTIMIZE under stille vinduer når du må skrive om mange partisjoner eller bruke Z-Order.
  • Aktiver rask optimalisering for å redusere skriveforsterkning og lage OPTIMIZE mer idempotent. Se rask optimalisering.
  • Bruk delta.targetFileSize eller adaptiv målfilstørrelse konsekvent for å optimalisere, autokomprimere og optimalisere skrivefilstørrelser konvergerer mot kompatible filstørrelsesmål.
  • Slå til filnivå-komprimeringsmål for å redusere unødvendig omkompresjon etter hvert som målfilstørrelser øker over tid.