Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De tabelindeling Lakehouse en Delta Lake staat centraal in Microsoft Fabric. Het optimaliseren van Delta-tabellen is essentieel voor prestaties en kostenefficiëntie voor analyseworkloads.
Dit artikel helpt je beslissen wanneer je V-order moet gebruiken en toont de belangrijkste configuratie- en onderhoudspatronen voor Delta-tabellen.
Gebruik dit artikel om:
- Begrijp wat V-orde verandert en wanneer het helpt.
- Begrijp hoe Z-orde en V-orde elkaar aanvullen.
- Kies het juiste besturingsniveau: sessie, tabeleigenschap of schrijfbewerking.
- Pas onderhoudspatronen voor Delta-tabellen toe in de juiste Spark-runtimecontext.
Voor cross-workload richtlijnen over wanneer V-order toegepast moet worden op basis van verbruiksscenario's, zie Cross-workload table maintenance and optimization.
Wat is V-orde?
V-order is een schrijftijdoptimalisatie voor Parquet-bestanden die de prestaties van downstream querys over Fabric-engines kan verbeteren.
In één oogopslag:
- Waar dit het meest helpt: Leesintensieve patronen, zoals dashboarding, interactieve analyses en herhaalde scans.
- Hoe het helpt: Hiermee wordt de Parquet-indeling (bijvoorbeeld distributie van rijgroepen, codering en compressie) opnieuw ingedeeld om de leesefficiëntie te verbeteren.
- Typische afweging: Schrijfbewerkingen kunnen langer duren (vaak ongeveer 15% gemiddeld), terwijl leesbewerkingen aanzienlijk kunnen worden verbeterd, afhankelijk van de werkbelasting.
- Compatibiliteit van engine: Bestanden blijven opensource Parquet-compatibel en Delta-functies zoals Z-Order blijven compatibel.
- Scope: V-orde is op bestandsniveau. Deltabewerkingen zoals compressie, vacuüm en tijdreizen kunnen ermee worden gebruikt.
Schrijfopdrachten van Control V-order
V-order wordt gebruikt om de Parquet-bestandsindeling te optimaliseren voor snellere queryprestaties, vooral in leesintensieve situaties. In Fabric is V-order standaard uitgeschakeld voor alle nieuw aangemaakte werkruimtes om de prestaties te optimaliseren voor schrijfintensieve data-engineeringwerklasten.
V-orde gedrag in Apache Spark wordt geregeld via de volgende configuraties:
| Configuratie | Standaardwaarde | Beschrijving |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Regelt het schrijven op sessieniveau V-orde. Ingesteld op false standaard in nieuwe Fabric-werkruimten. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Ongedefinieerd | Regelt standaard V-orde gedrag op tafelniveau. |
DataFrame Writer-optie: parquet.vorder.enabled |
Ongedefinieerd | Gebruikt om V-orde op schrijfniveau te besturen. |
Gebruik de volgende commando's om V-order schrijfopdrachten in te schakelen of te overschrijven indien nodig voor jouw situatie.
V-order is standaard uitgeschakeld in nieuwe Fabric-werkruimtes (spark.sql.parquet.vorder.default=false) om de schrijfprestaties voor ingestie- en transformatiepijplijnen te verbeteren.
Voor leesintensieve werklasten zoals interactieve queries of dashboarding, schakel V-order in door in te stellen spark.sql.parquet.vorder.default op true. Je kunt ook overschakelen naar readHeavyforSpark of ReadHeavy resource profiles, die automatisch V-order inschakelen voor leesgerichte prestaties.
In Fabric Runtime 1.3 en hoger wordt de spark.sql.parquet.vorder.enable instelling verwijderd. Omdat V-order automatisch kan worden toegepast tijdens Delta-optimalisatie met OPTIMIZE, heb je deze oudere instelling niet nodig. Als u migreert van eerdere runtimeversies, verwijdert u deze instelling uit uw code.
Controleer V-order configuratie in Apache Spark sessie
Gebruik deze opdrachten om de huidige sessiewaarde te bevestigen voordat u deze wijzigt.
%%sql
SET spark.sql.parquet.vorder.default
Schakel V-order schrijven uit in Apache Spark-sessie
Gebruik deze commando's wanneer uw werkbelasting schrijfintensief is en u voor snellere opname van schrijfbewerkingen of transformaties wilt zorgen.
%%sql
SET spark.sql.parquet.vorder.default=FALSE
Schakel V-order schrijven in in Apache Spark-sessie in
Wanneer je V-order inschakelt op sessieniveau, gebruiken alle Parquet-schrijfopdrachten in die sessie V-order, inclusief niet-Delta Parquet-tabellen en Delta-tabellen, zelfs als parquet.vorder.enabled expliciet is ingesteld op false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Besturingsorde V-orde met behulp van Delta-tabeleigenschappen
In deze sectie wordt alleen Spark SQL gebruikt omdat tabeleigenschappen worden gedefinieerd via SQL DDL en ALTER TABLE instructies.
Gebruik tabeleigenschappen als u een standaardinstelling op tabelniveau wilt die van toepassing is op sessies.
Schakel de V-orde tabeleigenschap in tijdens het aanmaken van tabel:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
Wanneer de tabeleigenschap is ingesteld op true, INSERT, , UPDATEen MERGE V-orde wordt toegepast tijdens schrijftijd. Sessie- en schrijfniveau-instellingen hebben nog steeds voorrang, dus schrijfopdrachten kunnen V-volgorde gebruiken, zelfs als TBLPROPERTIES deze is ingesteld op false.
Schakel V-orde in of uit door de tabeleigenschap te wijzigen:
%%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");
Nadat je V-order hebt ingeschakeld of uitgeschakeld met tabeleigenschappen, worden alleen toekomstige schrijfopdrachten naar de tabel beïnvloed. Parquet-bestanden behouden de volgorde die wordt gebruikt toen deze werd gemaakt. Om de huidige fysieke structuur te wijzigen om V-orde toe te passen of te verwijderen, lees Table Compaction.
V-order direct aansturen bij schrijfbewerkingen
In deze sectie wordt PySpark gebruikt om de DataFrame Writer-API te demonstreren. Hetzelfde patroon is beschikbaar in Scala DataFrame-API's met equivalente opties.
Gebruik opties op schrijfniveau wanneer u beheer per bewerking nodig hebt in plaats van standaardinstellingen voor de hele sessie of tabel.
Alle schrijfbewerkingen in Apache Spark nemen de sessie-instelling over, tenzij deze expliciet wordt overschreven. De volgende voorbeelden schrijven met V-orde door de sessieconfiguratie te erven.
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-volgorde geldt alleen voor bestanden die door het predicaat worden beïnvloed.
In een sessie waarbij spark.sql.parquet.vorder.default is ongesteld of ingesteld op false, schrijven de volgende commando's met V-orde:
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()