Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων1 Βάσεις Δεδομένων II Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων Δαμιανός Χατζηαντωνίου.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων1 Βάσεις Δεδομένων II Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων Δαμιανός Χατζηαντωνίου."— Μεταγράφημα παρουσίασης:

1 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων1 Βάσεις Δεδομένων II Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων Δαμιανός Χατζηαντωνίου

2 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων2 Βασικά βήματα στην επεξεργασία ερωτημάτων 1.Μετάφραση 2.Βελτιστοποίηση 3.Υπολογισμός

3 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων3 Βασικά βήματα στην επεξεργασία ερωτημάτων v Μετάφραση του ερωτήματος σε μία internal μορφή. Αυτή μετατρέπεται κατόπιν σε σχεσιακή άλγεβρα. v Ο Parser ελέγχει το συντακτικό και τους πίνακες. Μετάφραση (Parsing and translation) Υπολογισμός (Evaluation) Η μηχανή εκτέλεσης ερωτημάτων (query-execution engine) παίρνει το σχέδιο υπολογισμού (query- evaluation plan), το εκτελεί, και επιστρέφει την απάντηση στο χρήστη.

4 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων4 v Μία έκφραση σχεσιακής άλγεβρας μπορεί να έχει πολλές ισοδύναμες μορφές Π.χ.,  balance  2500 (  balance ( account)) είναι ισοδύναμη με:  balance (  balance  2500 ( account)) v Κάθε έκφραση σχεσιακής άλγεβρας μπορεί να υπολογιστεί με διάφορετικούς τρόπους. Μία «σημειωμένη» έκφραση (annotated expression) η οποία σημειώνει τον τρόπο υπολογισμού καλείται σχέδιο υπολογισμού (evaluation-plan). Π.χ.,μπορεί να χρησιμοποιηθεί ένα ευρετήριο επί του balance για να βρεθούν λογαριασμοί με balance < 2500, η να σαρωθεί πλήρως ο πίνακας v Από όλες τις ισοδύναμες εκφράσεις, επέλεξε αυτή με το «φθηνότερο» σχέδιο υπολογισμού. Κατάλογος με κόστη. Βελτιστοποίηση –εύρεση του πλάνου υπολογισμού με το ελάχιστο κόστος Βασικά βήματα στην επεξεργασία ερωτημάτων

5 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων5 Παράδειγμα – παράσταση αλγεβρικών εκφράσεων v Έστω το ερώτημα: «βρες το όνομα των πελατών με λογαριασμούς με υπόλοιπο κάτω από 2500», το οποίο έχει μετατραπεί σε σχεσιακή άλγεβρα: π customer-name (σ balance<2500 (account) customer)

6 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων6 Παράδειγμα – ισοδύναμες αλγεβρικές εκφράσεις v Μία αλγεβρική έκφραση μπορεί να μετατραπεί σε ισοδύναμες εκφράσεις βάση κανόνων ισοδυναμίας (equivalence rules, transformation rules).

7 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων7 Παράδειγμα – «σημειωμένες» εκφράσεις v Έχοντας μία αλγεβρική έκφραση όπως προηγουμένως, σημειώνουμε πάνω στο δέντρο τους αλγόριθμους με τους οποίους υπολογίζεται κάθε τελεστής και τον τρόπο «διάχυσης» των δεδομένων από επίπεδο σε επίπεδο.

8 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων8 Παράδειγμα – «σημειωμένες» εκφράσεις v Παρατηρήσεις: –Δεδομένου ότι υπάρχουν διαφορετικοί τρόποι για να υπολογίσουμε έναν τελεστή και διαφορετικοί τρόποι για να «διαχύσουμε» τα δεδομένα, η ίδια αλγεβρική έκφραση γίνεται «annotated» με πολλούς τρόπους. –Σύμφωνα με κάποια μοντέλα κόστους, κάθε annotated έκφραση έχει κάποιο κόστος. –Αυτό το κάνουμε για κάθε ισοδύναμη αλγεβρική έκφραση. Θεωρητικά, επιλέγουμε από όλα τα δυνατά πλάνα, εκείνο με το μικρότερο κόστος.

9 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων9 Σχεσιακοί τελεστές v Θα εξετάσουμε πως να υλοποιήσουμε: – Selection ( ) Επιλέγει υποσύνολο γραμμών από σχέση. – Projection ( ) Διαγράφει στήλες από μία σχέση. – Join ( ) Επιτρέπει να συνδυαστούν δύο σχέσεις. – Set-difference ( ) Γραμμές στην 1η σχέση και όχι στη 2η. – Union ( ) Γραμμές και στην 1η και στη 2η σχέση. – Aggregation ( SUM, MIN, etc.) και GROUP BY v Αφού κάθε τελεστής επιστρέφει μία σχέση, οι τελεστές συντίθενται! Αφού εξετάσουμε τους τελεστές, θα δού- με πως να βελτιστοποιήσουμε τα σύνθετα ερωτήματα

10 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων10 Υπολογισμός τελεστών-Γενικές έννοιες v Τεχνικές αλγορίθμων: –Επανάληψη –Ευρετηριοποίηση –Διαμέριση v Διαδρομές πρόσβασης (access paths) –Σάρωση αρχείου –Ευρετήριο + κατάλληλη συνθήκη επιλογής v Επιλεκτικότητα της διαδρομής πρόσβασης (selectivity): πλήθος των σελίδων που ανακτώνται για να ανακτήσουμε τις εγγραφές που θέλουμε. v Κόστος: μετράμε μόνο το Ι/Ο (πλήθος σελιδών).

11 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων11 Schema για τα παραδείγματα v Reserves: – Κάθε πλειάδα είναι 40 bytes, 100 εγγραφές ανά σελίδα, 1000 σελίδες. v Sailors: – Κάθε πλειάδα είναι 50 bytes, 80 εγγραφές ανά σελίδα, 500 σελίδες. Sailors ( sid : integer, sname : string, rating : integer, age : real) Reserves ( sid : integer, bid : integer, day : dates, rname : string)

