Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition
Εισαγωγή (1) Εναλλακτικοί τρόποι για τον υπολογισμό ενός ερωτήματος Ισοδύναμες εκφράσεις Διαφορετικοί αλγόριθμοι για κάθε λειτουργία Η διαφορά κόστους ανάμεσα σε μία καλή και μία κακή προσέγγιση υπολογισμού ενός ερωτήματος μπορεί να είναι τεράστια. Παράδειγμα: εφαρμόζοντας r X s ακολουθούμενο από μία επιλογή r.a = s.b είναι πιο αργό από το να εκτελέσουμε ένα join πάνω στη ίδια συνθήκη Ανάγκη εκτίμησης του κόστους λειτουργιών Εξαρτάται σημαντικά από τη στατιστική πληροφορία για τις σχέσεις που πρέπει να διατηρεί η βάση δεδομένων π.χ. number of tuples, number of distinct values for join attributes, etc. Ανάγκη να εκτιμήσουμε στατιστικές για τα ενδιάμεσα αποτελέσματα για να εκτιμήσουμε το κόστος πολύπλοκων εκφράσεων Βάσεις Δεδομένων, Παν. Πειραιά 2
Εισαγωγή (2) Σχέσεις που παράγονται από ισοδύναμες εκφράσεις έχουν το ίδιο σύνολο χαρακτηριστικών και περιέχουν το ίδιο σύνολο εγγραφών, παρότι τα χαρακτηριστικά τους μπορούν να ταξινομούνται διαφορετικά. Βάσεις Δεδομένων, Παν. Πειραιά 3
Εισαγωγή (3) Η δημιουργία των πλάνων υπολογισμού ερωτήσεων για μία έκφραση περιλαμβάνει διάφορα βήματα: 1. Δημιουργία λογικά ισοδύναμων εκφράσεων με τη δοθείσα παράσταση Χρήση ισοδύναμων κανόνων για να μετασχηματίσουμε μία έκφραση σε μία ισοδύναμη της. 2. Σημείωση των παραστάσεων που προκύπτουν για να πάρουμε εναλλακτικά πλάνα ερωτήσεων 3. Επιλογή του φθηνότερου πλάνου με βάση το κόστος Η συνολική διαδικασία καλείται βελτιστοποίηση με βάση το κόστος. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4
Στατιστική πληροφορία για Εκτίμηση Κόστους n r : number of tuples in a relation r. b r : number of blocks containing tuples of r. s r : size of a tuple of r. f r : blocking factor of r αριθμός εγγραφών του r που χωράνε σε ένα block. V(A, r): αριθμός διακριτών τιμών που εμφανίζονται στο r για το χαρακτηριστικό A; Ίδιο σαν το μέγεθος του A (r). SC(A, r): μέσος αριθμός εγγραφών που ικανοποιούν την ισότητα στο Α. Εάν οι εγγραφές του r αποθηκεύονται μαζί σ ένα αρχείο, τότε: b r Στατιστικές για ευρετήρια, π.χ. ύψος ευρετηρίων n f r r Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 5
Μέτρα κόστους ερώτησης Η προσπέλαση του δίσκου είναι το βασικότερο κόστος και είναι σχετικά εύκολο να εκτιμηθεί. Ο αριθμός block που μεταφέρονται από το δίσκο χρησιμοποιείται σαν μέτρο του πραγματικού κόστους υπολογισμού ερωτήματος. Υποθέτουμε ότι όλες οι μέθοδοι μεταφοράς blocks από δίσκο έχουν το ίδιο κόστος. Δεν λαμβάνουμε υπόψη το κόστος για την εγγραφή του αποτελέσματος στο δίσκο. Αναφερόμαστε στο κόστος εκτίμησης του αλγορίθμου A ως E A Βάσεις Δεδομένων, Παν. Πειραιά 6
Εκτίμηση μεγέθους επιλογής Equality selection A=v (r) SC(A, r) : αριθμός εγγραφών που ικανοποιούν την επιλογή SC(A, r)/f r αριθμός blocks που θα καταλάβουν αυτές οι εγγραφές π.χ. Κόστος δυαδικής αναζήτησης E SC( A, r ) fr log 2 ( br ) 1 a 2 Συνθήκη ισότητας στο κλειδί: SC(A,r) = 1 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 7
Στατιστικές πληροφορίες για παραδείγματα f account = 20 (20 tuples of account fit in one block) V(branch-name, account) = 50 (50 branches) V(balance, account) = 500 (500 different balance values), ο αριθμός των διαφορετικών τιμών που εμφανίζονται στη σχέση account για το χαρακτηριστικό balance Π account = 10000 (account has 10,000 tuples) Τα ακόλουθα ευρετήρια υπάρχουν στο account: Πρωτεύον B + -tree ευρετήριο για το χαρακτηριστικό branch-name Δευτερεύον B + -tree ευρετήριο για το χαρακτηριστικό balance Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 8
Εκτίμηση μεγέθους επιλογής Επιλογές της μορφής AV (r) (ανάλογα A V (r)) Έστω c αριθμός εγγραφών που εκτιμάται ότι ικανοποιούν τη συνθήκη. Εάν min(a,r) και max(a,r) είναι διαθέσιμα στο κατάλογο C = 0 if v < min(a,r) C = n r v min( A, r). max( A, r) min( A, r) Εάν δεν υπάρχει στατιστική πληροφορία υποθέτουμε c = n r / 2. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 9
Υλοποίηση περίπλοκων επιλογών Η επιλογή μίας συνθήκης i είναι η πιθανότητα ότι η εγγραφή στη σχέση r ικανοποιεί το i. Εάν s i είναι ο αριθμός των εγγραφών που ικανοποιούνται στην r, η επιλογή του i ορίζεται ως s i /n r. Conjunction: 1 2... n (r). Αριθμός εγγραφών που εκτιμώμαι στο αποτέλεσμα: n r s 1 s... s n Disjunction: 1 2... n (r). Αριθμός εγγραφών στο αποτέλεσμα: 2 n r n n r s 1 s2 sn 1 (1 ) (1 )... (1 ) nr nr nr Negation: (r). Εκτιμώμενος αριθμός εγγραφών : n r size( (r)) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 10
Εκτίμηση μεγέθους Join - Παράδειγμα depositor customer Catalog information for join examples: n customer = 10,000. f customer = 25, which implies that b customer =10000/25 = 400. n depositor = 5000. f depositor = 50, which implies that b depositor = 5000/50 = 100. V(customer-name, depositor) = 2500, which implies that, on average, each customer has two accounts. assume that customer-name in depositor is a foreign key on customer. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 11
Εκτίμηση μεγέθους των Joins (1) Καρτεσιανό γινόμενο r x s περιέχει n r n s εγγραφές Κάθε εγγραφή καταλαμβάνει s r + s s bytes. Εάν R S είναι κλειδί για το R, τότε μία εγγραφή του s θα συνδεθεί με μία το πολύ εγγραφή από το r Για αυτό το λόγο, ο αριθμός εγγραφών στο r s δεν είναι μεγαλύτερος από τον αριθμό εγγραφών στο s. Εάν R S είναι ξένο κλειδί για το S που αναφέρεται στο R, ο αριθμός των εγγραφών r s είναι ακριβώς ο ίδιος με τον αριθμό των εγγραφών στο s. Αντίστοιχα για R S ξένο κλειδί που αναφέρεται στο S. Παράδειγμα: depositor customer, customer-name in depositor is a foreign key of customer το αποτέλεσμα θα έχει n depositor εγγραφές, δηλ. 5000 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 12
Εκτίμηση μεγέθους των Joins (2) R S = {A} δεν είναι κλειδί για R ή S. Εάν υποθέσουμε ότι κάθε εγγραφή t στο R παράγει εγγραφές στο R S, ο αριθμός των εγγραφών στο R S εκτιμάται να είναι: nr ns V( A, s) Εάν αντιστρέψουμε τους ρόλους του R και S, η εκτίμησή μας είναι: nr ns V( A, r ) Η χαμηλότερη από αυτές τις εκτιμήσεις είναι πιθανόν η πιο ακριβής. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 13
Παράδειγμα: Εκτίμηση μεγέθους των Joins (3) Υπολογίζουμε το μέγεθος των εκτιμήσεων για το depositor customer χωρίς να χρησιμοποιούμε πληροφορία για τα ξένα κλειδία: n customer = 10,000 - n depositor = 5000. V(customer-name, depositor) = 2500, and V(customer-name, customer) = 10000 The two estimates are 5000 * 10000/2500 =20,000 and 5000 * 10000/10000 = 5000 Επιλέγουμε τη χαμηλότερη εκτίμηση Στη συγκεκριμένη περίπτωση είναι ίδια με αυτή που έχουμε εάν χρησιμοποιήσουμε ξένα κλειδιά. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 14
Εκτίμηση μεγέθους για άλλες λειτουργίες Projection: εκτιμώμενο μέγεθος A (r) = V(A,r) Aggregation: εκτιμώμενο μέγεθος A g F (r) = V(A,r) Λειτουργίες συνόλων Ενώσεις/τομές επιλογών στην ίδια σχέση: μπορούν να ξαναγραφούν και να χρησιμοποιήσουμε υπολογισμούς εκτίμησης μεγέθους επιλογής 1 (r) 2 (r) μπορεί να γραφεί ως 1 2 (r) Για λειτουργίες σε διαφορετικές σχέσεις: estimated size of r s = size of r + size of s. estimated size of r s = minimum size of r and size of s. estimated size of r s = r. Όλες οι παραπάνω εκτιμήσεις δεν είναι ακριβείς αλλά παρέχουν ένα άνω όριο στα μεγέθη τους. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 15
Μετασχηματισμός Σχεσιακών παραστάσεων Δύο παραστάσεις σχεσιακής άλγεβρας είναι ισοδύναμες εάν σε κάθε στιγμιότυπο της βάσης δεδομένων παράγουν το ίδιο σύνολο εγγραφών Η σειρά των εγγραφών δεν έχει σημασία Ένας κανόνας ισοδυναμίας λέει ότι παραστάσεις δύο μορφών είναι ισοδύναμες Μπορούμε να αντικαταστήσουμε έκφραση της πρώτης μορφής με τη δεύτερη ή το αντίστροφο Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 17
Κανόνες ισοδυναμία (1) 1. Λειτουργίες συνδυαστικής επιλογής μπορούν να αναλυθούν σε μία ακολουθία από μεμονωμένες επιλογές. ( ) ( ( )) 1 E E 2 1 2 2. Λειτουργίες επιλογής είναι μεταβατικές. ( ( E)) ( ( E)) 1 2 2 1 3. Μόνο η τελευταία ακολουθία από λειτουργίες προβολής απαιτείται, οι άλλες μπορούν να παραλειφθούν. t1 ( t2 ( ( tn ( E)) )) t1 ( E) 4. Επιλογές μπορούν να συνδυαστούν με Καρτεσιανά γινόμενα και theta joins. a. (E 1 X E 2 ) = E 1 E 2 b. 1 (E 1 2 E 2 ) = E 1 1 2 E 2 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 18
Γραφική αναπαράστη κανόνων ισοδυναμίας Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 19
Κανόνες ισοδυναμίας (1) 5. Theta-join λειτουργίες (και natural joins) είναι μεταβατικές. E 1 E 2 = E 2 E 1 6. (a) Natural join λειτουργίες είναι συσχετιζόμενες: (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) (b) Theta joins είναι συσχετιζόμενες με τον ακόλουθο τρόπο: (E 1 1 E 2 ) 2 3 E 3 = E 1 1 3 (E 2 2 E 3 ) όπου 2 περιλαμβάνει χαρακτηριστικά μόνο από E 2 και E 3. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 20
Κανόνες ισοδυναμίας (2) 7. Η λειτουργία επιλογής κατανέμει τη λειτουργία του theta join κάτω από τις ακόλουθες δύο συνθήκες: (a) Όταν όλα τα χαρακτηριστικά στο 0 περιλαμβάνουν μόνο χαρακτηριστικά των παραστάσεων (ας πούμε την E 1 ) που συμμετέχουν στο join. 0 E 1 E 2 ) = ( 0 (E 1 )) E 2 (b) Όταν 1 περιλαμβάνει μόνο χαρακτηριστικά της E 1 και 2 περιλαμβάνει μόνο χαρακτηριστικά της E 2. 1 E 1 E 2 ) = ( 1 (E 1 )) ( (E 2 )) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 21
Κανόνες ισοδυναμίας (3) 8. Οι λειτουργίες προβολής κατανέμουν τη theta join λειτουργία ως ακολούθως: (a) Εάν περιλαμβάνει μόνο χαρακτηριστικά από L 1 L 2, όπου L 1 and L 2 σύνολα χαρακτηριστικών από E 1 και E 2, αντίστοιχα L (b) Υποθέτουμε το join E 1 E 2. ( E... E2) ( L ( E1 ))... ( L ( 2)) 1 L2 1 E 1 2 L 1 and L 2 σύνολα χαρακτηριστικών από E 1 και E 2, αντίστοιχα. L 3 χαρακτηριστικά της E 1 που περιλαμβάνονται στη join συνθήκη, αλλά δεν ανήκουν στο L 1 L 2, και L 4 είναι χαρακτηριστικά της E 2 που περιλαμβάνονται στη join συνθήκη, αλλά δεν ανήκουν στο L 1 L 2. L ( E... E2) L L (( L L ( E1 ))... ( L L ( 2))) 1L 1 E 2 1 2 1 3 2 4 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 22
Κανόνες ισοδυναμίας (4) 9. Ένωση και τομή είναι μεταβατικές E 1 E 2 = E 2 E 1 E 1 E 2 = E 2 E 1 10. Ένωση και τομή είναι συσχετιζόμενες. (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) 11. Η λειτουργία της επιλογής κατανέμει, και. (E 1 E 2 ) = (E 1 ) (E 2 ) και όμοια για και στη θέση του Επίσης: (E 1 E 2 ) = (E 1 ) E 2 παρόμοια για στη θέση, όχι για 12. Η λειτουργία της προβολής κατανέμει την ένωση L (E 1 E 2 ) = ( L (E 1 )) ( L (E 2 )) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 23
Παράδειγμα μετασχηματιμσού Branch(branch_name, branch_city, assets) Account(account_number, branch_name, balance) Depositor(customer_name, account_number) Query: Find the names of all customers who have an account at some branch located in Brooklyn. customer-name ( branch-city = Brooklyn (branch (account depositor))) Transformation using rule 7a ( 0 E 1 E 2 ) = ( 0 (E 1 )) E 2 ) customer-name (( branch-city = Brooklyn (branch)) (account depositor)) Performing the selection as early as possible reduces the size of the relation to be joined. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 24
Παράδειγμα μετασχηματιμσού Branch(branch_name, branch_city, assets) Account(account_number, branch_name, balance) Depositor(customer_name, account_number) Query: Find the names of all customers who have an account at some branch located in Brooklyn. customer-name ( branch-city = Brooklyn (branch (account depositor))) Transformation using rule 7a ( 0 E 1 E 2 ) = ( 0 (E 1 )) E 2 ) customer-name (( branch-city = Brooklyn (branch)) (account depositor)) Performing the selection as early as possible reduces the size of the relation to be joined. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 25
Παράδειγμα με πολλαπλούς μετασχηματισμούς Branch(branch_name, branch_city, assets) Account(account_number, branch_name, balance) Depositor(customer_name, account_number) Query: Find the names of all customers with an account at a Brooklyn branch whose account balance is over $1000. customer-name ( branch-city = Brooklyn balance > 1000 (branch (account depositor))) Transformation using join associatively ((E 1 E 2 ) E 3 = E 1 (E 2 E 3 )): customer-name ( branch-city = Brooklyn balance > 1000 ((branch account) depositor)) Η δεύτερη μορφή δίνει τη δυνατότητα να εφαρμόσουμε το κανόνα εκτέλεση επιλογών νωρίς branch-city = Brooklyn (branch) balance > 1000 (account) Συνεπώς μία ακολουθία από μετασχηματισμούς μπορεί να αποβεί χρήσιμη Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 26
Παράδειγμα με πολλαπλούς μετασχηματισμούς (2) > > Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 27
Παράδειγμα λειτουργίας προβολής Branch(branch_name, branch_city, assets) Account(account_number, branch_name, balance) Depositor(customer_name, account_number) customer-name (( branch-city = Brooklyn (branch) account) depositor) Όταν υπολογίζουμε branch-city = Brooklyn (branch) account ) λαμβάνουμε τη σχέση της οποίας το σχήμα είναι: (branch-name, branch-city, assets, account-number, balance) Χρησιμοποιώντας του κατάλληλους κανόνες ισοδύναμίας (8a and 8b); Περιορίζουμε τα χαρακτηριστικά που δεν χρειάζονται από τα ενδιάμεσα αποτελέσματα: customer-name (( account-number ( ( branch-city = Brooklyn (branch) account )) depositor) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 28
Παράδειγμα διάταξης συνδέσμων (1) Για όλες τις σχέσεις r 1, r 2, και r 3, (r 1 r 2 ) r 3 = r 1 (r 2 r 3 ) Εάν το αποτέλεσμα r 2 r 3 είναι αρκετά μεγάλο και r 1 r 2 μικρό, επιλέγουμε (r 1 r 2 ) r 3 έτσι ώστε να υπολογίσουμε και να αποθηκεύσουμε μία μικρή προσωρινή σχέση. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 29
Παράδειγμα διάταξης συνδέσμων (2) Έστω η παράσταση customer-name (( branch-city = Brooklyn (branch)) account depositor) Μπορούμε να υπολογίσουμε account depositor πρώτα και να συνδέσουμε το αποτέλεσμα με branch-city = Brooklyn (branch) αλλά account depositor είναι πολύ πιθανό να είναι μια μεγάλη σχέση (μεγάλος αριθμός εγγραφών). Είναι περισσότερο πιθανό μόνο ένα μικρό ποσοστό των πελατών της τράπεζας να έχουν λογαριασμούς σε υποκαταστήματα που βρίσκονται στο Brooklyn, οπότε είναι καλύτερο να υπολογίσουμε πρώτα branch-city = Brooklyn (branch) account Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 30
Απαρίθμηση ισοδύναμων παραστάσεων (1) Οι βελτιστοποιητές ερωτημάτων χρησιμοποιούν κανόνες ισοδυναμίας για να παράγουν συστηματικά ισοδύναμες παραστάσεις με τη δοθείσα Ιδεατά, παράγουν όλες τις ισοδύναμες παραστάσεις εκτελώντας επαναληπτικά το ακόλουθο βήμα μέχρι να μην μπορούν να βρουν περισσότερες παραστάσεις: Για κάθε παράσταση που έχει βρεθεί μέχρι στιγμής, χρησιμοποίησε όλες τους κανόνες ισοδυναμίας που έχουν εφαρμογή, Πρόσθεσε νέες παραγόμενες παραστάσεις στο σύνολο των παραστάσεων που έχουμε βρει μέχρι στιγμής Η παραπάνω προσέγγιση είναι πολύ ακριβή σε χώρο και χρόνο Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 31
Απαρίθμηση ισοδύναμων παραστάσεων (2) Απαιτήσεις σε χώρο περιορίζονται με το μοίρασμα κοινών υποπαραστάσεων: όταν E1 παράγεται από την E2 με βάση κάποιον κανόνα ισοδυναμίας, συνήθως μόνο το επάνω επίπεδο από τις δύο παραστάσεις διαφέρει, υποδέντρα στο κάτω επίπεδο είναι όμοια και μπορούν να μοιραστούν Οι απαιτήσεις σε χρόνο μπορούν να περιοριστούν εάν δεν παράγουμε όλες τις παραστάσεις Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 32
Πλάνο εκτέλεσης Ένα πλάνο εκτέλεσης ορίζει ακριβώς τι αλγόριθμος χρησιμοποιείται για κάθε λειτουργία και πως η εκτέλεση των λειτουργιών συντονίζεται. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 33