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


Στατιστικά στοιχεία στην αποθήκη δεδομένων Fabric

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

Η Αποθήκη στο Microsoft Fabric χρησιμοποιεί μια μηχανή ερωτημάτων για να δημιουργήσει ένα σχέδιο εκτέλεσης για ένα συγκεκριμένο ερώτημα SQL. Όταν υποβάλετε ένα ερώτημα, ο βελτιστοποιητής ερωτημάτων προσπαθεί να απαριθμήσει όλα τα πιθανά προγράμματα και να επιλέξει τον πιο αποτελεσματικό υποψήφιο. Για να προσδιορίσετε ποιο σχέδιο θα απαιτούσε τη μικρότερη επιβάρυνση (I/O, CPU, μνήμη), ο μηχανισμός πρέπει να είναι σε θέση να αξιολογήσει την ποσότητα εργασίας ή γραμμών που μπορεί να υποβληθούν σε επεξεργασία σε κάθε τελεστή. Στη συνέχεια, με βάση το κόστος κάθε προγράμματος, επιλέγει εκείνο με το ελάχιστο ποσό εκτιμώμενης εργασίας. Τα στατιστικά στοιχεία είναι αντικείμενα που περιέχουν σχετικές πληροφορίες σχετικά με τα δεδομένα σας, για να επιτρέπεται στη βελτιστοποίηση ερωτημάτων να εκτιμήσει αυτά τα έξοδα.

Πώς μπορείτε να αξιοποιήσετε τα στατιστικά στοιχεία

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

Μη αυτόματα στατιστικά στοιχεία για όλους τους πίνακες

Η παραδοσιακή επιλογή διατήρησης εύρυθμης λειτουργίας στατιστικών στοιχείων είναι διαθέσιμη στο Microsoft Fabric. Οι χρήστες μπορούν να δημιουργούν, ενημερώνουν και αποθέσουν στατιστικά στοιχεία μίας στήλης που βασίζονται σε ιστογράμματα με ΤΑ ΣΤΑΤΙΣΤΙΚΑ ΔΗΜΙΟΥΡΓΙΑ, ΕΝΗΜΕΡΏΣΤΕ ΣΤΑΤΙΣΤΙΚΑ και ΣΤΑΤΙΣΤΙΚΑ DROP, αντίστοιχα. Οι χρήστες μπορούν επίσης να προβάλουν τα περιεχόμενα στατιστικών στοιχείων μίας στήλης που βασίζονται σε ιστογράμματα με SHOW_STATISTICS DBCC. Προς το παρόν, υποστηρίζεται μια περιορισμένη έκδοση αυτών των δηλώσεων.

  • Εάν δημιουργείτε στατιστικά στοιχεία με μη αυτόματο τρόπο, εξετάστε το ενδεχόμενο να εστιάσετε σε αυτά που χρησιμοποιούνται σε μεγάλο βαθμό στον φόρτο εργασίας ερωτημάτων σας (ειδικά σε GROUP BYs, ORDER BYs, φίλτρα και JOIN).
  • Εξετάστε το ενδεχόμενο να ενημερώνετε τακτικά στατιστικά στοιχεία σε επίπεδο στηλών μετά από αλλαγές δεδομένων που αλλάζουν σημαντικά τον αριθμό γραμμών ή τη διανομή των δεδομένων.

Παραδείγματα μη αυτόματης συντήρησης στατιστικών στοιχείων

Για να δημιουργήσετε στατιστικά στοιχεία για τον dbo.DimCustomer πίνακα, με βάση όλες τις γραμμές σε μια στήλη CustomerKey:

CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;

Για να ενημερώσετε με μη αυτόματο τρόπο το αντικείμενο DimCustomer_CustomerKey_FullScanστατιστικών στοιχείων , ίσως μετά από μια μεγάλη ενημέρωση δεδομένων:

UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;  

Για να εμφανίσετε πληροφορίες σχετικά με το αντικείμενο στατιστικών στοιχείων:

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");

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

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;