12 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων12 Απλά Selections v Της μορφής: v Το μέγεθος του αποτελέσματος προσεγγίζεται σαν size of R * reduction factor ; Θα εξετάσουμε αργότερα πως να εκτιμούμε το reduction factor. v Χωρίς ευρετήριο και ταξινόμηση. v Ταξινομημένα δεδομένα. v Ευρετήριο στο γνώρισμα επιλογής –Β+ δέντρο. –Κατακερματισμένα ευρετήρια. SELECT * FROM Reserves R WHERE R.rname < ‘C%’

13 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων13 Χωρίς ευρετήρια v Μη-ταξινομημένα δεδομένα –Σάρωση όλης της σχέσης –Κόστος: Μ (ο αριθμός των σελίδων της σχέσης) –Π.χ. R.name=‘Joe’ είναι 1000 Ι/Οs. v Ταξινομημένα δεδομένα –Δυαδική αναζήτηση για την πρώτη εγγραφή –Κατόπιν σειριακή ανάκτηση σελίδων όσο η συνθήκη ικανοποιείται. –Κόστος log 2 M + ανάκτηση σελιδών –Π.χ. R.name=‘Joe’ είναι 10 Ι/Οs + α.σ.

14 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων14 Χρησιμοποιώντας ευρετήρια – Β+ δέντρα v Το κόστος εξαρτάται από τον # των εγγραφών που πληρούν τη συνθήκη και το clustering. – Το κόστος για να βρούμε τις εγγραφές (συνήθως μικρό) + κόστος για να ανακτήσουμε τις εγγραφές (μπορεί να είναι μεγάλο χωρίς clustering). – Π.χ. Θεωρώντας ομοιόμορφη κατανομή των ονομάτων, και έστω ότι 10% των εγγραφών πληρούν τη συνθήκη (100 pages, 10000 εγγραφές). Με ένα clustered ευρετήριο, το κόστος είναι λίγο παραπάνω από 100 I/Os; Εάν όμως το ευρετήριο είναι unclustered, μπορεί και 10000 I/Os! v Σημαντική τροποποίηση για unclustered ευρετήρια : 1. Βρες τις εγγραφές (από το ευρετήριο) που πληρούν τη συνθήκη. 2. Ταξινόμησε τα rid’s (record ids) των εγγραφών που θα ανακτηθούν. 3. Ανάκτησε τα rids σε σειρά. Αυτό εγγυάται ότι κάθε data page θα ερευνηθεί μία μόνο φορά (παρόλο που ο αριθμός των σελιδών θα είναι μεγαλύτερος από τον αντίστοιχο με clustering).

15 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων15 Χρησιμοποιώντας κατακερματισμένα ευρετήρια v Χρήσιμο αν στη συνθήκη ο τελεστής op είναι = v Ένα ή δύο Ι/Ο για την ανάκτηση του bucket + το κόστος ανάκτησης των εγγραφών. v Π.χ. R.name=‘Joe’ και έστω ότι υπάρχουν 100 πλειάδες με R.name=‘Joe’. Πόσα Ι/Ο?

16 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων16 Γενικές συνθήκες επιλογής* v Αυτές οι συνθήκες πρώτα μετατρέπονται σε conjunctive normal form (CNF) – κανονική μορφή σύζευξης : (day<8/9/94 OR bid=5 OR sid=3 ) AND (rname=‘Paul’ OR bid=5 OR sid=3) v Εξετάζουμε μόνο την περίπτωση χωρίς ORs (μία σύζευξη όρων της μορφής: attr op value ). v Ένα ευρετήριο ταιριάζει (μία σύζευξη) όρων που εμπεριέχει μόνο γνωρίσματα σε ένα prefix του κλειδιού αναζήτησης. – Ευρετήριο στο ταιριάζει το a=5 AND b= 3, αλλά όχι το b=3. * (day<8/9/94 AND rname=‘Paul’) OR bid=5 OR sid=3

17 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων17 Η πράξη της Προβολής v Μετατρέπεται σε π R.sid, R.bid (Reserves) v Απαραίτητα βήματα: –Απομάκρυνση των άχρηστων γνωρισμάτων –Απομάκρυνση των παραγόμενων διπλότυπων v Αλγόριθμοι: –Ταξινόμηση –Κατακερματισμός SELECT DISTINCT R.sid, R.bid FROM Reserves R

18 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων18 Η πράξη της Προβολής - Ταξινόμηση v Βήματα αλγόριθμου: 1.Σάρωσε τον R και απομάκρυνε τα ανεπιθύμητα γνωρίσματα 2.Ταξινόμησε το αποτέλεσμα βάση όλων των γνωρισμάτων 3.Σάρωσε το ταξινομημένο αποτέλεσμα και απομάκρυνε τις διπλότυπες πλειάδες. Βήμα 1: Μ Ι/Ο για σάρωση και Τ Ι/Ο για τον προσωρινό πίνακα Βήμα 2: κόστος: Ο(ΤlogT) Βήμα 3: κόστος: Τ Ι/Ο v Π.χ. Στην περίπτωση του Reserves? v Μπορούμε να βελτιώσουμε τον αλγόριθμο ώστε να κάνει προβολή με απομάκρυνση διπλοτύπων (εκτός ύλης)

19 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων19 Η πράξη της Προβολής-Κατακερματισμός v Φάση διαμερισμού : Διάβασε το R χρησιμοποιώντας μία είσοδο (ένα input buffer). Για κάθε εγγραφή, πέταξε τα ανεπιθύμητα γνωρίσματα, και χρησιμοποίησε τη συνάρτηση κατακερματισμού h1 στα υπόλοιπα γνωρίσματα για να επιλέξεις μία από τις B-1 εξόδους (output buffers). – Το αποτέλεσμα είναι B-1 διαμερίσεις (εγγραφών χωρίς τα ανεπιθύμητα πεδία). Δύο εγγραφές διαφορετικών διαμερισμάτων είναι διακριτές.

