Κοινοποίηση μέσω


Συντήρηση και βελτιστοποίηση πίνακα μεταξύ φόρτων εργασίας στο Microsoft Fabric

Οι πίνακες Delta στο Microsoft Fabric εξυπηρετούν πολλούς μηχανισμούς κατανάλωσης, ο καθένας με διαφορετικά χαρακτηριστικά απόδοσης και απαιτήσεις βελτιστοποίησης. Αυτός ο οδηγός παρέχει ένα ολοκληρωμένο πλαίσιο για την κατανόηση του τρόπου με τον οποίο οι πίνακες που έχουν γραφτεί από έναν κινητήρα καταναλώνονται από άλλους και πώς να βελτιστοποιήσετε ανάλογα τις στρατηγικές συντήρησης πινάκων.

Η κατανόηση της σχέσης μεταξύ των μοτίβων εγγραφής και της απόδοσης ανάγνωσης σε διαφορετικούς κινητήρες είναι απαραίτητη για τη δημιουργία αποτελεσματικών πλατφορμών δεδομένων. Ο στόχος είναι να διασφαλιστεί ότι οι παραγωγοί δεδομένων δημιουργούν διατάξεις πίνακα που βελτιστοποιούν τις επιδόσεις ανάγνωσης για μεταγενέστερους καταναλωτές, είτε αυτοί οι καταναλωτές χρησιμοποιούν Spark, τελικό σημείο ανάλυσης SQL, Power BI Direct Lake ή Warehouse.

Γράψτε και διαβάστε τον πίνακα σεναρίων

Ο παρακάτω πίνακας συνοψίζει τα αναμενόμενα χαρακτηριστικά απόδοσης για κοινούς συνδυασμούς εγγραφής και ανάγνωσης, μαζί με προτεινόμενες στρατηγικές βελτιστοποίησης. Χρησιμοποιήστε αυτόν τον πίνακα για να προσδιορίσετε το σενάριό σας και να κατανοήσετε τις σχετικές οδηγίες.

Μέθοδος εγγραφής Διαβάστε τον κινητήρα Αναμενόμενα κενά Προτεινόμενη στρατηγική
Παρτίδα σπινθήρα Spark Χωρίς κενά Οι προεπιλεγμένες διαμορφώσεις εγγραφής Spark είναι επαρκείς
Παρτίδα σπινθήρα Τελικό σημείο ανάλυσης SQL Χωρίς κενά Ενεργοποίηση αυτόματης συμπίεσης και βελτιστοποίησης-εγγραφής
Ροή Spark Spark Δυνατότητα μικρών αρχείων Αυτόματη συμπύκνωση και βελτιστοποίηση-εγγραφή με προγραμματισμένο OPTIMIZE
Ροή Spark Τελικό σημείο ανάλυσης SQL Μικρά αρχεία και σημεία ελέγχου Αυτόματη συμπύκνωση, βελτιστοποίηση-εγγραφή, διαχωρισμός επιπέδων μενταγιόν
Αποθήκη Spark Χωρίς κενά Η διαχείριση της βελτιστοποίησης από το σύστημα χειρίζεται τη διάταξη
Αποθήκη Τελικό σημείο ανάλυσης SQL Χωρίς κενά Η διαχείριση της βελτιστοποίησης από το σύστημα χειρίζεται τη διάταξη

Βέλτιστες διατάξεις αρχείων ανά μηχανή

Διαφορετικές μηχανές κατανάλωσης έχουν διαφορετικές βέλτιστες διατάξεις αρχείων. Η κατανόηση αυτών των στόχων σάς βοηθά να διαμορφώσετε κατάλληλα τις λειτουργίες εγγραφής και τις εργασίες συντήρησης.

Οδηγίες για τελικό σημείο ανάλυσης SQL και αποθήκη δεδομένων Fabric

Για βέλτιστη απόδοση με το τελικό σημείο ανάλυσης SQL και την Αποθήκη, χρησιμοποιήστε τις ακόλουθες ρυθμίσεις:

  • Μέγεθος αρχείου προορισμού: Περίπου 400 MB ανά αρχείο
  • Μέγεθος ομάδας γραμμών: Περίπου 2 εκατομμύρια σειρές ανά ομάδα γραμμών
  • V-Order: Βελτιώνει την απόδοση ανάγνωσης κατά 10%

