Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Filer af passende størrelse er vigtige for forespørgselsydeevne, ressourceudnyttelse og metadatastyring. Mindre filer øger opgaveomkostninger og metadataoperationer, mens større filer kan underudnytte parallelitet og skævvride I/O. Delta Lake bruger filmetadata til partitionsbeskæring og dataspring, så målretning af den rigtige filstørrelse sikrer effektiv læsning, skrivning og vedligeholdelse.
For anbefalinger om filstørrelse efter forbrugsscenarie (SQL Analytics Endpoint, Power BI Direct Lake, Spark), se Cross-workload table maintenance and optimization.
De følgende afsnit beskriver de vigtigste funktioner, du kan bruge til at justere filstørrelsen i Delta-tabeller.
Handlinger til justerbart datalayout
Optimer
Kommandoen OPTIMIZE omskriver små filer til større filer for at forbedre layoutet af data i Delta-tabeller. Du kan finde flere oplysninger, herunder oplysninger om justering af filstørrelse, i dokumentationen til kommandoen OPTIMIZE .
Automatisk komprimering
Automatisk komprimering evaluerer automatisk partitionens tilstand efter hver skrivehandling. Når den registrerer overdreven filfragmentering (for mange små filer) i en partition, udløser den en synkron OPTIMIZE handling umiddelbart efter, at skrivningen er begået. Denne forfatterdrevne tilgang til filvedligeholdelse er generelt optimal, fordi komprimering kun udføres, når det er programmatisk bestemt at være gavnligt. Du kan finde detaljerede konfigurationsindstillinger og yderligere oplysninger i dokumentationen til automatisk komprimering .
Optimer skrivning
Optimer skrivning reducerer omkostningerne ved små filer ved at udføre komprimering før skrivning (bin packing), som genererer færre, større filer. Denne fremgangsmåde blander data i hukommelsen til beholdere i optimal størrelse, før Spark skriver Parquet-filerne, hvilket maksimerer potentialet for at generere filer i passende størrelse uden at kræve øjeblikkelige oprydningshandlinger efter skrivning.
Brug selektivt optimer, skriv. Shuffling kan tilføje unødvendig behandlingstid i nogle skrivestier. Optimere skrivning er mest fordelagtig, når skrivninger ellers ville skabe mange små filer, som senere kræver komprimering.
Optimer skrivning er almindeligvis gavnligt for:
- Partitionerede tabeller
- Borde med hyppige små indsatser
- Handlinger, der sandsynligvis vil berøre mange filer (
MERGE,UPDATE, ogDELETE)
Hvis du vil anvende selektivt på bestemte tabeller, skal du fjerne sessionskonfigurationen og aktivere tabelegenskaben individuelt. Dette lader hver tabel kontrollere, om optimeret skrivning anvendes.
Fjern optimer skrivning
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Aktivér på individuel tabel
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
For at aktivere optimering af skrivning til alle partitionerede tabeller i en Spark-session, sikrer du at sessionskonfigurationen er uændret, og sæt spark.microsoft.delta.optimizeWrite.partitioned.enabledderefter :
Målfilstørrelsen genereret fra optimering af skrivning kan justeres via konfigurationen spark.databricks.delta.optimizeWrite.binSize .
Notat
Se ressourceprofiler for standardindstillinger for optimering af skrivning efter ressourceprofil.
Indstil målfilstørrelsen konsekvent
For at undgå at sætte separate minimums- og maksimumsfilstørrelser for sessioner til optimering, automatisk komprimering og optimering af skrivning, brug tabel-egenskaben delta.targetFileSize . Denne egenskab forener filstørrelsesadfærd på tabelniveau. Angiv værdien som en byte-streng (for eksempel 1073741824b, 1048576k, 1024m, ). 1g Når den er sat, har den forrang over sessionskonfigurationer og adaptiv målfilstørrelse.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Adaptiv målfilstørrelse
Microsoft Fabric tilbyder adaptiv målfilstørrelse for at eliminere kompleksiteten ved manuelt at tune målfilstørrelsen for alle tabeller i en session eller individuelle tabeller via delta.targetFileSize tabelegenskaben. Adaptiv målfilstørrelse bruger Delta-tabelheuristik som tabelstørrelse til at estimere den ideelle målfilstørrelse og opdaterer automatisk målet, når forholdene ændres, hvilket sikrer optimal ydeevne uden manuel indgriben eller vedligeholdelsesomkostninger.
Aktivér adaptiv målfilstørrelse
Notat
Selvom det ikke er aktiveret som standard i øjeblikket, anbefaler Microsoft, at du aktiverer sessionskonfigurationen af den adaptive destinationsfilstørrelse .
Aktivér tilpasset destinationsfilstørrelse på tabeller, der er oprettet eller ændret i en Spark-session, ved at angive følgende Spark-sessionskonfiguration:
Forstå evalueringsadfærd
Når den er aktiveret, evalueres og angives den adaptive destinationsfilstørrelse i følgende scenarier:
-
CREATE TABLE AS SELECTogCREATE OR REPLACE TABLE AS SELECTdrift - Overskriv skrivninger (f.eks.
DataFrame.write.mode("overwrite")ellerINSERT OVERWRITE) - Skriver i
ErrorIfExists,AppendellerIgnoretilstand, når du opretter en ny tabel - I starten af kommandoen
OPTIMIZE
Når den ideelle størrelse er indstillet, fortsætter den med at reevaluere i starten af hver OPTIMIZE handling for at sikre, at den aktuelle heuristik afspejler den seneste datadistribution og tabelvækst. Denne adaptive fremgangsmåde opdaterer automatisk destinationsfilstørrelsen over tid, hvilket fjerner behovet for manuel justering, samtidig med at forespørgsels- og skriveydeevnen bevares, efterhånden som dine data vokser. Når du har brug for at låse en bestemt størrelse, f.eks. i hyperjustering eller test af brugssager, kan du tilsidesætte den adaptive indstilling ved eksplicit at angive den brugerdefinerede delta.targetFileSize tabelegenskab.
Juster adaptive målfilstørrelsesgrænser
Adaptiv destinationsfilstørrelse kan konfigureres yderligere via følgende Spark-sessionskonfigurationer:
| Egenskab | Beskrivelse | Standardværdi | Konfiguration af session |
|---|---|---|---|
| minFileSize | Angiver den mindste filstørrelse (nedre grænse) som en bytestreng, som Adaptiv destinationsfilstørrelse bruger, når den evalueres. Skal være mellem 128 MB og 1 GB. | 128 m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Angiver den maksimale filstørrelse (øvre grænse) som en bytestreng, som Adaptiv destinationsfilstørrelse bruger, når den evalueres. Skal være mellem 128 MB og 1 GB. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Når true, stopper yderligere størrelsesevalueringer, når den beregnede målfilstørrelse når , maxFileSizehvilket reducerer eventuelle evalueringsomkostninger på meget store tabeller. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Notat
Når stopAtMaxSize den er aktiveret (standard), forbliver den adaptive målstørrelse fast på den maksimale værdi, når den er nået, så du undgår ekstra beregninger. Hvis dine tabeller kan blive mindre, når de er vokset, skal du angive denne egenskab til false for at tillade genberegning under maksimumgrænsen.
Inspektér vurderet målstørrelse
Du kan revidere den evaluerede adaptive målfilstørrelse ved at inspicere tabellens detaljer og egenskaber fra DESCRIBE DETAIL eller DESCRIBE EXTENDED. Den evaluerede værdi skrives som en byte-streng i tabelegenskaben delta.targetFileSize.adaptive .
Denne værdi bruges som mål- (eller maks-) størrelse for optimering, automatisk komprimering og optimering af skrivning. Den relaterede minimumsværdi beregnes som halvdelen af delta.targetFileSize.adaptive.
Forstå præstationspåvirkning
Følgende diagram illustrerer forholdet mellem tabelstørrelse og den optimale parketfilstørrelse. For tabeller under 10 GB evaluerer Fabric Spark Runtime destinationsfilstørrelsen til at være 128 MB. Efterhånden som tabelstørrelsen vokser, skaleres målfilstørrelsen lineært og når op til 1 GB for tabeller, der overstiger 10 TB.
At starte i det små med 128 MB og derefter skalere størrelsen på parketfiler, efterhånden som en tabel vokser i størrelse, har overlappende fordele:
Forbedret Delta-filspring: Filer i korrekt størrelse understøtter optimal dataklyngedannelse og spring, hvilket gør det muligt for Deltas filspringsprotokol at eliminere flere irrelevante filer under forespørgselsudførelse. En lille tabel med 128 MB filer i stedet for 1 GB filer muliggør 8 gange mere mulig filspring.
Reducerede opdateringsomkostninger:
MERGEogUPDATEoperationer omskriver kun berørte filer. Filer i den rigtige størrelse minimerer antallet af filer, der berøres pr. handling, hvilket reducerer mængden af data, der omskrives. Når Deletion Vectors er aktiveret, bliver korrekt filstørrelse afgørende: gravsten på rækkeniveau i overdimensionerede filer resulterer i betydelige oprydningsomkostninger under komprimering eller rensning.Optimeret parallelitet: Filer i den rigtige størrelse gør det muligt for Spark at opnå ideel opgaveparallelitet. For mange små filer overvælder planlæggeren; for få store filer underudnytter din Spark-pulje. Optimal dimensionering maksimerer både læse- og skrivegennemløb.
Adaptiv målfilstørrelse kan forbedre komprimeringsydelsen og forespørgsels-/skrivelatens, når den vælger en bedre størrelse end standardkonfigurationen. Hvis adaptiv evaluering giver samme størrelse som standardkonfigurationen for Spark-sessioner, forventes ingen målbar forbedring.
Vigtigt!
Skriveforstærkning opstår, når tidligere komprimerede filer omskrives, efterhånden som målfilstørrelsen stiger over tid. For at reducere denne risiko skal filniveau-komprimeringsmål (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true) aktiveres. Denne indstilling hjælper med at bevare tidligere komprimeringsarbejde ved at springe unødig rekomprimering af filer over, der allerede var komprimeret under tidligere målstørrelser. For mere information, se filniveau-kompaktionsmål.
Oversigt over bedste praksis
Brug disse anbefalinger til at balancere skriveomkostninger, læseydelse og vedligeholdelsesomkostninger, efterhånden som tabellerne vokser.
- Aktiver automatisk komprimering til indlæsning pipelines med hyppige små skrivninger (streaming eller micro-batch), så filens sundhed opretholdes uden manuel planlægning.
- Brug automatisk komprimering selektivt til andre skrivemønstre , når dine serviceniveaumål kan tåle lejlighedsvise spidser i skrive-latens.
- Aktivér adaptiv målfilstørrelse for at reducere manuel justering og holde målstørrelser tilpasset tabelens vækst.
- Brug Optimize write in controlled reading-stier (batchjobs, der kan tåle shuffle, partitionerede skrivninger eller hyppige små skrivninger) for at reducere komprimeringspresset nedstrøms.
-
Planlæg fuld-tabel
OPTIMIZEunder stille vinduer , når du skal omskrive mange partitioner eller anvende Z-Order. -
Aktiver hurtig optimering for at reducere skriveforstærkning og lave
OPTIMIZEmere idempotent. Se hurtig optimer. -
Brug
delta.targetFileSizevores adaptive målfilstørrelse konsekvent for at optimere, autokomprimere og optimere skrivefilstørrelser for at konvergere på kompatible filstørrelsesmål. - Aktivér filniveau-kompaktionsmål for at reducere unødvendig omkomprimering, efterhånden som målfilstørrelserne stiger over tid.