Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης 2005.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 6. SELECTSELECT SELECT * FROM όνομα_πίνακα ; • Με τη εντολή SELECT ανασύρουμε δεδομένα από την βάση δεδομένων. • Το αστεράκι.
Advertisements

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ 2 ΜΑΘΗΜΑ 4.
Σχεσιακός Λογισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Διάγραμμα Παρουσίασης
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Εισαγωγή στις Βάσεις Δεδομένων για Μαθητές Λυκείων και Τεχνικών Σχολών Δημήτρης Ζεϊναλιπούρ Λέκτορας Τμήμα Πληροφορικής,
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εισαγωγή στην SQL ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Προχωρημένα Θέματα Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης.
MySQL + Γλώσσα Προγραμματισμού
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία ερωτήσεων Πάνος Βασιλειάδης Ιανουάριος 2008
Δρ. Παναγιώτης Συμεωνίδης
PL/SQL.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων (ΚΒΔ)
δφσδφ ΦΥΣΙΚΟ ΕΠΙΠΕΔΟ ΑΠΟΘΗΚΩΝ ΔΕΔΟΜΕΝΩΝ: ΜΕΡΟΣ Α’ 4/6/2017
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΕ ΣΥΖΕΥΞΗ ΠΙΝΑΚΩΝ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
1 Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης.
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SQL: Ερωτήματα, προγραμματισμός και εναύσματα ΕΣΔ232 – Οργάνωση Δεδομένων.
Βάσεις Δεδομένων II Ενότητα 4: Σχεσιακός λογισμός II Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Ημέρα 1η.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακός Λογισμός.
31 Μαρτίου 2015 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
Βάσεις Δεδομένων Εργαστήριο ΙΙI Τμήμα Πληροφορικής ΑΠΘ
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ 2 ΜΑΘΗΜΑ 8. ΑΠΑΛΟΙΦΗ ΔΙΠΛΟΕΓΓΡΑΦΩΝ DISTINCT Μπορούμε να απαλείψουμε τις διπλοεγγραφές που μας επιστρέφονται και που οφείλονται στην.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακός Λογισμός.
Σημασιολογική Ολοκλήρωση Ολοκλήρωση Πληροφορίας Το πρόβλημα της ολοκλήρωσης πληροφορίας (information integration) προκύπτει από την ύπαρξη ετερογενών.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
ΕΠΛ 342 – Βάσεις Δεδομένων Εργαστήριο 4 ο SQL - Queries Ιωάννα Συρίμη
Οι επεκτάσεις του έργου TOOBIS στις γλώσσες ορισμού και ερωτήσεων του ODMG Κ. Βασιλάκης.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακός Λογισμός.
1 Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Παραγωγή πλάνων στην βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Φλεβάρης.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Βάσεις Δεδομένων Ι Επανάληψη
Βάσεις Δεδομένων Ενότητα 3: Σχεσιακή Άλγεβρα Βασίλης Βουτσινάς
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι η παρουσίαση δηλώσεων SQL που περιλαμβάνουν EXIST, ANY, ALL. Χ. Σκουρλάς.
Βάσεις Δεδομένων Ι 8η διάλεξη
Βάσεις Δεδομένων και web-based Εφαρμογές
Σχεσιακός Λογισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Ερωτήματα Επιλογής σε ACCESS
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων
Ερωτήματα Επιλογής σε ACCESS
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων
Εισαγωγή στην Επεξεργασία Ερωτήσεων
Σχεσιακός Λογισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Μεταγράφημα παρουσίασης:

Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης

2 Θεματολόγιο Γενικές αρχές της επεξεργασίας ερωτήσεων Parsing Βελτιστοποίηση ερωτήσεων: Επανεγγραφή ερωτήσεων Παραγωγή εναλλακτικών πλάνων Αποτίμηση πλάνων Πρόβλεψη μεγέθους Πολλές ευχαριστίες στους Γ. Ιωαννίδη, Τ. Σελλή, Ε. Πιτουρά για την επαναχρησιμοποίηση κειμένων/διαφανειών τους Οι εικόνες για την DB2 είναι από “DB2 Universal Optimizer” – παρουσίαση του G. Lohman

3 Θεματολόγιο Γενικές αρχές της επεξεργασίας ερωτήσεων Parsing Βελτιστοποίηση ερωτήσεων: Επανεγγραφή ερωτήσεων Παραγωγή εναλλακτικών πλάνων Αποτίμηση πλάνων Πρόβλεψη μεγέθους

4 Server processes : και τι γίνεται εκεί?