Για να αποθέσετε με μη αυτόματο τρόπο το αντικείμενο DimCustomer_CustomerKey_FullScanστατιστικών στοιχείων :

DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;

Τα ακόλουθα αντικείμενα T-SQL μπορούν επίσης να χρησιμοποιηθούν για να ελέγξετε στατιστικά στοιχεία που δημιουργήθηκαν με μη αυτόματο τρόπο και δημιουργήθηκαν αυτόματα στο Microsoft Fabric:

Αυτόματα στατιστικά στοιχεία στο ερώτημα

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

Επαλήθευση αυτόματων στατιστικών κατά τον χρόνο ερωτήματος

Υπάρχουν διάφορες περιπτώσεις όπου μπορείτε να περιμένετε κάποιον τύπο αυτόματων στατιστικών στοιχείων. Οι συνηθέστερες είναι στατιστικά στοιχεία που βασίζονται σε ιστογράμματα, τα οποία ζητούνται από τη βελτιστοποίηση ερωτημάτων για στήλες που αναφέρονται στα GROUP BYs, JOIN, DISTINCT όρους, φίλτρα (όροι WHERE) και ORDER BYs. Για παράδειγμα, εάν θέλετε να δείτε την αυτόματη δημιουργία αυτών των στατιστικών στοιχείων, ένα ερώτημα θα ενεργοποιήσει τη δημιουργία εάν δεν υπάρχουν ακόμα στατιστικά COLUMN_NAME στοιχεία. Για παράδειγμα:

SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;

Σε αυτή την περίπτωση, θα πρέπει να αναμένετε ότι έχουν δημιουργηθεί στατιστικά στοιχεία COLUMN_NAME . Εάν η στήλη ήταν επίσης στήλη varchar, θα δείτε επίσης τα στατιστικά στοιχεία μέσου μήκους στήλης που δημιουργήθηκαν. Εάν θέλετε να επικυρώσετε ότι τα στατιστικά στοιχεία δημιουργήθηκαν αυτόματα, μπορείτε να εκτελέσετε το ακόλουθο ερώτημα:

select
    object_name(s.object_id) AS [object_name],
    c.name AS [column_name],
    s.name AS [stats_name],
    s.stats_id,
    STATS_DATE(s.object_id, s.stats_id) AS [stats_update_date], 
    s.auto_created,
    s.user_created,
    s.stats_generation_method_desc 
FROM sys.stats AS s 
INNER JOIN sys.objects AS o 
ON o.object_id = s.object_id 
INNER JOIN sys.stats_columns AS sc 
ON s.object_id = sc.object_id 
AND s.stats_id = sc.stats_id 
INNER JOIN sys.columns AS c 
ON sc.object_id = c.object_id 
AND c.column_id = sc.column_id
WHERE o.type = 'U' -- Only check for stats on user-tables
    AND s.auto_created = 1
    AND o.name = '<YOUR_TABLE_NAME>'
ORDER BY object_name, column_name;

Αυτό το ερώτημα αναζητά μόνο στατιστικά στοιχεία βάσει στηλών. Εάν θέλετε να δείτε όλα τα στατιστικά στοιχεία που υπάρχουν για αυτόν τον πίνακα, καταργήστε τα JOIN στις sys.stats_columns και sys.columns.

Τώρα, μπορείτε να βρείτε το statistics_name στατιστικό στοιχείο ιστογράμματος που δημιουργείται αυτόματα (θα πρέπει να είναι κάτι σαν _WA_Sys_00000007_3B75D760) και να εκτελέσετε το ακόλουθο T-SQL:

DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');

Για παράδειγμα:

DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');

Η Updated τιμή στο σύνολο αποτελεσμάτων του DBCC SHOW_STATISTICS θα πρέπει να είναι μια ημερομηνία (σε ΜΟΡΦΉ UTC) παρόμοια με εκείνη κατά την εκτέλεση του αρχικού ερωτήματος GROUP BY.