Μια αποθήκη χρησιμοποιεί αυτά τα κριτήρια για να ανακαλύψει υποψηφίους συμπίεσης:

  • Η επιβάρυνση του αρχείου πίνακα είναι μεγαλύτερη από 10%
  • Οι γραμμές που έχουν διαγραφεί λογικά στον πίνακα είναι περισσότερες από 10%
  • Το μέγεθος του πίνακα είναι μεγαλύτερο από 1.024 γραμμές

Κατά την εκτέλεση της συμπίεσης, η διαδικασία επιλέγει υποψηφίους με βάση αυτά τα κριτήρια:

  • Οποιοδήποτε αρχείο είναι μικρότερο από 25% του ιδανικού μεγέθους (με βάση τον αριθμό γραμμών)
  • Οποιοδήποτε αρχείο έχει περισσότερες από 20% διαγραμμένες σειρές

Spark

Το Spark είναι ισχυρό όταν διαβάζετε διάφορα μεγέθη αρχείων. Για βέλτιστη απόδοση:

  • Μέγεθος αρχείου-στόχου: 128 MB έως 1 GB ανάλογα με το μέγεθος του πίνακα
  • Μέγεθος ομάδας γραμμών: 1 εκατομμύριο έως 2 εκατομμύρια γραμμές ανά ομάδα γραμμών
  • V-Order: Δεν απαιτείται για την απόδοση ανάγνωσης Spark (μπορεί να προσθέσει 15-33% επιβάρυνση εγγραφής)

Οι αναγνώσεις Spark επωφελούνται από το προσαρμόσιμο μέγεθος αρχείου προορισμού, το οποίο προσαρμόζεται αυτόματα με βάση το μέγεθος του πίνακα:

  • Πίνακες κάτω των 10 GB: στόχος 128 MB
  • Πίνακες άνω των 10 TB: Στόχος έως 1 GB

Power BI Direct Lake

Για βέλτιστη απόδοση Direct Lake:

  • Μέγεθος ομάδας σειρών στόχου: 8 εκατομμύρια ή περισσότερες σειρές ανά ομάδα σειρών για βέλτιστη απόδοση
  • V-Order: Κρίσιμο για τη βελτίωση 40-60% σε ερωτήματα ψυχρής κρυφής μνήμης
  • Πλήθος αρχείων: Ελαχιστοποιήστε τον αριθμό αρχείων για να μειώσετε την επιβάρυνση διακωδικοποίησης
  • Συνεπή μεγέθη αρχείων: Σημαντικό για προβλέψιμες επιδόσεις ερωτημάτων

Τα σημασιολογικά μοντέλα Direct Lake αποδίδουν καλύτερα όταν:

  • Τα δεδομένα στήλης είναι V-Ordered για συμπίεση συμβατή με VertiPaq
  • Οι ομάδες γραμμών είναι αρκετά μεγάλες για αποτελεσματική συγχώνευση λεξικών
  • Τα διανύσματα διαγραφής ελαχιστοποιούνται μέσω τακτικής συμπύκνωσης

Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Κατανόηση της απόδοσης ερωτημάτων Direct Lake.

Mirroring

Ο κατοπτρισμός διαστασιολογεί αυτόματα τα αρχεία με βάση τον όγκο του πίνακα:

Μέγεθος τραπεζιού Γραμμές ανά ομάδα γραμμών Σειρές ανά αρχείο
Μικρό (έως 10 GB) 2 εκατομμύρια 10 εκατομμύρια
Μεσαία (10 GB έως 2,56 TB) 4 εκατομμύρια 60 εκατομμύρια
Μεγάλο (πάνω από 2,56 TB) 8 εκατ. 80 εκατομμύρια

Σύνταξη μοτίβων και διαμορφώσεων

Σπινθήρα μοτίβων εγγραφής

Οι εγγραφές Spark χρησιμοποιούν τις ακόλουθες προεπιλεγμένες ρυθμίσεις παραμέτρων:

