Κοινή χρήση μέσω


Ζητήματα επιδόσεων τελικού σημείου ανάλυσης SQL

Ισχύει για:✅ Τελικό σημείο ανάλυσης SQL στο Microsoft Fabric

Το τελικό σημείο ανάλυσης SQL σάς επιτρέπει να υποβάλετε ερωτήματα για δεδομένα στο lakehouse χρησιμοποιώντας τη γλώσσα T-SQL και το πρωτόκολλο TDS. Κάθε λίμνη έχει ένα τελικό σημείο ανάλυσης SQL. Ο αριθμός των τελικών σημείων ανάλυσης SQL σε έναν χώρο εργασίας συμφωνεί με τον αριθμό των λιμνοθάφτων και των βάσεων δεδομένων κατοπτρισμού που έχουν παραθεί σε αυτόν τον χώρο εργασίας.

Μια διαδικασία παρασκηνίου είναι υπεύθυνη για τη σάρωση lakehouse για αλλαγές και τη διατήρηση του τελικού σημείου ανάλυσης SQL ενημερωμένο για όλες τις αλλαγές που αφορούν τις lakehouses σε έναν χώρο εργασίας. Η διαχείριση της διαδικασίας συγχρονισμού γίνεται με διαφανή τρόπο από την πλατφόρμα Microsoft Fabric. Όταν εντοπίζεται μια αλλαγή σε μια λίμνη, μια διαδικασία παρασκηνίου ενημερώνει τα μετα-δεδομένα και το τελικό σημείο ανάλυσης SQL αντικατοπτρίζει τις αλλαγές που εφαρμόζονται σε πίνακες lakehouse. Υπό κανονικές συνθήκες λειτουργίας, η καθυστέρηση μεταξύ ενός τελικού σημείου lakehouse και ανάλυσης SQL είναι λιγότερο από ένα λεπτό. Η πραγματική χρονική διάρκεια μπορεί να κυμαίνεται από λίγα δευτερόλεπτα έως λεπτά, ανάλογα με ορισμένους παράγοντες που εμφανίζονται σε αυτό το άρθρο.

Σχήμα που δημιουργείται αυτόματα στο τελικό σημείο ανάλυσης SQL του Lakehouse

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

Για κάθε πίνακα Delta στο Lakehouse, το τελικό σημείο ανάλυσης SQL δημιουργεί αυτόματα έναν πίνακα στο κατάλληλο σχήμα. Για τύπους δεδομένων σχήματος που δημιουργούνται αυτόματα για το τελικό σημείο ανάλυσης SQL, ανατρέξτε στο θέμα Τύποι δεδομένων στο Microsoft Fabric.

Οι πίνακες στο τελικό σημείο ανάλυσης SQL δημιουργούνται με μια μικρή καθυστέρηση. Μόλις δημιουργήσετε ή ενημερώσετε τον πίνακα Delta Lake στη λίμνη, ο πίνακας τελικού σημείου ανάλυσης SQL που αναφέρει τον πίνακα Delta Lake θα δημιουργηθεί/ανανεωθεί αυτόματα.

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

Μπορείτε να εξαναγκάσετε με μη αυτόματο τρόπο μια ανανέωση της αυτόματης σάρωσης μετα-δεδομένων στην πύλη Fabric. Στη σελίδα για το τελικό σημείο ανάλυσης SQL, επιλέξτε το κουμπί Ανανέωση στη γραμμή εργαλείων εξερεύνησης για να ανανεώσετε το σχήμα. Μεταβείτε στην ενότητα Υποβολή ερωτήματος στο τελικό σημείο ανάλυσης SQL και αναζητήστε το κουμπί ανανέωσης, όπως φαίνεται στην παρακάτω εικόνα.

Στιγμιότυπο οθόνης από την πύλη Fabric που εμφανίζει το κουμπί σχήματος ανανέωσης τελικού σημείου ανάλυσης SQL.