Αυτά τα στατιστικά στοιχεία που δημιουργούνται αυτόματα μπορούν έπειτα να χρησιμοποιηθούν σε επόμενα ερωτήματα από τη μηχανή ερωτημάτων για τη βελτίωση της κοστολόγησης του σχεδίου και της αποδοτικότητας εκτέλεσης. Εάν προκύψουν αρκετές αλλαγές στον πίνακα, η μηχανή ερωτημάτων θα ανανεώσει επίσης αυτά τα στατιστικά στοιχεία για να βελτιώσει τη βελτιστοποίηση του ερωτήματος. Το ίδιο προηγούμενο δείγμα άσκησης μπορεί να εφαρμοστεί μετά την σημαντική αλλαγή του πίνακα. Στο Fabric, η μηχανή ερωτημάτων SQL χρησιμοποιεί το ίδιο όριο αναπλήρωσης με τον SQL Server 2016 (13.x) για την ανανέωση στατιστικών στοιχείων.

Τύποι στατιστικών στοιχείων που δημιουργούνται αυτόματα

Στο Microsoft Fabric, υπάρχουν πολλοί τύποι στατιστικών στοιχείων που δημιουργούνται αυτόματα από τη μηχανή για τη βελτίωση των προγραμμάτων ερωτημάτων. Προς το παρόν, μπορούν να βρεθούν στο sys.stats , παρόλο που δεν είναι όλες αξιοποιήσιμες:

  • Στατιστικά ιστογράμματος
    • Δημιουργήθηκε ανά στήλη και χρειάζεται στατιστικά στοιχεία ιστογράμματος κατά το χρόνο ερωτήματος
    • Αυτά τα αντικείμενα περιέχουν πληροφορίες ιστογράμματος και πυκνότητας σχετικά με την κατανομή μιας συγκεκριμένης στήλης. Παρόμοια με τα στατιστικά στοιχεία που δημιουργούνται αυτόματα κατά τον χρόνο ερωτήματος στους αποκλειστικούς χώρους συγκέντρωσης του Azure Synapse Analytics.
    • Το όνομα αρχίζει με _WA_Sys_.
    • Τα περιεχόμενα μπορούν να προβληθούν με SHOW_STATISTICS DBCC
  • Στατιστικά στοιχεία μέσου μήκους στήλης
    • Δημιουργήθηκε για στήλες μεταβλητών χαρακτήρων (varchar) μεγαλύτερες από 100 που χρειάζονται μέσο μήκος στήλης κατά το χρόνο ερωτήματος.
    • Αυτά τα αντικείμενα περιέχουν μια τιμή που αντιπροσωπεύει το μέσο μέγεθος γραμμής της στήλης varchar τη στιγμή της δημιουργίας στατιστικών στοιχείων.
    • Το όνομα αρχίζει με ACE-AverageColumnLength_.
    • Δεν είναι δυνατή η προβολή των περιεχομένων και δεν είναι δυνατή η προβολή τους από τον χρήστη.
  • Στατιστικά πληθικότητας βάσει πίνακα
    • Δημιουργήθηκε ανά πίνακα που χρειάζεται εκτίμηση πληθικότητας κατά τον χρόνο ερωτήματος.
    • Αυτά τα αντικείμενα περιέχουν μια εκτίμηση του πλήθους γραμμών ενός πίνακα.
    • Ονομάζεται ACE-Cardinality.
    • Δεν είναι δυνατή η προβολή των περιεχομένων και δεν είναι δυνατή η προβολή τους από τον χρήστη.

Περιορισμοί

  • Μόνο στατιστικά στοιχεία ιστογράμματος μίας στήλης μπορούν να δημιουργηθούν και να τροποποιηθούν με μη αυτόματο τρόπο.
  • Δεν υποστηρίζεται δημιουργία στατιστικών πολλών στηλών.
  • Άλλα αντικείμενα στατιστικών στοιχείων μπορεί να εμφανίζονται στο sys.stats, εκτός από τα στατιστικά στοιχεία που δημιουργούνται με μη αυτόματο τρόπο και τα στατιστικά στοιχεία που δημιουργούνται αυτόματα. Αυτά τα αντικείμενα δεν χρησιμοποιούνται για βελτιστοποίηση ερωτημάτων.