20 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων20 Η πράξη της Προβολής-Κατακερματισμός v Φάση απομάκρυνσης διπλοτύπων : Για κάθε διαμέριση, διάβασε την και κατασκεύασε ένα πίνακα στη μνήμη κατακερματισμού χρησιμοποιώντας τη συνάρτηση h2 (<> h1 ) σε όλα τα πεδία, καθώς απομακρύνεις τα διπλότυπα. – Εάν η διαμέριση δε χωράει στη μνήμη, μπορεί να εφαρμόστεί αυτός ο αλγόριθμος αναδρομικά σε αυτή τη διαμέριση. v Κόστος: Για τη διαμέριση, το διάβασμα του R (Μ Ι/Ο)+ το γράψιμο κάθε εγγραφής, αλλά με λιγότερα πεδία (Τ Ι/Ο). Το αποτέλεσμα διαβάζεται στην επόμενη φάση (Τ Ι/Ο). Σύνολο: Μ+2Τ σελίδες.

21 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων21 Η πράξη της προβολής v Η τεχνική ταξινόμησης είναι το standard; καλύτερος χειρισμός μη-ομοιορφίας + ταξινομημένο αποτέλεσμα v Εάν ένα ευρετήριο περιέχει όλα τα επιθυμητά πεδία στο κλειδί αναζήτησης, μπορεί να χρησιμοποιηθεί. – Εφάρμοσε τις τεχνικές προβολής στο ευρετήριο (μικρότερο). v Εάν ένα ταξινομημένο ευρετήριο (π.χ., δέντρο) index περιέχει όλα τα επιθυμητά πεδία σαν prefix στο κλειδί αναζήτησης, μπορούμε ακόμα καλύτερα: – Ανάκτησε τα στοιχεία του ευρετηρίου σε σειρά (index-only scan), πέταξε τα ανεπιθύμητα πεδία και σύγκρινε γειτονικές εγγραφές για διπλότυπα.

22 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων22 Συνολοθεωρητικές πράξεις v Η τομή και καρτεσιανό γινόμενο ειδικές περιπτώσεις σύζευξης v Η ένωση (Distinct) και η διαφορά είναι παρόμοιες. Ένωση: v Προσέγγιση βασισμένη στην ταξινόμηση: – Ταξινόμησε τις δύο σχέσεις (ως προς το συνδυασμό όλων των πεδίων) – Σάρωσε τις ταξινομημένες σχέσεις και συγχώνευσέ τις. – Ενναλακτικά: Παραγωγή ταξινομημένων συρμών (runs) των δύο σχέσεων και παράλληλη συγχώνευση. (*) v Προσέγγιση βασισμένη στον κατακερματισμό: – Διαμέρισε τις R και S χρησιμοποιώντας μια συνάρτηση κατακερματισ. h. – Για κάθε S-διαμέριση, κατασκεύασε στη μνήμη έναν πίνακα κατακερμα- τισμού (χρησιμοποιώντας μία h2 ), σάρωσε την αντίστοιχη R-διαμέριση και είτε πρόσθεσέ την στο πίνακα, είτε απόρριψέ την (διπλότυπα).

23 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων23 Η πράξη της σύζευξης v Στην άλγεβρα: R S. Πολύ σύνηθες! Πρέπει να βελτιστοποι- ηθεί. R S πολύ μεγάλο, άρα, R S ακολουθούμενο από επιλογή είναι αναποτελεσματικό. v Υπόθεση: M πλειάδες στη R, p R πλειάδες ανά σελίδα, N πλειάδες στη S, p S πλειάδες ανά σελίδα. – Στα παραδείγματά μας, R είναι η Reserves και S είναι η Sailors. v Μετρική κόστους: ο αριθμός των I/Os. v Χρησιμοποιούμε το συμβολισμό r i ==s j για τη συνθήκη σύζευξης SELECT * FROM Reserves R1, Sailors S1 WHERE R1.sid=S1.sid

24 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων24 Απλή εμφώλευση βρόγχων v Απλή εμφώλευση βρόγχων (simple nested loop join) v Κόστος: M + p R * M * N v Π.χ. 1000 + 100*1000*500 = 1000+5*10 7 Ι/Ο (140 ώρες) v Βελτίωση: σύζευξη ανά σελίδες: για κάθε σελίδα της R, ανακτούμε μία-μία σελίδα της S και κάνουμε τη σύζευξη foreach tuple r in R do foreach tuple s in S do if r i == s j then add to result Εξωτερική σχέση Εσωτερική σχέση

25 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων25 Απλή εμφώλευση βρόγχων for each page Br of R do begin for each page Bs of S do begin for each tuple tr in Br do begin for each tuple ts in Bs do begin test pair (tr,ts) for satisfying the join condition if they do, add to the result. end end end end v Κόστος: Μ + Μ*Ν v Π.χ. 1000 + 1000*500 = 501.000 Ι/Ο (1.4 ώρες) v Ποιά σχέση πρέπει να επιλέγουμε σαν εξωτερική?

26 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων26 Εμφώλευση βρόγχων κατά block v Εστω ότι έχουμε αρκετή ενδιάμεση μνήμη για να χωρέσει μία από τις δύο σχέσεις (έστω R). Αλγόριθμος? v Φορτώνουμε την R στη μνήμη (κόστος Μ) και κατόπιν για κάθε σελίδα της S κάνουμε τη σύζευξη στη μνήμη (κόστος Ν). Συνολικό κόστος: Μ + Ν. v Ποια είναι η εξωτερική και ποια η εσωτερική σχέση σε αυτή την περίπτωση? v Βελτίωση: κατασκευή πίνακα κατακερματισμού στη μνήμη για την R (μείωση του χρόνου CPU, όχι Ι/Ο). v Τι κάνουμε αν δε χωράει στη μνήμη καμμία σχέση?