Ρύθμιση παραμέτρων Προεπιλεγμένη τιμή Περιγραφή
spark.microsoft.delta.optimizeWrite.fileSize 128 MB Μέγεθος αρχείου στόχου για βελτιστοποιημένες εγγραφές
spark.databricks.delta.optimizeWrite.enabled Διαφέρει ανάλογα με το προφίλ Ενεργοποιεί την αυτόματη συγχώνευση αρχείων
spark.databricks.delta.autoCompact.enabled Απενεργοποιημένη Επιτρέπει τη συμπίεση μετά την εγγραφή
spark.sql.files.maxRecordsPerFile Απεριόριστο Μέγιστος αριθμός εγγραφών ανά αρχείο

Για να ρυθμίσετε τις παραμέτρους των εγγραφών Spark για κατάντη κατανάλωση SQL:

# Enable optimize write for better file layout
spark.conf.set('spark.databricks.delta.optimizeWrite.enabled', 'true')

# Enable auto-compaction for automatic maintenance
spark.conf.set('spark.databricks.delta.autoCompact.enabled', 'true')

Για περισσότερες πληροφορίες σχετικά με τα προφίλ πόρων και τις προεπιλογές τους, ανατρέξτε στην ενότητα Ρύθμιση παραμέτρων προφίλ πόρων.

Μοτίβα εγγραφής αποθήκης

Η αποθήκη βελτιστοποιεί αυτόματα τη διάταξη δεδομένων κατά τη διάρκεια των εγγραφών:

  • Το V-Order είναι ενεργοποιημένο από προεπιλογή για βελτιστοποίηση ανάγνωσης.
  • Η αυτόματη συμπύκνωση εκτελείται ως διαδικασία παρασκηνίου.
  • Η διαχείριση των σημείων ελέγχου γίνεται αυτόματα.

Η Αποθήκη παράγει αρχεία βελτιστοποιημένα για κατανάλωση SQL χωρίς χειροκίνητη παρέμβαση. Οι πίνακες που έχουν συνταχθεί από την Αποθήκη είναι εγγενώς βελτιστοποιημένοι τόσο για το τελικό σημείο ανάλυσης SQL όσο και για τις αναγνώσεις της Αποθήκης.

Λειτουργίες συντήρησης τραπεζιού

εντολή OPTIMIZE

Η OPTIMIZE εντολή ενοποιεί μικρά αρχεία σε μεγαλύτερα αρχεία:

-- Basic optimization
OPTIMIZE schema_name.table_name

-- Optimization with V-Order for Power BI consumption
OPTIMIZE schema_name.table_name VORDER

-- Optimization with Z-Order for specific query patterns
OPTIMIZE schema_name.table_name ZORDER BY (column1, column2)

Σημαντικό

Η OPTIMIZE εντολή είναι μια εντολή Spark SQL. Πρέπει να το εκτελέσετε σε περιβάλλοντα Spark, όπως σημειωματάρια, ορισμούς εργασιών Spark ή τη διασύνδεση συντήρησης Lakehouse. Το τελικό σημείο ανάλυσης SQL και το πρόγραμμα επεξεργασίας ερωτημάτων SQL αποθήκης δεν υποστηρίζουν αυτήν την εντολή.

Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Συμπύκνωση πίνακα.

Αυτόματη συμπύκνωση

Η αυτόματη συμπύκνωση αξιολογεί αυτόματα την υγεία του διαμερίσματος μετά από κάθε λειτουργία εγγραφής και ενεργοποιεί τη σύγχρονη βελτιστοποίηση όταν ανιχνεύεται κατακερματισμός αρχείων:

# Enable at session level
spark.conf.set('spark.databricks.delta.autoCompact.enabled', 'true')

# Enable at table level
spark.sql("""
    ALTER TABLE schema_name.table_name 
    SET TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
""")

Χρησιμοποιήστε την αυτόματη συμπίεση για διοχετεύσεις πρόσληψης με συχνές μικρές εγγραφές (ροή ή μικροδέσμη) για να αποφύγετε τον μη αυτόματο προγραμματισμό και να διατηρήσετε τα αρχεία συμπιεσμένα αυτόματα.

