Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
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.
Optimaliser skriving er ofte fordelaktig for:
- Partisjonerte tabeller
- Bord med hyppige små innsatser
- Operasjoner som sannsynligvis vil berøre mange filer (
MERGE,UPDATE, ogDELETE)
For selektiv anvendelse på bestemte tabeller opphever du sesjonskonfigurasjonen og aktiverer tabellegenskapen enkeltvis. Dette lar hver tabell kontrollere om optimaliseringsskriving brukes.
Fjern optimaliser skriving
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")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 :
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:
Forstå evalueringsatferd
Når den er aktivert, evalueres og angis den adaptive målfilstørrelsen i følgende scenarioer:
-
CREATE TABLE AS SELECTogCREATE OR REPLACE TABLE AS SELECTdrift - Overskrive skriver (for eksempel
DataFrame.write.mode("overwrite")ellerINSERT OVERWRITE) - Skriver i
ErrorIfExists,AppendellerIgnoremodus 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.
Å 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:
MERGEogUPDATEoperasjoner 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
OPTIMIZEunder stille vinduer når du må skrive om mange partisjoner eller bruke Z-Order. -
Aktiver rask optimalisering for å redusere skriveforsterkning og lage
OPTIMIZEmer idempotent. Se rask optimalisering. -
Bruk
delta.targetFileSizeeller 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.