27 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων27 Εμφώλευση βρόγχων κατά block v Διαμερίζουμε την R σε blocks (ο όρος block διαφορετικός από τον όρο σελίδα), που το καθένα χωράει στην ενδιάμεση μνήμη, και για κάθε block σαρώνουμε την S. v Έστω ότι έχουμε Β σελίδες ενδιάμεσης μνήμης. for each block Br (of size B-2 pages) of R do begin for each page Bs of S do begin for each tuple tr in Br do begin for each tuple ts in Bs do begin test pair (tr,ts) for satisfying the join condition if they do, add to the result. end end end end

28 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων28 Εμφώλευση βρόγχων κατά block v Κόστος: Μ + Ν * [Μ/(Β-2)] v Για το «ταίριασμα» των πλειάδων δημιουργούμε έναν πίνακα κατακερματισμού στη μνήμη.... R & S Πίνακας κατακερματισμού για το block της R (k < B-1 pages) Input buffer for S Output buffer... Αποτέλεσμα Σύζευξης Ενδιάμεση μνήμη (Β σελίδες)

29 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων29 Εμφώλευση βρόγχων κατά block v Παράδειγμα: v Χρησιμοποιώντας τη Reserves (R) σαν εξωτερική σχέση και δίνοντας 100 σελίδες σε κάθε block: u Κόστος σαρώματος της R είναι 1000 Ι/Οs u Έχουμε 10 blocks u Για κάθε block σαρώνουμε τη Sailors = 10*500 Ι/Οs u Σύνολο: 1000 + 5000 = 6000 Ι/Οs. v Χρησιμοποιώντας τη Sailors (S) σαν εξωτερική σχέση: u Κόστος σαρώματος της S είναι 500 Ι/Οs u Έχουμε 5 blocks u Για κάθε block σαρώνουμε τη Reserves = 5*1000 Ι/Οs u Σύνολο: 500 + 5000 = 5500 Ι/Οs. v Λίγο περισσότερο από ένα λεπτό!

30 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων30 Εμφώλευση βρόγχων και ευρετήρια v Αν υπάρχει ευρετήριο σε μία από τις σχέσεις στο γνώρισμα σύζευξης, τότε τη θέτουμε σαν την εσωτερική σχέση S. v Για κάθε πλειάδα r της R βρίσκουμε αυτές τις πλειάδες της S που ταιριάζουν με την r χρησιμοποιώντας το ευρετήριο. v Κόστος σάρωσης της R: Μ v Κόστος ανάκτησης πλειάδων της S: –B+ tree – 2-4 I/Os + κόστος ανάκτησης (συγκροτημένο ή όχι) –Hash index – 1-2 I/Os + κόστος ανάκτησης (συγκροτημένο ή όχι) v Συγκροτημένα ευρετήρια: συνήθως ένα Ι/Ο v Μη-συγκροτημένα ευρετήρια: ένα Ι/Ο για κάθε matched πλειάδα. v Συνολικό κόστος: Μ + ( (M*p R ) * κόστος εύρεσης S πλειάδων)

31 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων31 Εμφώλευση βρόγχων και ευρετήρια v Παράδειγμα: v Ευρετήριο κατακερματισμού στο sid (Π.Κ.) της Sailors. v Έστω 1.2 Ι/Ο για την ανάκτηση της σελίδας ευρετηρίου. v Κόστος σάρωσης της Reserves: 1000 I/O. v p R =100 - 1000 σελίδες => 100000 πλειάδες στην Reserves. v Κόστος ανάκτησης για κάθε πλειάδα (1.2 + 1) Ι/Ο v Συνολικό κόστος: 220000 + 1000 = 221000 Ι/Οs.

32 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων32 Εμφώλευση βρόγχων και ευρετήρια v Παράδειγμα: v Ευρετήριο κατακερματισμού στο sid (Ξ.Κ.) της Reserves. v Έστω 1.2 Ι/Ο για την ανάκτηση της σελίδας ευρετηρίου. v Κόστος σάρωσης της Sailors: 500 I/O. v p R =80 - 500 σελίδες => 40000 πλειάδες στην Reserves. v Κόστος ανάκτησης ευρετηρίου: 1.2 * 40000 Ι/Ο = 48000 Ι/Ο v Κόστος ανάκτησης πλειάδων: –Ομοιόμορφη κατανομή, 2.5 κρατήσεις για κάθε ναύτη –2.5 * 40000 = 100000 Ι/Ο v Συνολικό κόστος: 500 + 48000 + 100000 = 148500 Ι/Οs

33 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων33 Εξωτερική ταξινόμηση (External Sort) v Σε πολλές περιπτώσεις πρέπει να ταξινομηθεί μία σχέση. Πως επιτυγχάνεται? Αν χωράει στη μνήμη, τότε χρησιμοποιούμε κλασσικές μεθόδους ταξινόμησης. Αλλιώς? v Εξωτερική ταξινόμηση με συγχώνευση - Εxternal sort-merge. v Βασική ιδέα: Έστω ότι έχουμε Β σελίδες διαθέσιμη μνήμη. –Φέρε τις πρώτες Β σελίδες από τη σχέση στη μνήμη –Ταξινόμησέ τις πλειάδες αυτών των σελιδών (γίνεται στη μνήμη) –Γράψε το ταξινομημένο αποτέλεσμα στο δίσκο –Φέρε τις επόμενες Β σελίδες και επανέλαβε –Αφού τελειώσει η σχέση, συγχώνευσε τα ταξινομημένα αποτελέσματα v Κάθε block των Β σελίδων ονομάζεται run (1 st, 2 nd, …) ή συρμός.