5 Επεξεργασία ερωτήσεων Οι clients θέτουν μια ερώτηση SQL στο server Χαρακτηριστικά: δηλωτική γλώσσα + το μόνο που πρέπει να ξέρει ο χρήστης είναι ονόματα πινάκων και γνωρισμάτων To DBMS μέσω της server process κάνει τα εξής: Parsing Έλεγχο συντακτικής ορθότητας Σύνθεση ενός αλγεβρικού πλάνου εκτέλεσης (μέσω ενός δέντρου τελεστών) Εκτέλεση του πλάνου και επιστροφή του αποτελέσματος

6 Επεξεργασία ερωτήσεων Query Parser Query Optimizer Query Processor SQL Εσωτερική αναπαράσταση Αλγεβρικό [φυσικό] πλάνο (procedural) Επιστροφή αποτελέσματος

7 Επεξεργασία ερωτήσεων Query Parser Query Optimizer Query Processor SQL Εσωτερική αναπαράσταση Αλγεβρικό [φυσικό] πλάνο (procedural) Επιστροφή αποτελέσματος

8 Παράδειγμα Ερώτησης SELECT DISTINCT q1.partno, q1.descr, q2.suppno FROM inventory q1, quotations q2 WHERE q1.partno = q2.partno AND q1.descr = 'engine' AND q2.price <= ALL ( SELECT q3.price FROM quotations q3 WHERE q2.partno = q3.partno ); Query blocks

9 Query Graph Model

10 Επεξεργασία ερωτήσεων Query Parser Query Optimizer Query Processor SQL Εσωτερική αναπαράσταση Αλγεβρικό [φυσικό] πλάνο (procedural) Επιστροφή αποτελέσματος

11 Επεξεργασία ερωτήσεων Δοθέντος του πλάνου, κάθε λογικός τελεστής (π.χ., σ, π,  ) έχει περισσότερους του ενός τρόπους να εκτελεστεί φυσικά (δηλ., στην πράξη). Στην προηγούμενη διάλεξη εξετάσαμε τέτοιους διαφορετικούς φυσικούς τρόπους εκτέλεσης για τους πιο σημαντικούς τελεστές της σχεσιακής άλγεβρας.

12 Επεξεργασία ερωτήσεων Query Parser Query Optimizer Query Processor SQL Εσωτερική αναπαράσταση Αλγεβρικό [φυσικό] πλάνο (procedural) Επιστροφή αποτελέσματος

13 Αφαιρετική δομή του βελτιστοποιητή Rewriter Planner “Δηλωτική” Βελτιστοποίηση “Διαδικαστική” Βελτιστοποίηση Αλγεβρικός χώρος Μέθοδοι Προσπέλασης Μοντέλο κόστους Αποτίμηση μεγέθους αποτελέσματος Κατασκευή πιθανών πλάνωνΑποτίμηση παραγόμενων πλάνων

14 Επίπεδα βελτιστοποίησης Υπάρχει ένα επίπεδο «δηλωτικής» βελτιστοποίησης, ή επανεγγραφής, όπου παράγουμε λογικά ισοδύναμους τρόπους να εκφράσουμε μια ερώτηση μέσω του rewriter select * from emp where emp.dno in (select dept.dno from dept) and sal > 100K select name,age,sal,ndo from emp, dept where emp.dno = dept.dno and sal > 100K

15 Επίπεδα βελτιστοποίησης Υπάρχει ένα επίπεδο «διαδικαστικής» βελτιστοποίησης, όπου παράγουμε (όλα τα) διαφορετικά πλάνα εκτέλεσης μέχρι να διαλέξουμε το πιο αποδοτικό. Η δουλειά αυτή ανατίθεται στον planner. Ο planner οφείλει: Να αποφασίσει ποια πλάνα εκτέλεσης θα δημιουργηθούν Ποιο εξ αυτών είναι το καλύτερο

16 Θεματολόγιο: Επανεγγραφή Rewriter Planner “Δηλωτική” Βελτιστοποίηση “Διαδικαστική” Βελτιστοποίηση Αλγεβρικός χώρος Μέθοδοι Προσπέλασης Μοντέλο κόστους Αποτίμηση μεγέθους αποτελέσματος Κατασκευή πιθανών πλάνωνΑποτίμηση παραγόμενων πλάνων

17 Επίπεδα βελτιστοποίησης Υπάρχει ένα επίπεδο «δηλωτικής» βελτιστοποίησης, ή επανεγγραφής, όπου παράγουμε λογικά ισοδύναμους τρόπους να εκφράσουμε μια ερώτηση μέσω του rewriter Αυτό συμπεριλαμβάνει, συνήθως: Μετατροπή εκφράσεων σε «βολική» μορφή Απλοποίηση εμφωλευμένων ερωτήσεων Σημασιολογικά έξυπνες μετατροπές

