Στατιστικά στοιχεία στην αποθήκη δεδομένων Fabric
Ισχύει για:✅ Τελικό σημείο ανάλυσης SQL και Αποθήκη στο Microsoft Fabric
Η Αποθήκη στο Microsoft Fabric χρησιμοποιεί μια μηχανή ερωτημάτων για να δημιουργήσει ένα σχέδιο εκτέλεσης για ένα συγκεκριμένο ερώτημα SQL. Όταν υποβάλετε ένα ερώτημα, ο βελτιστοποιητής ερωτημάτων προσπαθεί να απαριθμήσει όλα τα πιθανά προγράμματα και να επιλέξει τον πιο αποτελεσματικό υποψήφιο. Για να προσδιορίσετε ποιο σχέδιο θα απαιτούσε τη μικρότερη επιβάρυνση (I/O, CPU, μνήμη), ο μηχανισμός πρέπει να είναι σε θέση να αξιολογήσει την ποσότητα εργασίας ή γραμμών που μπορεί να υποβληθούν σε επεξεργασία σε κάθε τελεστή. Στη συνέχεια, με βάση το κόστος κάθε προγράμματος, επιλέγει εκείνο με το ελάχιστο ποσό εκτιμώμενης εργασίας. Τα στατιστικά στοιχεία είναι αντικείμενα που περιέχουν σχετικές πληροφορίες σχετικά με τα δεδομένα σας, για να επιτρέπεται στη βελτιστοποίηση ερωτημάτων να εκτιμήσει αυτά τα έξοδα.
Τρόπος χρήσης στατιστικών στοιχείων
Για να επιτύχετε βέλτιστες επιδόσεις ερωτημάτων, είναι σημαντικό να έχετε ακριβή στατιστικά στοιχεία. Το Microsoft Fabric υποστηρίζει προς το παρόν τις παρακάτω διαδρομές για την παροχή σχετικών και ενημερωμένων στατιστικών στοιχείων:
- Στατιστικά στοιχεία που ορίζονται από τον χρήστη
- Ο χρήστης χρησιμοποιεί με μη αυτόματο τρόπο τη σύνταξη της γλώσσας ορισμού δεδομένων (DDL) για τη δημιουργία, ενημέρωση και απόθεση στατιστικών στοιχείων, ανάλογα με τις ανάγκες
- Αυτόματες στατιστικές
- Η μηχανή δημιουργεί και διατηρεί αυτόματα στατιστικά στοιχεία κατά τον χρόνο ερωτήματος
Μη αυτόματα στατιστικά στοιχεία για όλους τους πίνακες
Η παραδοσιακή επιλογή διατήρησης εύρυθμης λειτουργίας στατιστικών στοιχείων είναι διαθέσιμη στο 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:
- προβολή καταλόγου sys.stats
- προβολή καταλόγου sys.stats_columns
- συνάρτηση συστήματος STATS_DATE
Αυτόματα στατιστικά στοιχεία στο ερώτημα
Κάθε φορά που εκδίδειτε ένα ερώτημα και η βελτιστοποίηση ερωτημάτων απαιτεί στατιστικά στοιχεία για την εξερεύνηση σχεδίων, το 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
LEFT JOIN sys.stats_columns AS sc
ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
LEFT 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;
Τώρα, μπορείτε να βρείτε το 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, εκτός από τα στατιστικά στοιχεία που δημιουργούνται με μη αυτόματο τρόπο και τα στατιστικά στοιχεία που δημιουργούνται αυτόματα. Αυτά τα αντικείμενα δεν χρησιμοποιούνται για βελτιστοποίηση ερωτημάτων.