34 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων34 Εξωτερική ταξινόμηση (External Sort) 1. Δημιούργησε ταξινομημένους συρμούς όπως προηγουμένως. Έστω ότι το i είναι αρχικά 0. Επαναληπτικά κάνε το κάτωθι μέχρι το τέλος της σχέσης: (a) Read Β blocks of relation into memory (b) Sort the in-memory blocks (c) Write sorted data to run Ri; increment i. 2. Συγχώνευσε τα runs; υπέθεσε ότι i < Β. Σε ένα μόνο βήμα συγχώνευσης, χρησιμοποιήσε i blocks μνήμης to buffer input runs, και 1 block to buffer output. Κάνε το κάτωθι επαναληπτικά μέχρι όλες οι input buffer σελίδες έχουν αδειάσει: (a) Select the first record in sort order from each of the buffers (b) Write the record to the output (c) Delete the record from the buffer page; if the buffer page is empty, read the next block (if any) of the run into the buffer. Εάν i >= Β, απαιτούνται πολλά περάσματα συγχώνευσης. Σε κάθε πέρασμα, συγχωνεύουμε ομάδες των Β-1 runs. Συνεπώς, ένα πέρασμα μειώνει τον αριθμό των runs κατά ένα παράγοντα Β -1, μεγαλώνοντας το μέγεθός τους επίσης κατά Β-1. Εκτελούμε πολλαπλά περάσματα μέχρι όλοι οι συρμοί έχουν συγχωνευθεί σε ένα.

35 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων35 Εξωτερική ταξινόμηση – Παράδειγμα Κόστος? Τάξης: Ο(ΜlogΜ) (η σχέση έχει Μ σελίδες) Γιατί?

36 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων36 Σύζευξη με ταξινόμηση & συγχώνευση Sort-Merge Join (R S) v Ταξινόμησε τις σχέσεις R και S στο γνώρισμα σύζευξης και κατόπιν σάρωσε τις και «συγχώνευσε» τις (δεν είναι ακριβώς συγχώνευση αλλά «ταίριασμα») στο γνώρισμα αυτό. i=j Σύζευξη στο γνώρισμα α1. Όταν οι τιμές στο α1 είναι ίσες, τότε η πλειάδα προστίθεται στο αποτέλεσμα

37 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων37 Σύζευξη με ταξινόμηση & συγχώνευση v Βασική ιδέα: – Advance scan of R until current R-tuple >= current S tuple, then advance scan of S until current S-tuple >= current R tuple; do this until current R tuple = current S tuple. – At this point, all R tuples with same value in Ri ( current R group ) and all S tuples with same value in Sj ( current S group ) match ; output for all pairs of such tuples. – Then resume scanning R and S. v Η R σαρώνεται μία φορά. Κάθε S group σαρώνεται μία φορά για κάθε matching πλειάδα του R. Πολλαπλά σαρώματα ενός S group πιθανόν να υπάρχουν στη διαθέσιμη μνήμη.

38 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων38 Σύζευξη με ταξινόμηση & συγχώνευση

39 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων39 Παράδειγμα της Sort-Merge Join v Κόστος: –M log M + N log N (ταξινόμηση των σχέσεων R και S) –(M+N) – κόστος συγχώνευσης. Μπορεί να είναι όμως και Μ*Ν, αν και όχι πιθανό. Σε ποιές περιπτώσεις?

40 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων40 Παράδειγμα της Sort-Merge Join v Διαθέσιμη μνήμη: 300 σελίδες –Ταξινόμηση της Reserves = 2*2*1000 = 4000 I/Os –Ταξινόμηση της Sailors = 2*2*500 = 2000 Ι/Οs –Συνολικό κόστος: 4000+2000+1000+500 = 7500 Ι/Οs v Διαθέσιμη μνήμη: 100 σελίδες –Συνολικό κόστος: 4000+2000+1000+500 = 7500 Ι/Οs v Διαθέσιμη μνήμη: 35 σελίδες –Συνολικό κόστος: 4000+2000+1000+500 = 7500 Ι/Οs v Αντίστοιχα με block nested loop join τα κόστη είναι: 2500, 7500 και 15000 Ι/Οs.

41 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων41 Κατακερματισμός (Hash-Join) v Διαμέρισε και τις δύο σχέσεις με μία hash συναρτηση h : οι πλειάδες της R στη διαμέριση i θα ται- ριάζουν μόνο με πλειάδες της S στη διαμέριση i. v Διάβασε μία διαμέριση της R και κατακερμάτισε την χρησιμοποιώντας μία h2 (<> h!). Σάρωσε την αντίστοιχη διαμέριση της S και ψάξε για matches. Partitions of R & S Input buffer for Si Hash table for partition Ri (k < B-1 pages) B main memory buffers Disk Output buffer Disk Join Result hash fn h2 B main memory buffers Disk Original Relation OUTPUT 2 INPUT 1 hash function h B-1 Partitions 1 2 B-1...

42 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων42 Παρατηρήσεις επί της Hash-Join v #partitions k μέγεθος μεγαλύ- τερης διαμέρισης που θα είναι στη μνήμη. Για ισο- μεγεθείς διαμερίσεις και μεγιστοποιώντας το k: – k= B-1, και M/(B-1) v Εάν δημιουργήσουμε έναν πίνακα κατακερματισμού στη μνήμη για να επιταγχύνουμε το ταίριασμα των πλειάδων, απαιτείται λίγο παραπάνω μνήμη. v Εάν η hash function δε διαμερίζει ομοιόμορφα, μία ή περισσότερες διαμερίσεις της R δε θα είναι στη μνήμη. Εφαρμόζουμε hashing αναδρομικά για τη σύζευξη αυτού του R-partition με το αντίστοιχο S-partition.

