Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tabellformatet Lakehouse och Delta Lake är centrala för Microsoft Fabric. Att hålla Delta-tabeller optimerade är nyckeln till prestanda och kostnadseffektivitet för analysarbetsbelastningar.
Den här artikeln hjälper dig att avgöra när du ska använda V-order och visar de viktigaste konfigurations- och underhållsmönstren för Delta-tabeller.
Använd den här artikeln för att:
- Förstå vad V-ordningen ändrar och när det hjälper.
- Förstå hur Z-ordning och V-ordning kompletterar varandra.
- Välj rätt kontrollnivå: session, tabellegenskap eller skrivåtgärd.
- Använd underhållsmönster för deltatabeller i rätt Spark-körmiljö.
För vägledning över arbetsbelastningar om när V-order ska tillämpas baserat på förbrukningsscenarier, se Cross-workload table maintenance and optimization.
Vad är V-ordning?
V-order är en skrivtidsoptimering för Parquet-filer som kan förbättra prestandan för nedströms frågor över Fabric-motorer.
Snabbt:
- Där det hjälper mest: Läsintensiva arbetsmönster såsom instrumentpanelskonstruktion, interaktiv analys och upprepade genomsökningar.
- Så här hjälper det: Omorganiserar Parquet-layouten (till exempel radgruppsdistribution, kodning och komprimering) för att förbättra läseffektiviteten.
- Typisk kompromiss: Skrivningar kan ta längre tid (ofta cirka 15% i genomsnitt), medan läsningar kan förbättras avsevärt beroende på arbetsbelastning.
- Motorkompatibilitet: Filerna är fortfarande Parquet-kompatibla med öppen källkod och Delta-funktioner som Z-Order förblir kompatibla.
- Omfattning: V-ordningen är på filnivå. Deltaåtgärder som komprimering, vakuum och tidsresor kan användas med den.
Kontroll-V-ordningsskrivningar
V-ordning används för att optimera Parquet-fillayouten för snabbare frågeprestanda, särskilt i läsintensiva scenarier. I Fabric är V-order inaktiverad som standard för alla nyskapade arbetsytor för att optimera prestandan för skrivintensiva dataingenjörsarbetsbelastningar.
V-ordningens beteende i Apache Spark styrs genom följande konfigurationer:
| Konfiguration | Standardvärde | beskrivning |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Styr sessionsnivå V-ordningsskrivande. Ange till false som standard i nya Fabric-arbetsytor. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Inaktivera | Styr standardbeteendet för V-ordning på tabellnivå. |
DataFrame-skrivaralternativ: parquet.vorder.enabled |
Inaktivera | Används för att styra V-ordning på skrivoperationsnivå. |
Använd följande kommandon för att aktivera eller åsidosätta V-order-skrivningar vid behov för ditt scenario.
V-order är inaktiverad som standard i nya Fabric-arbetsytor (spark.sql.parquet.vorder.default=false) för att förbättra skrivprestandan för inmatnings- och transformationspipelines.
För lästunga arbetsbelastningar som interaktiva frågor eller dashboarding, aktivera V-order genom att sätta spark.sql.parquet.vorder.default till true. Du kan också byta till readHeavyforSpark eller ReadHeavy resursprofiler, som automatiskt aktiverar V-ordning för läsfokuserad prestanda.
I Fabric Runtime 1.3 och senare spark.sql.parquet.vorder.enable tas inställningen bort. Eftersom V-ordning kan tillämpas automatiskt under Delta-optimering med OPTIMIZE, behöver du inte denna äldre inställning. Om du migrerar från tidigare runtime-miljöer, ta bort den här inställningen från koden.
Kontrollera V-ordningskonfiguration i Apache Spark-sessionen
Använd dessa kommandon för att bekräfta det aktuella sessionsvärdet innan du ändrar det.
%%sql
SET spark.sql.parquet.vorder.default
Inaktivera V-order-skrivning i Apache Spark-sessionen
Använd dessa kommandon när din arbetsbelastning är skrivintensiv och du vill ha snabbare inmatning eller transformeringsskrivningar.
%%sql
SET spark.sql.parquet.vorder.default=FALSE
Aktivera V-ordningsskrivning i Apache Spark-sessionen
När du aktiverar V-ordning på sessionsnivå använder alla Parquet-skrivningar i den sessionen V-ordning, inklusive icke-Delta Parquet-tabeller och Delta-tabeller även om parquet.vorder.enabled det uttryckligen är inställt på false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Styrordning V-ordning med hjälp av Delta-tabellens egenskaper
Det här avsnittet använder Endast Spark SQL eftersom tabellegenskaper definieras via SQL DDL och ALTER TABLE -instruktioner.
Använd tabellegenskaper när du vill ha ett standardvärde på tabellnivå som gäller för flera sessioner.
Aktivera V-ordningens tabellegenskap vid tabellskapandet:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
När tabellegenskapen är satt till true, INSERT, , UPDATEoch MERGE applicera V-ordning vid skrivtid. Sessions- och skrivnivåinställningar har fortfarande företräde, så skrivningar kan fortfarande använda V-ordning även när TBLPROPERTIES är satt till false.
Aktivera eller inaktivera V-ordning genom att ändra tabellegenskapen:
%%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");
Efter att du aktiverat eller inaktiverat V-order med tabellegenskaper påverkas endast framtida skrivningar till tabellen. Parquet-filer behåller den ordning som användes när de skapades. För att ändra den nuvarande fysiska strukturen för att tillämpa eller ta bort V-ordning, läs Table Compaction.
Styrning av V-ordning direkt vid skrivoperationer
I det här avsnittet används PySpark för att demonstrera DataFrame-skrivar-API:et. Samma mönster är tillgängligt i Scala DataFrame-API:er med motsvarande alternativ.
Använd alternativ på skrivnivå när du behöver kontroll per åtgärd i stället för standardinställningar för hela sessionen eller hela tabellen.
Alla Apache Spark-skrivkommandon ärver sessionsinställningen när de inte uttryckligen åsidosättas. Följande exempel skriver med V-ordning genom att ärva 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-ordningen gäller endast för filer som påverkas av predikatet.
I en session där spark.sql.parquet.vorder.default är osatt eller satt till false, skriver följande kommandon med V-ordning:
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()