Η αυτόματη συμπύκνωση και η βελτιστοποίηση εγγραφής συνήθως παράγουν τα καλύτερα αποτελέσματα όταν χρησιμοποιούνται μαζί. Η βελτιστοποίηση εγγραφής μειώνει τον αριθμό των μικρών αρχείων που γράφονται και η αυτόματη συμπύκνωση χειρίζεται τον υπόλοιπο κατακερματισμό.

Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Αυτόματη συμπύκνωση.

Βελτιστοποιήστε την εγγραφή

Το Optimize write μειώνει την επιβάρυνση μικρών αρχείων εκτελώντας συμπίεση πριν από την εγγραφή, η οποία δημιουργεί λιγότερα, μεγαλύτερα αρχεία:

# Enable at session level
spark.conf.set('spark.databricks.delta.optimizeWrite.enabled', 'true')

# Enable at table level
spark.sql("""
    ALTER TABLE schema_name.table_name 
    SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
""")

Το Optimize write είναι επωφελές για:

  • Διαμεισμένοι πίνακες
  • Πίνακες με συχνά μικρά ένθετα
  • Λειτουργίες που αγγίζουν πολλά αρχεία (MERGE, UPDATE, DELETE)

Η συμπίεση πριν από την εγγραφή (βελτιστοποίηση εγγραφής) είναι γενικά λιγότερο δαπανηρή από τη συμπίεση μετά την εγγραφή (βελτιστοποίηση). Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Βελτιστοποίηση εγγραφής.

Εντολή VACUUM

Η VACUUM εντολή καταργεί παλιά αρχεία στα οποία δεν αναφέρεται πλέον ένα αρχείο καταγραφής πίνακα Delta:

-- Remove files older than the default retention period (7 days)
VACUUM schema_name.table_name

-- Remove files older than specified hours
VACUUM schema_name.table_name RETAIN 168 HOURS

Η προεπιλεγμένη περίοδος διατήρησης είναι επτά ημέρες. Ο καθορισμός μικρότερων περιόδων διατήρησης επηρεάζει τις δυνατότητες ταξιδιού στο χρόνο της Delta και μπορεί να προκαλέσει προβλήματα με ταυτόχρονους αναγνώστες ή συγγραφείς.

Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Συντήρηση πίνακα Lakehouse.

Βελτιστοποίηση V-Order

Το V-Order είναι μια βελτιστοποίηση χρόνου εγγραφής που εφαρμόζει ταξινόμηση, κωδικοποίηση και συμπίεση συμβατή με VertiPaq σε αρχεία Parquet:

  • Power BI Direct Lake: 40-60% βελτίωση στα ερωτήματα ψυχρής μνήμης cache
  • Τελικό σημείο ανάλυσης SQL και αποθήκη: Περίπου 10% βελτίωση απόδοσης ανάγνωσης
  • Spark: Δεν υπάρχει εγγενές όφελος ανάγνωσης. 15-33% πιο αργές εγγραφές

Πότε να ενεργοποιήσετε το V-Order

Το V-Order παρέχει το μεγαλύτερο όφελος για:

  • Πίνακες επιπέδου χρυσού που εξυπηρετούν το Power BI Direct Lake
  • Πίνακες στους οποίους υποβάλλονται συχνά ερωτήματα μέσω του τελικού σημείου ανάλυσης SQL
  • Μεγάλος φόρτος εργασίας για ανάγνωση όπου η απόδοση εγγραφής είναι λιγότερο κρίσιμη

Πότε να αποφύγετε το V-Order

Εξετάστε το ενδεχόμενο να απενεργοποιήσετε το V-Order για:

  • Τραπέζια με μπρούτζινο στρώμα εστιασμένα στην ταχύτητα κατάποσης
  • Διοχετεύσεις Spark-to-Spark όπου η SQL και το Power BI δεν καταναλώνουν τα δεδομένα
  • Φόρτοι εργασίας με μεγάλο όγκο εγγραφής όπου η καθυστέρηση δεδομένων είναι κρίσιμη

Διαμόρφωση V-Order