43 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων43 Κόστος της σύζευξης με κατακερματισμό v Στη φάση της διαμέρισης, read+write και για τις δύο σχέσεις = 2(M+N). Στη matching φάση, read και τις δύο σχέσεις = M+N I/Os. v Στο παράδειγμά μας = 4500 I/Os. v Sort-Merge Join vs. Hash Join: – Δεδομένου ενός minimum μεγέθους μνήμης ( what is this, for each? ) και οι δύο έχουν κόστος 3(M+N) I/Os. Η Hash Join είναι καλύτερη αν τα μεγέθη των σχέσεων διαφέρουν σημαντικά. Επίσης, η Hash Join παραλληλοποιείται. – Η Sort-Merge είναι λιγότερο ευπαθής στο data skew; Έπίσης το αποτέλεσμα είναι ταξινομημένο (σημαντικό αργότερα).

44 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων44 Γενικές συνθήκες σύζευξης v Ισότητες επί πολλών γνωρισμάτων (π.χ., R.sid=S.sid AND R.rname=S.sname ): – Για Indexed NLJ, δημιούργησε ευρετήριο επί (εαν η S είναι εσωτερική); Ή χρησιμοποίησε του sid ή sname. – Για τις Sort-Merge και Hash Join, ταξινόμησε/διαμέρισε στο συνδυασμό των δύο γνωρισμάτων. v Συνθήκες με ανισότητες (π.χ., R.rname < S.sname ): – Για indexed NLJ, χρειάζεται –συγκροτημένο- B+ tree ευρετ. u Ο αριθμός των matches θα είναι μάλλον αρκετά μεγαλύτερος από όταν έχουμε ισότητα. – Hash Join, Sort Merge Join δεν μπορούν να εφαρμοστούν. – Η μέθοδος Block NL μάλλον η καλύτερη μέθοδος σύζευξης.

45 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων45 Συναθροίσεις ( AVG, MIN, κλπ.) v Χωρίς grouping: – Στη γενική περ’ιπτωση, απιτεί σάρωμα του πίνακα. – Εάν υπάρχει ευρετήριο που να περιέχει όλα τα γνωρίσματα στο SELECT ή το WHERE, μπορεί να χρησιμοποιηθεί μόνο το ευρετήριο. v Με grouping: – Ταξινόμησε στα group-by γνωρίσματα, και κατόπιν σάρωσε τη σχέση και υπολόγισε τις συναρτήσεις συνάθροισης για κάθε group. (Κάποιος μπορεί να συνδυάσει την ταξινόμηση με τον υπολογισμό.) – Παρόμοια τεχνική βασισμένη στον κατακερματισμό των group-by γνωρισμάτων. – Έχοντας ένα δεντρικό ευρετήριο του οποίου το κλειδί αναζήτησης περιλαμβάνει όλα τα γνωρίσματα στα SELECT, WHERE και GROUP BY, μπορούμα να σαρώσουμε μόνο το ευρετήριο. Εάν τα group-by πεδία είναι το prefix του κλειδιού αναζήτησης μπορούμε να πάρουμε τα αποτελέσματα σε group-by σειρά.

46 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων46 Βασικά βήματα στην επεξεργασία ερωτημάτων 1.Μετάφραση 2.Βελτιστοποίηση 3.Υπολογισμός

47 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων47 Βελτιστοποίηση σχεσιακού ερωτήματος v Η βελτιστοποίηση ενός ερωτήματος αποτελείται από: –Απαρίθμηση των εναλλακτικών σχεδίων υπολογισμού –Εκτίμηση (τι σημαίνει?) του κόστους για κάθε ένα από τα εναλλακτικά σχέδια χρησιμοποιώντας τους καταλόγους του συστήματος και επιλογή εκείνου με το μικρότερο κόστος. v Εξετάζεται ένα υποσύνολο μόνο των εναλλακτικών σχεδίων – συνήθως ο αριθμός είναι πολύ μεγάλος (γιατί?). v Ένας εμπορικός βελτιστοποιητής: 40-50 ανθρωποέτη v System R - IBM

48 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων48 Schema για τα παραδείγματα v Reserves: – Κάθε πλειάδα είναι 40 bytes, 100 εγγραφές ανά σελίδα, 1000 σελίδες. v Sailors: – Κάθε πλειάδα είναι 50 bytes, 80 εγγραφές ανά σελίδα, 500 σελίδες. Sailors ( sid : integer, sname : string, rating : integer, age : real) Reserves ( sid : integer, bid : integer, day : dates, rname : string)

49 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων49 Σχέδια υπολογισμού ερωτημάτων (plans) v π S.name (σ bid=100^rating>5 (Reserves R.sid=S.sid Sailors)) SELECT S.sname FROM Reserves R, Sailors S WHERE R.sid=S.sid AND R.bid=100 AND S.rating>5 Reserves Sailors sid=sid bid=100 rating > 5 sname Αλγεβρική παράσταση (RA tree)

50 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων50 Σχέδια υπολογισμού ερωτημάτων (plans) v Σχέδιο υπολογισμού. v Κόστος: 500+500*1000 I/Os v Ένα πολύ κακό σχέδιο!!! v Ευκαιρίες: –Οι επιλογές θα μπορούσαν να είχαν «σπρωχτεί» να γίνουν νωρίτερα, δε χρησιμοποιούνται ευρετήρια, κλπ. v Βελτιστοποίηση: καλύτερα πλάνα για τον ίδιο υπολογισμό Reserves Sailors sid=sid bid=100 rating > 5 sname (Simple Nested Loops) (On-the-fly)

51 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων51 Υλοποίηση (Materialization) v Ο υπολογισμός του αποτελέσματος προχωράει υπολογίζοντας έναν τελεστή κάθε φορά, αρχίζοντας από το χαμηλότερο επίπεδο. Τα «υλοποιημένα» (materialized) αποτελέσματα αποθηκεύονται σε temporary σχέσεις για να χρησιμοποιηθούν για τους τελεστές του επόμενου επιπέδου.

