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.
Lakehouse og Delta Lake tabelformatet er centrale for Microsoft Fabric. At holde Delta-tabeller optimeret er nøglen til ydeevne og omkostningseffektivitet for analysearbejdsbyrder.
Denne artikel hjælper dig med at beslutte, hvornår du skal bruge V-Order, og viser de vigtigste konfigurations- og vedligeholdelsesmønstre for Delta-tabeller.
Brug denne artikel til at:
- Forstå, hvad V-Order ændrer, og hvornår det hjælper.
- Forstå, hvordan Z-ordenen og V-ordenen supplerer hinanden.
- Vælg det rigtige kontrolniveau: session, tabelegenskab eller skriveoperation.
- Anvend vedligeholdelsesmønstre for Delta-tabellen i den rigtige Spark-runtime-kontekst.
For vejledning på tværs af arbejdsbelastninger om, hvornår V-Order skal anvendes baseret på forbrugsscenarier, se Cross-workload table maintenance and optimization.
Hvad er V-Order?
V-Order er en skrivetidsoptimering for Parquet-filer, som kan forbedre downstream forespørgselsydelsen på tværs af Fabric-motorer.
Et overblik:
- Hvor det hjælper mest: Læse-tunge mønstre som dashboarding, interaktiv analyse og gentagne scanninger.
- Hvordan det hjælper: Reorganiserer Parquet-layoutet (for eksempel rækkegruppefordeling, kodning og komprimering) for at forbedre læseeffektiviteten.
- Typisk afvejning: Skrivninger kan tage længere tid (ofte omkring 15% i gennemsnit), mens læsninger kan forbedres betydeligt afhængigt af arbejdsbyrden.
- Motorkompatibilitet: Filer forbliver open source Parquet-kompatible, og Delta-funktioner som Z-Order forbliver kompatible.
- Omfang: V-Order er filniveau. Delta-operationer som kompaktion, vakuum og tidsrejser kan bruges med den.
Control V-Order skriver
V-Order bruges til at optimere Parquet-fillayoutet for hurtigere forespørgselsydelse, især i læseintensive scenarier. I Microsoft Fabric er V-Order deaktiveret som standard for alle nyoprettede arbejdsområder for at optimere ydeevnen til skrivetunge dataingeniørarbejdsbelastninger.
Funktionsmåden for V-Order i Apache Spark styres via følgende konfigurationer:
| Konfiguration | Standardværdi | Beskrivelse |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Styrer skrivning af V-ordre på sessionsniveau. Indstillet til false som standard i nye Fabric-arbejdsområder. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Fjern indstillingen | Styrer standardfunktionsmåden for V-rækkefølge på tabelniveau. |
Indstillingen DataFrame-skriver: parquet.vorder.enabled |
Fjern indstillingen | Bruges til at styre V-Order på skrivehandlingsniveau. |
Brug følgende kommandoer til at aktivere eller tilsidesætte V-Order-skrivninger efter behov i dit scenarie.
V-Order er deaktiveret som standard i nye Fabric-arbejdsområder (spark.sql.parquet.vorder.default=false) for at forbedre skriveydelsen ved indlæsning og transformation pipelines.
For læseintensive arbejdsbelastninger som interaktive forespørgsler eller dashboarding, aktiver V-Order ved at sætte spark.sql.parquet.vorder.default til true. Du kan også skifte til readHeavyforSpark ressourceprofiler ReadHeavy , som automatisk aktiverer V-Order for læsefokuseret ydeevne.
I Fabric runtime 1.3 og senere er indstillingen spark.sql.parquet.vorder.enable fjernet. Fordi V-Order kan anvendes automatisk under Delta-optimering med OPTIMIZE, behøver du ikke denne ældre indstilling. Hvis du migrerer fra tidligere runtime-versioner, skal du fjerne denne indstilling fra din kode.
Kontrollér konfigurationen af V-Order i Apache Spark-sessionen
Brug disse kommandoer til at bekræfte den aktuelle sessionsværdi, før du ændrer den.
%%sql
SET spark.sql.parquet.vorder.default
Deaktiver V-Order-skrivning i Apache Spark-sessionen
Brug disse kommandoer, når din arbejdsbyrde er skrivetynget, og du ønsker hurtigere indtastning eller transformationsskrivninger.
%%sql
SET spark.sql.parquet.vorder.default=FALSE
Aktivér V-Order-skrivning i Apache Spark-sessionen
Når du aktiverer V-Order på sessionsniveau, bruger alle Parquet-skrivninger i den session V-Order, inklusive ikke-Delta Parquet-tabeller og Delta-tabeller, selvom parquet.vorder.enabled det eksplicit er sat til false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Kontrollér V-rækkefølge ved hjælp af egenskaber for Delta-tabel
Denne sektion bruger kun Spark SQL, fordi tabelegenskaber defineres gennem SQL DDL og ALTER TABLE statements.
Brug tabelegenskaber, når du vil have en tabelniveau-standard, der gælder på tværs af sessioner.
Aktivér egenskaben for tabellen V-Order under oprettelse af tabellen:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
Når tabelegenskaben sættes til true, INSERT, UPDATE, og MERGE anvend V-ordenen ved skrivetidspunktet. Sessions- og skriveniveau-indstillinger har stadig forrang, så skrivninger kan stadig bruge V-Order, selv når TBLPROPERTIES er sat til false.
Aktivér eller deaktiver V-order ved at ændre tabelegenskaben:
%%sql
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "false");
ALTER TABLE person UNSET TBLPROPERTIES("delta.parquet.vorder.enabled");
Når du har aktiveret eller deaktiveret V-Order ved hjælp af tabelegenskaber, er det kun fremtidige skrivninger til tabellen, der påvirkes. Parquetfiler bevarer den rækkefølge, der blev brugt, da den blev oprettet. For at ændre den nuværende fysiske struktur til at anvende eller fjerne V-Order, læs Table Compaction.
Styring af V-order direkte ved skrivehandlinger
Denne sektion bruger PySpark til at demonstrere DataFrame writer API'en. Det samme mønster findes i Scala DataFrame API'er med tilsvarende muligheder.
Brug skriveniveau-muligheder, når du har brug for kontrol pr. operation, i stedet for sessions- eller tabel-dækkende standardindstillinger.
Alle Apache Spark-skrivekommandoer arver sessionsindstillingen, når de ikke eksplicit overskrives. Følgende eksempler skriver ved hjælp af V-Order ved at arve sessionskonfigurationen.
df_source.write\
.format("delta")\
.mode("append")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.location("Files/people")\
.execute()
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.saveAsTable("myschema.mytable")
V-Order gælder kun for filer, der er påvirket af prædikatet.
I en session hvor spark.sql.parquet.vorder.default er unset eller sat til false, skriver følgende kommandoer ved hjælp af V-Order:
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.option("parquet.vorder.enabled","true")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.option("parquet.vorder.enabled","true")\
.location("Files/people")\
.execute()