Το V-Order είναι απενεργοποιημένο από προεπιλογή σε νέους χώρους εργασίας Fabric. Για να ενεργοποιήσετε:

# Enable at session level (default for all writes)
spark.conf.set('spark.sql.parquet.vorder.default', 'true')

# Enable at table level
spark.sql("""
    ALTER TABLE schema_name.table_name 
    SET TBLPROPERTIES ('delta.parquet.vorder.enabled' = 'true')
""")

Για να εφαρμόσετε επιλεκτικά το V-Order με βάση την κατανάλωση Direct Lake, εξετάστε το ενδεχόμενο να αυτοματοποιήσετε την ενεργοποίηση του V-Order για πίνακες που χρησιμοποιούνται σε σημασιολογικά μοντέλα Direct Lake. Οι πίνακες που δεν καταναλώνονται από το Direct Lake μπορούν να παραμείνουν χωρίς V-Order για καλύτερη απόδοση εγγραφής.

Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Βελτιστοποίηση πινάκων Delta Lake και V-Order.

Ομαδοποίηση υγρών και Z-Order

Συμπλέγματα υγρών

Το Liquid Clustering είναι η συνιστώμενη προσέγγιση για την οργάνωση δεδομένων. Σε αντίθεση με την παραδοσιακή κατάτμηση, το Liquid Clustering:

  • Προσαρμόζεται σε μεταβαλλόμενα μοτίβα ερωτημάτων
  • Απαιτείται OPTIMIZE η εφαρμογή ομαδοποίησης
  • Παρέχει καλύτερη παράβλεψη αρχείων για φιλτραρισμένα ερωτήματα

Ενεργοποιήστε το Liquid Clustering κατά τη δημιουργία πίνακα:

CREATE TABLE schema_name.table_name (
    id INT,
    category STRING,
    created_date DATE
) CLUSTER BY (category)

Σειρά Z

Η σειρά Z εντοπίζει σχετικά δεδομένα στα ίδια αρχεία, ώστε να έχετε καλύτερες επιδόσεις ερωτημάτων σε κατηγορήματα φίλτρου.

OPTIMIZE schema_name.table_name ZORDER BY (column1, column2)

Χρησιμοποιήστε το Z-Order όταν:

  • Ο πίνακάς σας είναι διαμερισμένος, επειδή το Liquid Clustering δεν λειτουργεί με διαμερισμένους πίνακες.
  • Τα ερωτήματά σας συχνά φιλτράρονται σε δύο ή περισσότερες στήλες μαζί.
  • Τα κατηγορήματά σας είναι αρκετά επιλεκτικά ώστε να επωφελούνται από την παράβλεψη αρχείων.

Συστάσεις αρχιτεκτονικής μενταγιόν

Η αρχιτεκτονική του μενταγιόν (στρώματα Bronze, Silver, Gold) παρέχει ένα πλαίσιο για τη βελτιστοποίηση των στρατηγικών συντήρησης του τραπεζιού με βάση τον σκοπό κάθε στρώσης.

Στρώμα χαλκού (ζώνη προσγείωσης)

Οι χάλκινοι πίνακες επικεντρώνονται στην απόδοση εγγραφής και στην απορρόφηση χαμηλής καθυστέρησης:

  • Προτεραιότητα βελτιστοποίησης: Ταχύτητα πρόσληψης έναντι απόδοσης ανάγνωσης
  • Κατάτμηση: Αποδεκτή αλλά αποθαρρυντική για νέες υλοποιήσεις
  • Μικρά αρχεία: Αποδεκτό καθώς η εστίαση είναι στην ταχύτητα πρόσληψης
  • V-Order: Δεν συνιστάται (προσθέτει επιβάρυνση εγγραφής)
  • Αυτόματη συμπύκνωση: Επιτρέπει τη μείωση μικρών αρχείων, αλλά μπορεί να θυσιαστεί για την ταχύτητα απορρόφησης
  • Διανύσματα διαγραφής: Ενεργοποίηση για πίνακες με μοτίβα συγχώνευσης

Οι χάλκινοι πίνακες δεν πρέπει να προβάλλονται απευθείας σε τελικούς χρήστες ανάλυσης SQL ή Power BI Direct Lake.