52 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων52 Pipelining (Κανάλι ταχείας επεξεργασίας) v Συχνά το αποτέλεσμα ενός τελεστή τροφοδοτείται στον επόμενο τελεστή δια μέσου ενός «καναλιού ταχείας επεξεργασίας» (pipe, pipelining) χωρίς να δημιουργείται προσωρινός πίνακας για το ενδιάμεσο αποτέλεσμα. v Σημαντική εξοικονόμηση κόστους (γιατί?) v Θα πρέπει να επιτρέπεται από τον τελεστή και τον αλγό- ριθμο με τον οποίο υλοποιείται ο τελεστής (π.χ. sort?). v Υπάρχουν πολλές ευκαιρίες για pipelining, ακόμα και σε απλά σχέδια, π.χ. επιλογές με ευρετήρια (σ A>5 AND B=8 (R), όπου το ευρετήριο εξυπηρετεί το γνώρισμα Β). v Όταν ένας μοναδιαίος τελεστής υπολογίζεται μέσω pipelining, λέμε ότι υπολογίζεται on-the-fly.

53 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων53 Pipelining (Κανάλι ταχείας επεξεργασίας) v Σύζευξη με εμφωλευμένους βρόγχους. v Ο υπολογισμός ξεκινάει άπό τη ρίζα του δέντρου. v Ο ρυθμός παραγωγής πλειάδων από το (Α join Β) είναι ελεγχόμενος. v Τα pipelines μπορούν να λειτουργήσουν σε δύο modes: –demand driven –producer-driven

54 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων54 Κατάλογος συστήματος (System Catalog) v Γτια κάθε ευρετήριο: – Δομή ευρετηρίου (π.χ., B+ tree) και κλειδιά αναζήτησης v Για κάθε πίνακα: – Όνομα, όνομα αρχείου, και δομή αρχείου (π.χ., Heap file) – Για κάθε γνώρισμα, όνομα και τύπος γνωρίσματος – Το όνομα του ευρετηρίου, για κάθε ευρετήριο – Περιορισμοί ακεραιότητας v Για κάθε όψη: – Όνομα της όψης και ορισμός v Και: στατιστικά, authorization, μέγεθος ενδιάμεσης μνήμης κλπ. * Οι κατάλογοι αποθηκεύονται επίσης σαν σχέσεις!

55 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων55 Κατάλογος συστήματος (System Catalog) v Πληθυσμός, Ntuples(R). v Μέγεθος, Npages(R). v Πληθυσμός ευρετηρίου, Nkeys(I). v Μέγεθος ευρετηρίου, INPages(I). v Ύψος ευρετηρίου, Iheight(I). v Ακτίνα τιμών ευρετηρίου, ILow(I) και Ihigh(I). v Οι κατάλογοι ενημερώνονται περιοδικά. Περιέ- χουν και άλλές πληροφορίες (π.χ. ιστογράμματα )

