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 bestämma 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-Order ändrar och när det hjälper.
- Förstå hur Z-Order och V-Order 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ö.
Vägledning för flera arbetsbelastningar om när du ska tillämpa V-order baserat på förbrukningsscenarier finns i Underhåll och optimering av tabeller mellan arbetsbelastningar.
Vad är V-Order?
V-Order är en skrivtidsoptimering för Parquet-filer som kan förbättra frågeprestanda nedströms inom 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-Order är på filnivå. Deltaåtgärder som komprimering, vakuum och tidsresor kan användas med den.
Kontrollera V-order-skrivningarna
V-Order används för att optimera Parquet-fillayouten för snabbare frågeprestanda, särskilt i läsintensiva scenarier. I Microsoft Fabric är V-Order inaktiverad som standard för alla nyskapade arbetsytor för att optimera prestanda för skrivintensiva dataintensiva arbetsbelastningar.
V-Order-beteendet i Apache Spark styrs genom följande konfigurationer:
| Konfiguration | Standardvärde | beskrivning |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Styr V-orderskrivning på sessionsnivå. Ange till false som standard i nya Fabric-arbetsytor. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Inaktivera | Styr standardbeteendet för V-order på tabellnivå. |
DataFrame-skrivaralternativ: parquet.vorder.enabled |
Inaktivera | Används för att styra V-order på skrivåtgärdsnivå. |
Använd följande kommandon för att aktivera eller åsidosätta V-Order-skrivningar efter 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 skrivprestanda för inmatning och transformerings-pipelines.
För arbetsbelastningar med högt läsbehov, som interaktiva frågeställningar eller instrumentpanelshantering, aktiverar du V-Order genom att ställa in spark.sql.parquet.vorder.default till true. Du kan också växla till readHeavyforSpark eller ReadHeavy resursprofiler, som automatiskt aktiverar V-Order för läsfokuserad prestanda.
I Fabric Runtime 1.3 och senare spark.sql.parquet.vorder.enable tas inställningen bort. Eftersom V-Order kan tillämpas automatiskt under Delta-optimering med OPTIMIZEbehöver du inte den här äldre inställningen. Om du migrerar från tidigare runtime-miljöer, ta bort den här inställningen från koden.
Kontrollera V-Order-konfigurationen 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-session
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-Order-skrivning i Apache Spark-session
När du aktiverar V-Order på sessionsnivå använder alla Parquet-skrivningar i den sessionen V-Order, inklusive icke-Delta Parquet-tabeller och Delta-tabeller även om parquet.vorder.enabled är uttryckligen inställt på false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Kontrollera V-order med hjälp av deltatabellegenskaper
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 tabellegenskapen V-Order när tabellen skapas:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
När tabellegenskapen är inställd på true, INSERT, UPDATEoch MERGE tillämpar V-Order vid skrivtillfället. Inställningar på sessions- och skrivnivå har fortfarande företräde, så skrivningar kan fortfarande använda V-Order även när TBLPROPERTIES är inställt på false.
Aktivera eller inaktivera V-order 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");
När du har aktiverat eller inaktiverat V-Order med hjälp av tabellegenskaper påverkas endast framtida skrivningar till tabellen. Parquet-filer behåller den ordning som användes när de skapades. Om du vill ändra den aktuella fysiska strukturen för att tillämpa eller ta bort V-order läser du Tabellkomprimering.
Styra V-order direkt vid skrivåtgärder
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 hjälp av V-Order 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-Order gäller endast för filer som påverkas av predikatet.
I en session där spark.sql.parquet.vorder.default inte är inställt eller är inställt på false skriver följande kommandon med 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()