Ασημί στρώμα (επιμελημένη ζώνη)

Οι ασημένιοι πίνακες εξισορροπούν την απόδοση εγγραφής και ανάγνωσης:

  • Προτεραιότητα βελτιστοποίησης: Εξισορρόπηση μεταξύ απόδοσης πρόσληψης και ερωτήματος
  • Μεγέθη αρχείων: Μέτρια (128-256 MB) για υποστήριξη λειτουργιών εγγραφής και ανάγνωσης
  • V-Order: Προαιρετικό. ενεργοποίηση εάν το τελικό σημείο ανάλυσης SQL ή η κατανάλωση Power BI είναι σημαντική
  • Liquid Clustering ή Z-Order: Συνιστάται για τη βελτίωση της απόδοσης των ερωτημάτων
  • Αυτόματη συμπύκνωση και βελτιστοποίηση-εγγραφή: Ενεργοποίηση με βάση τις απαιτήσεις κατάντη
  • Διανύσματα διαγραφής: Ενεργοποίηση για πίνακες με συχνές ενημερώσεις
  • Προγραμματισμένη βελτιστοποίηση: Εκτελέστε επιθετικά για να διατηρήσετε τη διάταξη του αρχείου

Χρυσή στρώση (ζώνη σερβιρίσματος)

Οι χρυσοί πίνακες δίνουν προτεραιότητα στην απόδοση ανάγνωσης για κατανάλωση από τον τελικό χρήστη:

  • Προτεραιότητα βελτιστοποίησης: Ανάγνωση απόδοσης για αναλυτικά στοιχεία
  • Μεγέθη αρχείων: Μεγάλο (400 MB έως 1 GB) για βέλτιστες επιδόσεις SQL και Power BI
  • V-Order: Απαιτείται για το Power BI Direct Lake. επωφελής για το τελικό σημείο ανάλυσης SQL
  • Liquid Clustering: Απαιτείται για βέλτιστη παράβλεψη αρχείων
  • Βελτιστοποίηση-εγγραφή: Απαιτείται για σταθερά μεγέθη αρχείων
  • Προγραμματισμένη βελτιστοποίηση: Εκτελέστε επιθετικά για να διατηρήσετε τη βέλτιστη διάταξη

Βελτιστοποιήστε τους πίνακες χρυσού διαφορετικά με βάση την κύρια μηχανή κατανάλωσης:

Κινητήρας κατανάλωσης Σειρά V Μέγεθος αρχείου προορισμού Μέγεθος ομάδας γραμμών
Τελικό σημείο ανάλυσης SQL Ναι 400 MB 2 εκατομμύρια γραμμές
Power BI Direct Lake Ναι 400 MB έως 1 GB 8+ εκατομμύρια σειρές
Spark Προαιρετικό 128 MB έως 1 GB 1-2 εκατομμύρια σειρές

Πολλαπλά αντίγραφα πίνακα

Είναι αποδεκτό να διατηρείτε πολλά αντίγραφα πινάκων που έχουν βελτιστοποιηθεί για διαφορετικά πρότυπα κατανάλωσης:

  • Ένα ασημένιο τραπέζι βελτιστοποιημένο για επεξεργασία Spark
  • Ένας πίνακας Gold βελτιστοποιημένος για τελικό σημείο ανάλυσης SQL και Power BI Direct Lake
  • Διοχετεύσεις δεδομένων που μετασχηματίζουν και τοποθετούν τη σωστή δομή σε κάθε επίπεδο

Η αποθήκευση είναι φθηνή σε σχέση με τον υπολογισμό. Η βελτιστοποίηση των πινάκων για τα πρότυπα κατανάλωσής τους παρέχει καλύτερη εμπειρία χρήστη από την προσπάθεια εξυπηρέτησης όλων των καταναλωτών από μια ενιαία διάταξη πίνακα.

Προσδιορισμός εύρυθμης λειτουργίας πίνακα

Πριν βελτιστοποιήσετε τους πίνακες, αξιολογήστε την τρέχουσα εύρυθμη λειτουργία του πίνακα για να κατανοήσετε τις ανάγκες βελτιστοποίησης.