18 Ισοδυναμίες της σχεσιακής άλγεβρας ( Commute ) Προβολή: (Cascade) Σύνδεση: R (S T) (R S) T (Associative) (R S) (S R) (Commute) R (S T) (T R) S + Δ.Ο.: (Cascade) Επιλογή:

19 Σύνθετες ισοδυναμίες σ θ (π Α (R))  π Α (σ θ (R)), αρκεί τα πεδία που εμπλέκονται στη συνθήκη θ να είναι υποσύνολο των πεδίων του Α σ θ (R  S)  (R  θ S), αρκεί τα πεδία που εμπλέκονται στη συνθήκη θ να είναι από τις σχέσεις R και S σ θ (R  S)  σ θ (R)  S, αρκεί τα πεδία που εμπλέκονται στη συνθήκη θ να είναι αποκλειστικά της R π Α (R  S)  π Α’ (R)  S, με την Α’ να περιέχει (α) τα πεδία που είχε η Α (αρκεί να είναι αποκλειστικά της R) και (β) τα πεδία που εμπλέκονται στη συνθήκη σύνδεσης Δ.Ο. ισχύουν τα παραπάνω…

20 Επανεγγραφή Ερωτήσεων (παράδειγμα από IBM DB2) Distribute NOT... WHERE NOT(COL1 = 10 OR COL2 > 3) γίνεται... WHERE COL1 <> 10 AND COL2 <= 3 Μετασχηματισμοί τιμών:...WHERE COL = YEAR(` ') γίνεται... WHERE COL = 1994 Μεταβατική κλειστότητα δοθέντος: T1.C1 = T2.C2, T2.C2 = T3.C3, T1.C1 > 5 προστίθενται... T1.C1 = T3.C3 AND T2.C2 > 5 AND T3.C3 > 5

21 Αφαιρετική δομή του βελτιστοποιητή Rewriter Planner “Δηλωτική” Βελτιστοποίηση “Διαδικαστική” Βελτιστοποίηση Αλγεβρικός χώρος Μέθοδοι Προσπέλασης Μοντέλο κόστους Αποτίμηση μεγέθους αποτελέσματος Κατασκευή πιθανών πλάνωνΑποτίμηση παραγόμενων πλάνων

22 Επίπεδα βελτιστοποίησης Υπάρχει ένα επίπεδο «διαδικαστικής» βελτιστοποίησης, όπου παράγουμε (όλα τα) διαφορετικά πλάνα εκτέλεσης μέχρι να διαλέξουμε το πιο αποδοτικό. Η δουλειά αυτή ανατίθεται στον planner. Ο planner οφείλει: Να αποφασίσει ποια πλάνα εκτέλεσης θα δημιουργηθούν Ποιο εξ αυτών είναι το καλύτερο

23 Ο planner οφείλει... Να κατασκευάσει ένα σύνολο πλάνων, με βάση Ένα αλγεβρικό χώρο για τη σειρά εκτέλεσης των λειτουργιών (π.χ., να αποφασίσει με ποια σειρά θα κάνει το R  S  T) Ένα σύνολο από μεθόδους προσπέλασης στα δεδομένα (π.χ., full- index scan, full table scan, …) Να αποτιμά κάθε πλάνο που παράγει, μέχρι στο τέλος να βρει το πιο αποδοτικό, με βάση Ένα μοντέλο κόστους που προβλέπει πόσο χρόνο/disk I/O/… κοστίζει το κάθε πλάνο Ένα μοντέλο πρόβλεψης του μεγέθους, κυρίως των ενδιάμεσων αποτελεσμάτων Προσοχή: η αποτίμηση είναι πάντα προσέγγιση/πρόβλεψη και όχι ακριβής υπολογισμός...

24 Υποθέσεις... Θα κάνουμε τις εξής υποθέσεις εργασίας (που αφορούν πρακτικά το σύνολο των DBMS) σε ότι αφορά τις εναλλακτικές λύσεις που θα εξετάσουμε: Οι μέθοδοι προσπέλασης που έχουμε είναι (α) πλήρες διάβασμα ενός πίνακα (β) προσπέλαση μέσω ενός Β+ ευρετηρίου Οι μέθοδοι σύνδεσης που έχουμε είναι (α) nested loops και (β) merge-join, στα οποία χρησιμοποιούμε και των δύο ειδών τις μεθόδους προσπέλασης

25 Σύνδεση με Nested Loops Για κάθε D  Dept [& Dname=‘Toys’] Για κάθε E  Emp Αν ταιριάζουν στο πεδίο Dno Τότε επέστρεψε E.ename, D.mgr Ερώτηση κρίσεως: το Dept ή το Emp πρέπει να βγει ως η εξωτερική σχέση? SELECT E.ename, D.mgr FROM Emp E, Dept D WHERE D.dname=‘Toys’ AND E.dno=D.dno

26 Σύνδεση με Merge-Join Ταξινόμησε τα Emp, Dept με βάση το πεδίο Dno Για κάθε D  Dept [& Dname=‘Toys’] Για κάθε E  Emp με ίδιο Dno Επέστρεψε E.ename, D.mgr SELECT E.ename, D.mgr FROM Emp E, Dept D WHERE D.dname=‘Toys’ AND E.dno=D.dno

27 Αλγεβρικός χώρος: τι είναι ένα πλάνο Το πλάνο εκτέλεσης μιας SQL ερώτησης είναι ένα δέντρο, με: Τις σχέσεις που συμμετέχουν στην ερώτηση, για φύλλα Αλγεβρικούς τελεστές για ενδιάμεσους κόμβους και συγκεκριμένα τους π, σ και  Το πλάνο έχει σειρά εκτέλεσης από κάτω και αριστερά προς τα πάνω. Κοιτώντας ένα ενδιάμεσο κόμβο, ξέρουμε ότι τα παιδιά του έχουν εκτελεστεί και αυτός στέλνει το αποτέλεσμα προς τα πάνω

28 Πλάνα εκτέλεσης select name, floor from emp, dept where emp.dno = dept.dno and sal > 100K

29 Πλάνα εκτέλεσης Για μια απλή SELECT-FROM-WHERE ερώτηση SQL, ο αριθμός των ισοδύναμων εναλλακτικών πλάνων είναι τεράστιος. Υπάρχουν κάποιοι λογικοί κανόνες, που επιτρέπουν στον βελτιστοποιητή να μειώσει τον αλγεβρικό χώρο πλάνων

30 Λογικοί κανόνες βελτιστοποίησης Σπρώξε όλες τις επιλογές όσο πιο χαμηλά στο δέντρο γίνεται Ενσωμάτωσε τις προβολές μέσα στους άλλους τελεστές... και πάλι όμως, ο αλγεβρικός χώρος παραμένει τεράστιος...

31 Λογικοί κανόνες βελτιστοποίησης Η βασική αιτία είναι οι ιδιότητες της σύνδεσης: R  S  S  R (R  S)  Τ  R  ( S  Τ ) Το αποτέλεσμα είναι ότι για Ν σχέσεις στο FROM clause έχω Ν! διατάξεις... Επιπλέον κανόνας: Ποτέ μην κάνεις καρτεσιανά γινόμενα, εκτός κι αν πρέπει...

32 Ποτέ μην κάνεις καρτεσιανά γινόμενα ΠΡΟΣΟΧΗ! select name, floor, balance from emp, dept, acnt where emp.dno = dept.dno and dept.ano = acnt.ano

33 Αριστεροβαθή Δέντρα Ακόμα και τώρα όμως, ο αλγεβρικός χώρος είναι μεγάλος Όλα τα σύγχρονα DBMS έχουν εισάγει τον ακόλουθο πρακτικό κανόνα: Η εσωτερική σχέση ενός τελεστή είναι ΠΑΝΤΑ μια σχέση της ΒΔ και ποτέ ενδιάμεσο αποτέλεσμα! Τα δέντρα που προκύπτουν έτσι, λέγονται αριστεροβαθή (left-deep)

34 Αριστεροβαθές πλάνο Δεξιοβαθές πλάνο Θαμνώδες (bushy) πλάνο Selectname, floor, balance, bank from emp,dept,acnt,bank where emp.dno = dept.dno and dept.ano = acnt.ano and acnt.bno = bank.bno

35 Αριστεροβαθή Δέντρα Κέρδη από αριστεροβαθή δέντρα: Μπορούμε εύκολα να χρησιμοποιούμε ευρετήρια για τις σχέσεις! Τα αποτελέσματα από μια σύνδεση μπορούν να γίνουν pipeline σε μια επόμενη σύνδεση! Ερώτηση κρίσεως: Γιατί??

36 Ωραία, και με ποια σειρά? Ακόμα δεν μας είπες για τη σειρά των συνδέσεων! (R  S)  Τ  R  ( S  Τ ) Ο planner, σε όλα τα εμπορικά DBMS χρησιμοποιεί ένα αλγόριθμο δυναμικού προγραμματισμού για να ανακαλύψει τη σειρά

37 Selinger et al, SIGMOD 1979 Selinger, Astrahan, Chamberlain, Lorie & Price: "Access Path Selection in a Relational Database Management System." SIGMOD Conference 1979: Για την ακρίβεια, το τρίτο πιο cited database paper, μετά το ER και το σχεσιακό μοντέλο...

38 Επεξεργασία μιας SQL εντολής Parsing Optimization Code generation Execution

39 Code generation “translates ASL trees into machine language code to execute the plan chosen by the OPTIMIZER. In doing this Uses a relatively small number of code templates, one for each type of join method (including no join). Nested queries are treated as "subroutines" which return values to the predicates in which they occur. During code generation, the parse tree is replaced by executable machine code and its associated data structures. Either control is immediately transfered to this code or the code is stored away in the database for later execution, depending on the origin of the statement

40 Code Execution “ … when the code is ultimately executed, it calls upon the System R internal storage system (RSS) via the storage system interface (RSI) to scan each of the physically stored relations in the query…”

41 Storage manager: the Research Storage System (RSS) O Storage Manager (στο System R, RSS) είναι υπεύθυνος για Την αποθήκευση των δεδομένων Την προσπέλαση των δεδομένων (access paths) Locking Logging

42 Storage manager: the Research Storage System (RSS) Αποθήκευση των δεδομένων Πίνακες: σύνολα πλειάδων(tuples). Κάθε πλειάδα είναι σύνολο συνεχόμενων γνωρισμάτων. Pages: 4K, περιέχουν πλειάδες Segment: οι πλειάδες ενός πίνακα πέφτουν μέσα σε ένα segment Προσπέλαση των δεδομένων (access paths) Segment scans: φέρε μου όλες τις πλειάδες ενός πίνακα Index scan, μέσω Β+ δέντρων

43 Storage manager: the Research Storage System (RSS) Πόσες φορές προσπελάζω μια σελίδα? Segment scan: ακριβώς μία Index scan: κάθε σελίδα του index την προσπελάζω ακριβώς μία φορά – για τις σελίδες του πίνακα αυτό δεν είναι σαφές Clustered index: αν οι εγγραφές του πίνακα εγγράφονται στο δίσκο με την ίδια σειρά που έχει και ο index

44 Storage manager: the Research Storage System (RSS) Και τι εύρος του index ψάχνω? Ανάλογα με το τι ερώτηση κάνεις... Search arguments (SARGS): σύνολο συνθηκών που αν τις αποτιμήσω σε μια πλειάδα, μου επιστρέφουν true/false Π.χ., SAL > 30K AND AGE < 35 Αν έχω ένα index πάνω στα SAL,AGE με συμφέρει... ΠΡΟΣΟΧΗ: τα SARGS αφορούν κλήσεις στο δίσκο για σελίδες!

45 Storage manager: the Research Storage System (RSS) “The primary way of accessing tuples in a relation is via an RSS scan. A scan returns a tuple at a time along a given access path. OPEN, NEXT, and CLOSE are the principal commands on a scan.”

46 Αρχιτεκτονική System R Relational Data System (RDS) Research Storage System (RSS) Λειτουργεί σε επίπεδο tuples Λειτουργεί σε επίπεδο pages Disk NEXT() = getNextTuple(EMP) getNextPage(EMPsegment) RSI SELECT * FROM EMP

47 Μοντέλο κόστους “The OPTIMIZER examines both the predicates in the query and the access paths available on the relations referenced by the query and formu1ates a cost prediction for each access plan, using the following formula:” COST = PAGE FETCHES + W * (RSI CALLS) RSI Calls: πόσες πλειάδες θα χρειαστεί να επεξεργαστεί το λογικό επίπεδο RDS W: scale factor

48 Μοντέλο κόστους For each relation T, NCARD(T) the cardinality of relation T = πόσες εγγραφές έχει TCARD(T) the number of pages in the segment that hold tuples of relation T = πόσες σελίδες έχει το segment της Τ. P(T), the fraction of data pages in the segment that hold tuples of relation T. P(T) = TCARD(T1 / (no. of non-empty pages in the segment). For each index I on relation T, ICARD(Ι) number of distinct keys in index I. NINDX(I) the number of pages in index I. Για κάθε συνθήκη επιλογής: selectivity F = the expected fraction of tuples which will satisfy the predicate. Η F υπολογίζεται ως ακολούθως...

49

50 Μοντέλο κόστους Query cardinality (QCARD) : εκτίμηση των πόσων πλειάδων θα προκύψουν από ένα query στις σχέσεις T i με F j selectivities για κάποιους Boolean factors j QCARD = Π NCARD(T i ) * Π Fj The number of expected RSI calls (RSICARD) = πόσες πλειάδες θα κάνω τελικά process RSICARD = Π NCARD(T i ) * Π Sj με S j selectivities of the sargable boolean factor

51 Interesting Order Using an index access path or sorting tuples produces tuples in the index value or sort key order. We say that a tuple order is an interesting order if that order is one specified by the query block's GROUP BY or ORDER BY clauses. Αν δεν υπάρχει κάποια ταξινόμηση στο query, τότε λαμβάνουμε υπ’ όψη και την «μη ταξινόμηση» ως πιθανή interesting order Επίσης, interesting order συνιστούν και τα πεδία που συμμετέχουν σε ένα join T1.attr1 = T2.attr2

52 Cost for single-relation queries Αν δεν υπάρχει group-by/order by: Το κόστος του πιο φτηνού από τα διαθέσιμα access paths Αλλιώς, το min cost ανάμεσα σε: Κόστος του access path με το σχετικό interesting order Κόστος του access path χωρίς interesting order + κόστος ταξινόμησης QCARD πλειάδων Και ποιες είναι οι φόρμουλες για τα access paths?

53 Cost for single-relation queries

54 Multi-relation queries: joins! Εκτός από τα single-relation queries, δεν εξετάσαμε τα multi-relation queries, που πρακτικά είναι τα queries με joins. Αυτό που δεν έχουμε δει ακόμα είναι η σειρά των συνδέσεων! Π.χ., ποια είναι η σειρά στην ερώτηση (R  S)  Τ, δοθέντος ότι: (R  S)  Τ  R  ( S  Τ ) Ο planner, σε όλα τα εμπορικά DBMS χρησιμοποιεί ένα αλγόριθμο δυναμικού προγραμματισμού για να ανακαλύψει τη σειρά

55 Δυναμικός προγραμματισμός Εφαρμόζεται σε προβλήματα, στα οποία η λύση μπορεί να εκφρασθεί ως μια ακολουθία αποφάσεων Εκμεταλλεύεται το principle of optimality: μια ακολουθία αποφάσεων (λύση) δεν μπορεί να είναι βέλτιστη, αν μια υπακολουθία της δεν είναι βέλτιστη αβγ

56 Δυναμικός προγραμματισμός για επεξεργασία ερωτήσεων R1R2  R3  Ri  Βήμα 2 Βήμα 3... Βήμα i Εν παραλλήλω, φτιάχνω πολλά δέντρα. Σιγά σιγά όμως, μειώνω τον αριθμό τους...

57 Βασικές υπενθυμίσεις/υποθέσεις του άρθρου Από το 1976, οι Blasgen & Eswaran είχαν δείξει πειραματικά ότι το nested loops και το merge-join είναι πολύ κοντά στο optimal πλάνο για οποιοδήποτε join Τα Ν-way joins αποτιμώνται με βάση κάποια αριστεροβαθή δέντρα Δεν εξετάζουμε καρτεσιανά γινόμενα, και σπρώχνουμε τις επιλογές όσο πιο χαμηλά γίνεται στο δέντρο

58 Interesting orders again Ομαδοποιούμε τα joins με βάση το interesting order των πλειάδων που παράγονται Ορίζουμε κλάσεις ισοδυναμίας για τα interesting orders, π.χ., αν E.DNO = D.DNO AND D.DNO = F.DNO τότε τα τρία γνωρίσματα ανήκουν στην ίδια interesting order Κατασκευάζουμε ένα χώρο λύσεων που, ως ακολουθία αποφάσεων, είναι και αυτός ένα δέντρο: κάθε κόμβος του δέντρου, σε βάθος i είναι ένα πλάνο με i το πλήθος joins Για κάθε interesting order, κάθε φορά, κρατάμε το πιο φτηνό πλάνο

59 Δυναμικός προγραμματισμός για επεξεργασία ερωτήσεων Πρόβλημα: ποια η σωστή σειρά για να εκτελέσω το R 1  R 2  …  R n ? 1. Θα βρω όλους τους τρόπους για να προσπελάσω κάθε σχέση χωριστά 2. Θα πάρω κάθε τέτοιο τρόπο προσπέλασης και θα φτιάξω το καλύτερο υποδέντρο με δύο φύλλα που αντιστοιχεί σε κάθε interesting order. 3. Θα πάρω κάθε τέτοιο υποδέντρο και θα φτιάξω το καλύτερο υποδέντρο με τρία φύλλα που αντιστοιχεί σε κάθε interesting order 4. Ο αλγόριθμος τελειώνει στο δέντρο με n-joins και επιστρέφει το φθηνότερο πλάνο (ανάλογα με το order, μπορεί να χρειαστεί και μια επιπλέον ταξινόμηση στο τέλος) Ο αριθμός λύσεων είναι 2^n * αρ. interesting orders. To pruning, όμως το μειώνει σημαντικά

60 Kossmann, CSUR 32(4), 2000

61 Παράδειγμα

62 Παράδειγμα

63 Παράδειγμα

64 Παράδειγμα

65 Παράδειγμα

66 Cost formulae C-outer(path1)/ C-inner(path2) : cost of scanning the outer/inner relation via pathl/path2 N: the cardinality (number) of the outer relation tuples which satisfy the applicable predicates. Then, the cost for the NL join and the merge part of the MJ join is: c-join(pathl,path2) = C-outer(path1) + N * C-inner(path2) The difference between nested-loops and merge join is in the access paths followed each time, with the inner scan being possibly cheaper for merge-join

67 Nested queries Αν δεν υπάρχει correlation, κάνουμε πρώτα το nested query και μετά χρησιμοποιούμε το αποτέλεσμά του για να αποτιμήσουμε το εξωτερικό query Αν υπάρχει correlation, τότε για κάθε tuple του εξωτερικού query τρέχουμε το εσωτερικό query ξανά

68 Nested queries SELECT NAME FROM EMPLOYEE WHERE DEPARTMENT-NUMBER IN (SELECT DEPARTMENT-NUΜBER FROM DEPARTMENT WHERE LOCATION='DENVER‘) SELECT NAME FROM EMPLOYEE X WHERE SALARY > (SELECT SALARY FROM EMPLOYEE WHERE EMPLOYEE-NUMBER = X.MANAGER) SELECT NAME FROM EMPLOYEE WHERE DEPARTMENT-NUMBER IN {12, 14, 143} Για κάθε Χ, τρέχω το έσω query

69 Τώρα κάνουμε κάτι καλύτερο (παράδειγμα από IBM DB2) Αρχική Ερώτηση SELECT PS_SUPPLYCOST FROM PARTSUPP WHERE PS_PARTKEY <> ALL (SELECT L_PARTKEY FROM LINEITEM WHERE PS_SUPPKEY = L_SUPPKEY) Μετασχηματισμένη Ερώτηση SELECT PS_SUPPLYCOST FROM PARTSUPP WHERE NOT EXISTS (SELECT * FROM LINEITEM WHERE PS_SUPPKEY = L_SUPPKEY AND PS_PARTKEY = L_PARTKEY)

70 Επανάληψη Rewriter Planner “Δηλωτική” Βελτιστοποίηση “Διαδικαστική” Βελτιστοποίηση Αλγεβρικός χώρος Μέθοδοι Προσπέλασης Μοντέλο κόστους Αποτίμηση μεγέθους αποτελέσματος Κατασκευή πιθανών πλάνωνΑποτίμηση παραγόμενων πλάνων R1R2  R3 

71 Appendix Ιστογράμματα Από ΙΒΜ DB2

72 Εκτίμηση μεγέθους Για να δουλέψουν οι φόρμουλες κόστους που έχουμε, πρέπει να μπορούμε να αποτιμήσουμε το μέγεθος των ενδιάμεσων αποτελεσμάτων Εν γένει, δεν είμαστε πολύ καλοί σ’ αυτό, πρακτικά οι τρόποι εκτίμησης που έχουμε δουλεύουν σε δέντρα με ύψος πάνω από 5... Η πιο καλή τεχνική που έχουμε είναι τα ιστογράμματα

73 Ιστογράμματα Σ’ ένα ιστόγραμμα, διαιρούμε το εύρος των τιμών ενός πεδίου σε κάδους (αγγλιστί: buckets) Για κάθε τιμή που παίρνει το πεδίο, μετράω τον αριθμό που αυτή εμφανίζεται age # εμφανίσεων # εμφανίσεων Ιστόγραμμα με 3 κάδους

74 Ιστογράμματα Και πώς αποφασίζω πόσους κάδους? Ιστογράμματα ίσου πλάτους: κάθε κάδος έχει τον ίδιο αριθμό τιμών στον άξονα των x Ιστογράμματα ίσου ύψος: κάθε κάδος έχει το ίδιο ύψος στον άξονα των y Σειριακά ιστογράμματα: οι συχνότητες ενός κάδου είναι μεγαλύτερες από αυτές του προηγούμενου

75 Ιστογράμματα Αν κάνω μια επιλογή σ age > 43 (emp) το DBMS μπορεί να εκτιμήσει περίπου πόσες εγγραφές θα μου επιστραφούν Αντίστοιχα, αν κάνω μια σύνδεση R  S πάλι μπορεί να κάνει την αντίστοιχη εκτίμηση ανά ζεύγος κάδων.

76 Ιστογράμματα Είναι σαφές ότι όσο πιο πολλές πράξεις, τόσο πιο πολύ απομακρύνεται η εκτίμηση από την πραγματικότητα... (Λανθασμένες) Υποθέσεις εργασίας: οι τιμές των πεδίων είναι ισοπίθανα μοιρασμένες + τα πεδία είναι ανεξάρτητα μεταξύ τους... Και τι γίνεται όταν έχω INS/DEL/UPD ?

77 NameSalaryDepartment Zeus100KGeneral Manager Poseidon80KDefense Pluto80KJustice Aris50KDefense Ermis60KCommerce Apollo60KEnergy Hefestus50KEnergy Hera90KGeneral Manager Athena70KEducation Aphro60KDomestic Affairs Demeter60KAgriculture Hestia50KDomestic Affairs Artemis60KEnergy Department Frequency General Manager2 Defense2 Education1 Domestic Affairs2 Agriculture1 Commerce1 Justice1 Energy3 Ιστογράμματα

78 Ιστογράμματα Department Απόλυτη Συχνότητα Συχνότητα Κάδου Agriculture11.50 Commerce11.50 Defense21.50 Domestic Affairs21.50 Education11.75 Energy31.75 General Manager21.75 Justice11.75 Ιστόγραμμα ίσου πλάτους: κάθε κάδος έχει τον ίδιο αριθμό τιμών στον άξονα των x Εδώ: δύο κάδοι, ο πρώτος από A – D και ο άλλος από E-Z Συχν. Κάδου: Σ(x)/count(x), x  κάδο #πραγματικών εμφανίσεων εκτίμηση ιστογράμματος

79 Ιστογράμματα Department Απόλυτη Συχνότητα Συχνότητα Κάδου Agriculture11.33 Commerce11.33 Defense21.33 Education11.33 General Manager21.33 Justice11.33 Domestic Affairs22.50 Energy32.50 Ιστόγραμμα σειριακό: οι συχνότητες του δεύτερου κάδου είναι μεγαλύτερες από αυτές του πρώτου #πραγματικών εμφανίσεων εκτίμηση ιστογράμματος

80 Appendix Ιστογράμματα Από ΙΒΜ DB2

81 Δομή του optimizer της IBM DB2

82 Επανεγγραφή Ερωτήσεων (παράδειγμα από IBM DB2) Distribute NOT... WHERE NOT(COL1 = 10 OR COL2 > 3) γίνεται... WHERE COL1 <> 10 AND COL2 <= 3 Μετασχηματισμοί τιμών:...WHERE COL = YEAR(` ') γίνεται... WHERE COL = 1994 Μεταβατική κλειστότητα δοθέντος: T1.C1 = T2.C2, T2.C2 = T3.C3, T1.C1 > 5 προστίθενται... T1.C1 = T3.C3 AND T2.C2 > 5 AND T3.C3 > 5

83 Επανεγγραφή Ερωτήσεων (παράδειγμα από IBM DB2) Αρχική Ερώτηση SELECT ps.* FROM tpcd.partsupp ps WHERE ps.ps_partkey IN (SELECT p_partkey FROM tpcd.parts WHERE p_name LIKE 'forest%'); Μετασχηματισμένη Ερώτηση SELECT ps.* FROM parts, partsupp ps WHERE ps.ps_partkey = p_partkey AND p_name LIKE `forest%';

84 Επανεγγραφή Ερωτήσεων (παράδειγμα από IBM DB2) Αρχική Ερώτηση SELECT SUM(O_TOTAL_PRICE) AS OSUM, AVG(O_TOTAL_PRICE) AS OAVG FROM ORDERS; Μετασχηματισμένη Ερώτηση SELECT OSUM, OSUM/OCOUNT AS OAVG FROM (SELECT SUM(O_TOTAL_PRICE) AS OSUM, COUNT(O_TOTAL_PRICE) AS OCOUNT FROM ORDERS) AS SHARED_AGG; Από 2 sum και 1 count σε 1 sum και 1 count!

85 Επανεγγραφή Ερωτήσεων (παράδειγμα από IBM DB2) Αρχική Ερώτηση SELECT PS_SUPPLYCOST FROM PARTSUPP WHERE PS_PARTKEY <> ALL (SELECT L_PARTKEY FROM LINEITEM WHERE PS_SUPPKEY = L_SUPPKEY) Μετασχηματισμένη Ερώτηση SELECT PS_SUPPLYCOST FROM PARTSUPP WHERE NOT EXISTS (SELECT * FROM LINEITEM WHERE PS_SUPPKEY = L_SUPPKEY AND PS_PARTKEY = L_PARTKEY)