Καθοδήγηση

  • Ο αυτόματος εντοπισμός μετα-δεδομένων παρακολουθεί τις αλλαγές που διαπράττονται σε lakehouses και είναι μία μοναδική παρουσία ανά χώρο εργασίας Fabric. Εάν παρατηρείτε αυξημένο λανθάνοντα χρόνου για αλλαγές στον συγχρονισμό μεταξύ των lakehouses και του τελικού σημείου ανάλυσης SQL, αυτό μπορεί να οφείλεται σε μεγάλο αριθμό lakehouses σε έναν χώρο εργασίας. Σε ένα τέτοιο σενάριο, εξετάστε το ενδεχόμενο μετεγκατάστασης κάθε lakehouse σε ξεχωριστό χώρο εργασίας, καθώς αυτό επιτρέπει την κλιμάκωση του αυτόματου εντοπισμού μετα-δεδομένων.
  • Τα αρχεία Parquet είναι αμετάβλητα βάσει σχεδίασης. Όταν υπάρχει μια λειτουργία ενημέρωσης ή διαγραφής, ένας πίνακας Delta θα προσθέσει νέα αρχεία parquet με το σύνολο αλλαγών, αυξάνοντας τον αριθμό των αρχείων με την πάροδο του χρόνου, ανάλογα με τη συχνότητα των ενημερώσεων και διαγραφών. Εάν τελικά δεν έχει προγραμματιστεί καμία συντήρηση, αυτό το μοτίβο δημιουργεί μια επιβάρυνση ανάγνωσης και αυτό επηρεάζει τον χρόνο που απαιτείται για τον συγχρονισμό αλλαγών στο τελικό σημείο ανάλυσης SQL. Για να αντιμετωπιστεί αυτό το θέμα, προγραμματίστε τακτικές λειτουργίες συντήρησης πινάκων lakehouse.
  • Σε ορισμένα σενάρια, μπορεί να παρατηρήσετε ότι οι αλλαγές που αφορούν μια λίμνη δεν είναι ορατές στο σχετικό τελικό σημείο ανάλυσης SQL. Για παράδειγμα, μπορεί να δημιουργήσατε έναν νέο πίνακα στο Lakehouse, αλλά δεν εμφανίζεται στο τελικό σημείο ανάλυσης SQL. Εναλλακτικά, μπορεί να έχετε δεσμεύσει μεγάλο αριθμό γραμμών σε έναν πίνακα σε μια λίμνη, αλλά αυτά τα δεδομένα δεν είναι ορατά στο τελικό σημείο της ανάλυσης SQL. Συνιστούμε να ξεκινήσετε έναν συγχρονισμό μετα-δεδομένων κατ' απαίτηση, που ενεργοποιείται από την επιλογή ανανέωσης του προγράμματος επεξεργασίας ερωτημάτων SQL στην κορδέλα. Αυτή η επιλογή επιβάλλει έναν συγχρονισμό μετα-δεδομένων κατ' απαίτηση, αντί να περιμένει τον συγχρονισμό μετα-δεδομένων στο παρασκήνιο για να ολοκληρωθεί.
  • Δεν είναι όλες οι δυνατότητες Delta κατανοητές από τη διαδικασία αυτόματου συγχρονισμού. Για περισσότερες πληροφορίες σχετικά με τη λειτουργικότητα που υποστηρίζεται από κάθε μηχανισμό στο Fabric, ανατρέξτε στο θέμα Διαλειτουργικότητα του Delta Lake.
  • Εάν υπάρχει μια εξαιρετικά μεγάλη όγκος πινάκων που αλλάζουν κατά τη διάρκεια της επεξεργασίας Μετασχηματισμός εξαγωγής και φόρτωσης (ETL), μπορεί να προκύψει μια αναμενόμενη καθυστέρηση μέχρι να επεξεργαστούν όλες τις αλλαγές.

Ζητήματα μεγέθους διαμερίσματος

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

  • Μια στήλη με υψηλή πληθικότητα (κυρίως ή εξ ολοκλήρου κατασκευασμένη από μοναδικές τιμές) οδηγεί σε μεγάλο αριθμό διαμερισμάτων. Ένας μεγάλος αριθμός διαμερισμάτων επηρεάζει αρνητικά την απόδοση της σάρωσης εντοπισμού μετα-δεδομένων για αλλαγές. Εάν η πληθικότητα μιας στήλης είναι υψηλή, επιλέξτε μια άλλη στήλη για διαμερισμό.
  • Το μέγεθος κάθε διαμερίσματος μπορεί επίσης να επηρεάσει τις επιδόσεις. Η πρότασή μας είναι να χρησιμοποιήσετε μια στήλη που θα είχε ως αποτέλεσμα ένα διαμέρισμα τουλάχιστον (ή κοντά) 1 GB. Συνιστούμε να ακολουθείτε τις βέλτιστες πρακτικές για τη συντήρηση πινάκων δέλτα. βελτιστοποίηση. Για μια δέσμη ενεργειών python για την αξιολόγηση διαμερισμάτων, ανατρέξτε στο δείγμα δέσμης ενεργειών για λεπτομέρειες διαμερίσματος.