Επιθεωρήστε απευθείας τα αρχεία Parquet

Μπορείτε να περιηγηθείτε στο φάκελο πίνακα στο OneLake για να ελέγξετε τα μεγέθη μεμονωμένων αρχείων Parquet. Οι υγιείς πίνακες έχουν ομοιόμορφα κατανεμημένα μεγέθη αρχείων. Ψάχνω για:

  • Συνεπή μεγέθη αρχείων: Τα αρχεία πρέπει να έχουν περίπου το ίδιο μέγεθος (σε απόσταση 2 φορές το ένα από το άλλο).
  • Χωρίς εξαιρετικά μικρά αρχεία: Τα αρχεία κάτω των 25 MB υποδηλώνουν κατακερματισμό.
  • Χωρίς εξαιρετικά μεγάλα αρχεία: Τα αρχεία άνω των 2 GB μπορούν να μειώσουν τον παραλληλισμό.

Η ανομοιόμορφη κατανομή μεγέθους αρχείου συχνά υποδηλώνει έλλειψη συμπίεσης ή ασυνεπή μοτίβα εγγραφής σε διαφορετικές εργασίες.

ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΞΗΡΗΣ ΛΕΙΤΟΥΡΓΙΑΣ στο Spark SQL

Χρησιμοποιήστε την DRY RUN επιλογή για να κάνετε προεπισκόπηση των αρχείων που είναι κατάλληλα για βελτιστοποίηση χωρίς να εκτελέσετε τη συμπίεση:

-- Preview files eligible for optimization
OPTIMIZE schema_name.table_name DRY RUN

Η εντολή επιστρέφει μια λίστα αρχείων που θα ξαναγραφτούν κατά τη βελτιστοποίηση. Χρησιμοποιήστε το για:

  • Αξιολογήστε το εύρος της βελτιστοποίησης πριν την εκτελέσετε.
  • Κατανοήστε τον κατακερματισμό αρχείων χωρίς να τροποποιήσετε τον πίνακα.
  • Υπολογίστε το χρόνο βελτιστοποίησης με βάση τον αριθμό των αρχείων που επηρεάζονται.

Κατανομή μεγέθους αρχείου

Χρησιμοποιήστε την ακόλουθη προσέγγιση για να αναλύσετε τα μεγέθη και την κατανομή των αρχείων:

from delta.tables import DeltaTable

# Get table details
details = spark.sql("DESCRIBE DETAIL schema_name.table_name").collect()[0]
print(f"Table size: {details['sizeInBytes'] / (1024**3):.2f} GB")
print(f"Number of files: {details['numFiles']}")

# Average file size
avg_file_size_mb = (details['sizeInBytes'] / details['numFiles']) / (1024**2)
print(f"Average file size: {avg_file_size_mb:.2f} MB")

Η διανομή μπορεί να είναι λοξή, καθώς τα αρχεία κοντά στην κεφαλή του πίνακα ή από ένα συγκεκριμένο διαμέρισμα ενδέχεται να μην είναι βελτιστοποιημένα.

Μπορείτε να αξιολογήσετε την κατανομή εκτελώντας ένα ερώτημα που ομαδοποιεί με βάση τα κλειδιά διαμερισμού ή ομαδοποίησης του πίνακα.

Προσδιορίστε τις ανάγκες βελτιστοποίησης

Με βάση τη μηχανή κατανάλωσης, συγκρίνετε τα πραγματικά μεγέθη αρχείων με τα μεγέθη στόχου:

Κινητήρας Μέγεθος αρχείου προορισμού Εάν τα αρχεία είναι μικρότερα Εάν τα αρχεία είναι μεγαλύτερα
Τελικό σημείο ανάλυσης SQL 400 MB Εκτελέστε το OPTIMIZE Τα αρχεία είναι αποδεκτά
Power BI Direct Lake 400 MB έως 1 GB Εκτελέστε το OPTIMIZE VORDER Τα αρχεία είναι αποδεκτά
Spark 128 MB έως 1 GB Ενεργοποίηση αυτόματης συμπίεσης Τα αρχεία είναι αποδεκτά