56 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων56 Εναλλακτικά Σχέδια v Κύρια διαφορά: push selects. v Με 5 σελίδες διαθέσιμη μνήμης, το κόστος σχεδίου: – Σάρωμα Reserves (1000) + write temp T1 (10 σελίδες, εάν έχουμε 100 σκάφη, ομοιόμορφη κατανομή). – Σάρωμα Sailors (500) + write temp T2 (250 σελίδες, έαν 10 ratings). – Ταξινόμηση T1 (2*2*10) και T2 (2*3*250), συγχώνευση (10+250) – Σύνολο: 3560 page I/Os. v Με BNL σύζευξη, κόστος σύζευξης= 10+4*250, συνολικό = 2770. v Επίσης `push’ projections, T1 έχει μόνο sid, T2 sid και sname : – T1 χωράει σε 3 σελίδες, το κόστος της BNL < από 250 σελ., σύνολο < 2000 Reserves Sailors sid=sid bid=100 sname (On-the-fly) rating > 5 (Scan; write to temp T1) (Scan; write to temp T2) (Sort-Merge Join)

57 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων57 Εναλλακτικά Σχέδια v Με συγκροτημένο ευρετήριο στο bid της Reserves, έχουμε 100,000/100 = 1000 πλειάδες σε 1000/100=10 σελ. v INL με pipelining (εξωτερική σχέση δε γίνεται materialized). v Η απόφαση να «σπρώξουμε» το rating>5 πριν το join εξαρτάται από τη διαθεσιμότητα ευρετηρίου επί του sid στο Sailors. v Κόστος: Η επιλογή πλειάδων της Reserves (10 I/Os); για κάθε μία παίρνουμε τη matching Sailors πλειάδα(1000*1.2); 1210 I/Os v Το γνώρισμα σύζευξης sid είναι κλειδί για τη Sailors. –Το πολύ μία matching πλειάδα, unclustered ευρετήριο στο sid OK. –Αποβάλλοντας τα άχρηστα γνωρίσματα δε βοηθάει. Reserves Sailors sid=sid bid=100 sname (On-the-fly) rating > 5 (Use hash index; do not write result to temp) (Index Nested Loops, with pipelining ) (On-the-fly)

58 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων58 Αλγεβρικές ισοδυναμίες (Equivalences) v Μας επιτρέπουν να δημιουργούμε ισοδύναμες αλγεβρικές παραστάσεις που έχουν (ίσως) καλύτερο τρόπο υπολογισμού v Επιλογές (selections): (cascade) (αντιμετάθεση) v Προβολές(projections): (cascade)

59 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων59 Αλγεβρικές ισοδυναμίες (Equivalences) v Μας επιτρέπουν να δημιουργούμε ισοδύναμες αλγεβρικές παραστάσεις που έχουν (ίσως) καλύτερο τρόπο υπολογισμού v Συζεύξεις: v Τομή, ένωση: R (S T) (R S) T (προσεταιριστική) (R S) (S R) (αντιμεταθετική) R  S = S  R (αντιμεταθετική) R  (S  Τ) = (R  S)  T (προσεταιριστική)

60 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων60 Αλγεβρικές ισοδυναμίες (Equivalences) v Συνδυασμοί αλγεβρικών τελεστών: π α (σ C (R)) σ C (π α (R))(προϋποθέσεις?) σ C (R S) σ C (R) S(προϋποθέσεις?) π α (R S) π α1 (R) π α2 (R)(προϋποθέσεις?)

61 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων61 Αλγεβρικές ισοδυναμίες (Equivalences) v Αποδείξτε ότι: v Αποδείξτε ότι αν C = C 1 ^C 2 ^C 3, όπου η C 1 έχει γνωρίσματα μόνο της R και η C 2 μόνο της S, τότε: R (S T) (T R) S σ C 1 ^C 2 ^C 3 (R S) σ C 3 (σ C 1 (R) σ C 2 (S))

62 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων62 Εκτίμηση/Υπολογισμός Κόστους v Για κάθε υποψήφιο σχέδιο, πρέπει να υπολογίσουμε (εκτιμήσουμε) το κόστος. – Πρέπει να εκτιμήσουμε το κόστος για κάθε κόμβο. u Εξαρτάται από το μέγεθος των παιδιών. u Έχουμε συζητήσει διαφορετικές μεθόδους για τελεστές. u Επίσης εξαρτάται από το εάν εφαρμόζουμε pipelining ή οχι – Πρέπει να εκτιμήσουμε το μέγεθος του αποτελέσματος για κάθε κόμβο στο δέντρο και αν είναι ταξινομημένο! u Χρησιμοποιήση πληροφοριών για τις σχέσεις που συμμετέχουν. u Προσεγγιστικές τιμές στην καλύτερη περίπτωση. u Ιστογράμματα.

63 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων63 Εκτίμηση/Υπολογισμός Κόστους v Έστω ένα query block: v Maximum # πλειάδων στο αποτέλεσμα είναι το γινό- μενο των πλειάδων στις σχέσεις στο FROM clause. v Reduction factor (RF): συνδέεται με κάθε όρο και δείχνει πόσο μειώνεται το αποτέλεσμα λόγω του όρου. Result cardinality = Max # πλειάδων*γινόμενο όλων RF’s. – Θεωρούμε ότι οι όροι είναι ανεξάρτητοι! – Ο όρος col=value έχει RF= 1/NKeys(I), με ευρετήριο I στο col – Ο όρος col1=col2 έχει RF= 1/ MAX (NKeys(I1), NKeys(I2)) – Ο όρος col>value έχει RF= (High(I)-value)/(High(I)-Low(I)) SELECT attribute list FROM relation list WHERE term 1 AND... AND term k

64 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων64 Εκτίμηση/Υπολογισμός Κόστους v Ιστογράμματα: –Έστω πίνακας με Ν τιμές, Ι ευρετήριο και συνθήκη col < value. –Ο συντελεστής ελάττωσης RF = (High(I) - τιμή)/(High(I) - Low(I)). –Αν δεν υπάρχει όμως ομοιόμορφη κατανομή? –Θέλουμε να προσεγγίσουμε όσο το δυνατόν καλύτερα την κατανομή των τιμών στο ευρετήριο Ι  ιστογράμματα. –Ιστογράμματα ίσου πλάτους ή ίσου βάθους.

65 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων65 Απαρίθμηση εναλλακτικών σχεδίων* v Υπάρχουν δύο περιπτώσεις: – Σχέδια ενός πίνακα – Σχέδια πολλαπλών πινάκων v Για ερωτήματα επί ενός πίνακα, αυτά αποτελούνται από συνδυασμό επιλογών, προβολών και συναθροίσεων: – Εξετάζεται κάθε δυνατή διαδρομή πρόσβασης (file scan / index), και επιλέγεται αυτή με το μικρότερο εκτιμώμενο κόστος. – Οι διαφορετικοί τελεστές εκτελούνται ουσιαστικά μαζί (π.χ., εάν ένα ευρετήριο χρησιμοποιηθεί για κάποια επιλογή, η προβολή γίνεται για κάθε ανακτώμενη πλειάδα και το αποτέλεσμα δίνεται (pipelined) στον τελεστή συνάθροισης).

66 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων66 Απαρίθμηση εναλλακτικών σχεδίων* v Πολλαπλές σχέσεις. Θεμελιώδης απόφαση για το System R: εξετάζονται μόνο left-deep join trees (αριστερού βάθους). – Καθώς ο αριθμός των συζεύξεων αυξάνει, ο αριθμός των εναλλακτικών σχεδίων αυξάνει εκθετικά. Πρέπει να περιορίσουμε το χώρο αναζήτησης – Με τα δέντρα αριστερού βάθους έχουμε πλήρως pipelined σχέδια. u Τα ενδιάμεσα αποτελέσματα δε γράφονται σε temporary αρχεία. u Προσοχή: Δεν επιδέχονται pipeline όλα τα δέντρα α.β. (π.χ., SM join) B A C D B A C D C D B A

67 Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων67 Highlights of System R Optimizer v Impact: – Most widely used currently; works well for < 10 joins. v Cost estimation: Approximate art at best. – Statistics, maintained in system catalogs, used to estimate cost of operations and result sizes. – Considers combination of CPU and I/O costs. v Plan Space: Too large, must be pruned. – Only the space of left-deep plans is considered. u Left-deep plans allow output of each operator to be pipelined into the next operator without storing it in a temporary relation. – Cartesian products avoided.


Κατέβασμα ppt "Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων1 Βάσεις Δεδομένων II Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων Δαμιανός Χατζηαντωνίου."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google