Ένας μεγάλος όγκος αρχείων parquet μικρού μεγέθους αυξάνει τον χρόνο που απαιτείται για τον συγχρονισμό των αλλαγών μεταξύ ενός lakehouse και του σχετικού τελικού σημείου ανάλυσης SQL. Μπορεί να καταλήξετε με μεγάλο αριθμό αρχείων parquet σε έναν πίνακα δέλτα για έναν ή περισσότερους λόγους:

  • Εάν επιλέξετε ένα διαμέρισμα για έναν πίνακα δέλτα με μεγάλο αριθμό μοναδικών τιμών, διαμερίζεται από κάθε μοναδική τιμή και μπορεί να είναι υπερ-διαμερισμένες. Επιλέξτε μια στήλη διαμερίσματος που δεν έχει υψηλή πληθικότητα και έχει ως αποτέλεσμα μεμονωμένο μέγεθος διαμερίσματος τουλάχιστον 1 GB.
  • Οι ρυθμοί πρόσληψης δεδομένων δέσμης και ροής μπορεί επίσης να οδηγήσουν σε μικρά αρχεία, ανάλογα με τη συχνότητα και το μέγεθος των αλλαγών που γράφονται σε ένα lakehouse. Για παράδειγμα, μπορεί να υπάρχει μικρός όγκος αλλαγών που εισέρχονται στο lakehouse και αυτό θα είχε ως αποτέλεσμα μικρά αρχεία parquet. Για να αντιμετωπιστεί αυτό, συνιστούμε την εφαρμογή τακτικής συντήρησης πίνακα lakehouse.

Δείγμα δέσμης ενεργειών για λεπτομέρειες διαμερίσματος

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

  1. Πρώτα, πρέπει να καταχωρήσετε τη διαδρομή ABSFF για τον πίνακα δέλτα σας στη μεταβλητή delta_table_path.
    • Μπορείτε να λάβετε τη διαδρομή ABFSS ενός πίνακα δέλτα από την Εξερεύνηση πύλης Fabric. Κάντε δεξί κλικ στο όνομα του πίνακα και, στη συνέχεια, επιλέξτε COPY PATH από τη λίστα επιλογών.
  2. Η δέσμη ενεργειών εξάγει όλα τα διαμερίσματα για τον πίνακα δέλτα.
  3. Η δέσμη ενεργειών επαναλαμβάνεται σε κάθε διαμέρισμα για να υπολογιστεί το συνολικό μέγεθος και ο αριθμός των αρχείων.
  4. Η δέσμη ενεργειών εξάγει τις λεπτομέρειες των διαμερισμάτων, των αρχείων ανά διαμερίσματα και του μεγέθους ανά διαμέρισμα σε GB.

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

# Purpose: Print out details of partitions, files per partitions, and size per partition in GB.
  from notebookutils import mssparkutils

# Define ABFSS path for your delta table. You can get ABFSS path of a delta table by simply right-clicking on table name and selecting COPY PATH from the list of options.
  delta_table_path = "abfss://<workspace id>@<onelake>.dfs.fabric.microsoft.com/<lakehouse id>/Tables/<tablename>"

# List all partitions for given delta table
partitions = mssparkutils.fs.ls(delta_table_path)

# Initialize a dictionary to store partition details
partition_details = {}

# Iterate through each partition
for partition in partitions:
  if partition.isDir:
      partition_name = partition.name
      partition_path = partition.path
      files = mssparkutils.fs.ls(partition_path)
      
      # Calculate the total size of the partition

      total_size = sum(file.size for file in files if not file.isDir)
      
      # Count the number of files

      file_count = sum(1 for file in files if not file.isDir)
      
      # Write partition details

      partition_details[partition_name] = {
          "size_bytes": total_size,
          "file_count": file_count
      }
      
# Print the partition details
for partition_name, details in partition_details.items():
  print(f"{partition_name}, Size: {details['size_bytes']:.2f} bytes, Number of files: {details['file_count']}")