Ιστορικό πινάκων και αρχείο καταγραφής συναλλαγών

Ελέγξτε το ιστορικό του πίνακα για να κατανοήσετε τα μοτίβα εγγραφής και τη συχνότητα συντήρησης:

-- View table history
DESCRIBE HISTORY schema_name.table_name

-- Check for auto-compaction runs
-- Auto-compaction shows as OPTIMIZE with auto=true in operationParameters

Βέλτιστες πρακτικές ρύθμισης παραμέτρων

Χρήση ιδιοτήτων πίνακα σε ρυθμίσεις συνεδριών

Οι ιδιότητες πίνακα διατηρούνται σε όλες τις περιόδους λειτουργίας και διασφαλίζουν συνεπή συμπεριφορά σε όλες τις εργασίες και τους συντάκτες:

# Recommended: Set at table level for consistency
spark.sql("""
    CREATE TABLE schema_name.optimized_table (
        id INT,
        data STRING
    )
    TBLPROPERTIES (
        'delta.autoOptimize.optimizeWrite' = 'true',
        'delta.autoOptimize.autoCompact' = 'true',
        'delta.parquet.vorder.enabled' = 'true'
    )
""")

Οι ρυθμίσεις παραμέτρων σε επίπεδο περιόδου λειτουργίας ισχύουν μόνο για την τρέχουσα περίοδο λειτουργίας Spark και μπορεί να προκαλέσουν ασυνεπείς εγγραφές, εάν διαφορετικές περίοδοι λειτουργίας χρησιμοποιούν διαφορετικές ρυθμίσεις παραμέτρων.

Ενεργοποίηση προσαρμόσιμου μεγέθους αρχείου προορισμού

Το προσαρμόσιμο μέγεθος αρχείου προορισμού προσαρμόζει αυτόματα τους στόχους μεγέθους αρχείου με βάση το μέγεθος του πίνακα:

spark.conf.set('spark.microsoft.delta.targetFileSize.adaptive.enabled', 'true')

Αυτή η δυνατότητα:

  • Ξεκινά με μικρότερα αρχεία (128 MB) για μικρούς πίνακες
  • Κλιμάκωση έως 1 GB για τραπέζια άνω των 10 TB
  • Επαναξιολογεί αυτόματα κατά τη διάρκεια OPTIMIZE των λειτουργιών

Ενεργοποίηση στόχων συμπίεσης σε επίπεδο αρχείου

Αποτρέψτε την επανεγγραφή αρχείων που έχουν συμπιεστεί προηγουμένως όταν αλλάζουν τα μεγέθη προορισμού:

spark.conf.set('spark.microsoft.delta.optimize.fileLevelTarget.enabled', 'true')

Σύνοψη των συστάσεων

Στρώση Αυτόματη συμπύκνωση Βελτιστοποίηση-εγγραφή Σειρά V Συμπλέγματα υγρών Προγραμματισμένο OPTIMIZE
Μπρούντζος Ενεργοποίηση (προαιρετικό) Ενεργοποίηση όχι όχι Προαιρετικό
Ασήμι Ενεργοποίηση Ενεργοποίηση Προαιρετικό Ναι Επιθετικός
Χρυσός Ενεργοποίηση Ενεργοποίηση Ναι Ναι Επιθετικός

Για συγκεκριμένα σενάρια, χρησιμοποιήστε τις ακόλουθες συστάσεις:

  • Spark-to-Spark: Εστίαση στη βελτιστοποίηση μεγέθους αρχείου. V-Order προαιρετικό.
  • Spark-to-SQL: Ενεργοποίηση βελτιστοποίησης-εγγραφής και αυτόματης συμπύκνωσης. Στοχεύστε αρχεία 400 MB με 2 εκατομμύρια ομάδες γραμμών.
  • Απορρόφηση ροής: Ενεργοποίηση αυτόματης συμπίεσης. Προγραμματίστε πρόσθετες OPTIMIZE εργασίες για καταναλωτές SQL.
  • Power BI Direct Lake: Ενεργοποίηση V-Order; στοχεύστε 8+ εκατομμύρια ομάδες σειρών. τρέξιμο OPTIMIZE VORDER.