Επεξεργασία ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη
Σε τι αφορά η επεξεργασία ερωτημάτων? Αναφέρεται στο σύνολο των δραστηριοτήτων που περιλαμβάνονται στην ανάκτηση δεδομένων από μία βάση δεδομένων Βάσεις Δεδομένων, Παν. Πειραιά
Βασικά βήματα επεξεργασίας ερωτημάτων ().Ανάλυση και μετάφραση.βελτιστοποίηση 3. Υπολογισμός Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 3
Ανάλυση και μετάφραση Μετάφραση ερωτήματος σε εσωτερική αναπαράσταση. Από γλώσσες υψηλού επιπέδου ΒΔ (π.χ. SQL) σε παραστάσεις που μπορούν να χρησιμοποιηθούν σε φυσικό επίπεδο από το σύστημα αρχείων Μετάφραση σε σχεσιακή άλγεβρα. Ο αναλυτής (prser) ελέγχει τη σύνταξη και επαληθεύει τις σχέσεις Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4
Βελτιστοποίηση select blnce from ccount where blnce < 500 Μία έκφραση σχεσιακής άλγεβρας μπορεί να έχει πολλές ισοδύναμες εκφράσεις blnce500 ( blnce (ccount)) ισοδύναμη με blnce ( blnce500( ccount)) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 5
Select Opertion Exmple Reltion r A B C D 7 5 7 3 3 0 A=B ^ D > 5 (r) A B C D 7 3 0 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 6
Project Opertion Exmple A B C Reltion r: 0 0 30 40 A,C (r) A C Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 7
Crtesin-Product Opertion-Exmple Reltions r, s: A B C D E r 0 0 0 0 b b r x s: s A B C D E 0 0 0 0 0 0 0 0 b b b b Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 8
Συνδυασμός λειτουργιών Exmple: A=C (r x s) r x s A B C D E A=C (r x s) 0 0 0 0 0 0 0 0 b b b b A B C D E 0 0 0 b Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 9
Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 0 Nturl Join Opertion Exmple Reltions r, s: A B 4 C D b b B 3 3 D b b E r A B C D b E s r s r.a, r.b, r.c, r.d, s.e ( r.b = s.b r.d = s.d (r x s))
Βελτιστοποίηση Κάθε πράξη της σχεσιακής άλγεβρας μπορεί να υλοποιηθεί με διαφορετικούς αλγορίθμους: π.χ., για την υλοποίηση της επιλογής μπορεί είτε να σαρώσουμε (scn) όλο το αρχείο ελέγχοντας κάθε εγγραφή αν ικανοποιεί τη συνθήκη είτε αν υπάρχει π.χ., ένα Β + ευρετήριο στο γνώρισμα blnce να χρησιμοποιήσουμε το ευρετήριο Άρα δεν αρκεί ο προσδιορισμός της πράξης - πρέπει να προσδιορίζεται και ο αλγόριθμος που θα χρησιμοποιηθεί για την υλοποίησή της Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά
Πλάνο εκτέλεσης ερωτήματος Π blnce σ blnce < 500 : χρήση ευρετηρίου ccount Μία έκφραση που καθορίζει λεπτομερώς τη στρατηγική εκτέλεσης του ερωτήματος καλείται πλάνο εκτέλεσης ερωτήματος (query evlution-pln) Παράδειγμα Μπορούμε να χρησιμοποιήσουμε ένα ευρετήριο πάνω στο blnce για να βρούμε τους λογαριασμούς με blnce < 500,ή μπορούμε να εκτελέσουμε πλήρη αναζήτηση της σχέσης και μετά να αφαιρέσουμε τους λογαριασμούς με blnce < 500 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 8
Βασικά βήματα : Βελτιστοποίηση Βελτιστοποίηση ερωτήματος: Ανάμεσα σε όλα τα ισοδύναμα πλάνα εκτέλεσης επέλεξε εκείνο με το χαμηλότερο κόστος. Το κόστος εκτιμάται χρησιμοποιώντας στατιστική πληροφορία από το κατάλογο ΒΔ π.χ. Αριθμός εγγραφών σε κάθε σχέση, μέγεθος εγγραφών κλπ. Υπάρχουν υλοποιημένοι μια σειρά από αλγόριθμοι για κάθε βασική πράξη (π.χ., που χρησιμοποιούν ή όχι ευρετήρια κλπ) Γενικά, το ΣΔΒΔ με βάση κάποια στατιστικά στοιχεία κάνει μια εκτίμηση του κόστους και επιλέγει τον αλγόριθμο για κάθε πράξη με τον μικρότερο (με βάση την εκτίμηση) κόστος Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 9
Επεξεργασία Ερωτήσεων (ανακεφαλαίωση) select A, A,, A n from R, R,, R m where P Μετάφραση π Α, Α,... An π A, A,, An (σ P (R x R x x R m )) x x σ P x Βελτιστοποίηση Πλάνο εκτέλεσης (ποιες πράξεις και με ποιον αλγόριθμο) Εκτέλεση Επιλογή κατάλληλου αλγορίθμου για κάθε βασική πράξη της σχεσιακής άλγεβρας R R R 3 R m Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 0
Βελτιστοποίηση Ερωτήσεων Μερικοί κανόνες Γενική ιδέα: εκτέλεση πρώτα των πράξεων με μικρή επιλεκτικότητα ώστε να περιοριστεί το μέγεθος των ενδιάμεσων αποτελεσμάτων. Διάσπαση των πράξεων επιλογής με συζευκτικές συνθήκες σε ακολουθίες πράξεων επιλογής. Μετατοπίζουμε την πράξη επιλογής όσο πιο κάτω επιτρέπεται από τα γνωρίσματα που περιλαμβάνονται στη συνθήκη 3. Επαναδιευθέτηση των φύλλων ώστε να εκτελούνται πρώτα οι σχέσεις που έχουν τις πιο περιοριστικές πράξεις επιλογής Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά
Βελτιστοποίηση Ερωτήσεων 4. Συνδυασμός μιας πράξης καρτεσιανού γινομένου με μια πράξη επιλογής που ακολουθεί 5. Διάσπαση και μετακίνηση των λιστών προβολής όσο πιο κάτω γίνεται στο δέντρο 6. Εντοπισμός υποδέντρων με ομάδες πράξεων που μπορεί να εκτελεστούν με κοινό αλγόριθμο Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά
SELECT D.dnme, F.budget FROM Emp E, Dept D, Finnce F WHERE E.did=D.did AND D.did=F.did AND D.floor= AND E.sl 59000 AND E.hobby = tennis Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 3
Μετρήσεις Κόστους Ερωτημάτων Το κόστος γενικά μετράται σαν το συνολικό χρόνο που παρέρχεται για την απάντηση ερωτήματος Πολλοί παράγοντες συμβάλλουν στο κόστος του χρόνου Προσπελάσεις δίσκου, CPU, ή ακόμα και δικτυακή επικοινωνία Οι προσπελάσεις στο δίσκο κυριαρχούν του κόστους και είναι σχετικά εύκολο να εκτιμηθούν. Εκτίμηση με βάση Number of seeks * verge-seek-cost Number of blocks red * verge-block-red-cost Number of blocks written * verge-block-write-cost Το κόστος εγγραφής ενός block είναι μεγαλύτερο από το κόστος ανάγνωσης block Τα δεδομένα διαβάζονται μετά την εγγραφή για να βεβαιώσουμε την επιτυχή εγγραφή Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4
Μετρήσεις Κόστους Ερωτημάτων () Για λόγους απλότητας χρησιμοποιούμε τον αριθμό blocks που μεταφέρονται από το δίσκο ως μέτρο κόστους Αγνοούμε τη διαφορά κόστους ανάμεσα σε σειριακή και τυχαία I/O για απλότητα Αγνοούμε CPU κόστος Το κόστος εξαρτάται από το μέγεθος του buffer στη κύρια μνήμη Έχοντας περισσότερη μνήμη μειώνουμε την ανάγκη για προσπελάσεις δίσκου Το σύνολο της διαθέσιμης μνήμης στο buffer εξαρτάται και από τις άλλες ταυτόχρονες διεργασίες και είναι δύσκολο να καθορίσουμε πριν την πραγματική εκτέλεση Συνήθως χρησιμοποιούμε τις χειρότερες περιπτώσεις, υποθέτοντας ελάχιστη μνήμη που απαιτείται για διαθέσιμες λειτουργίες Δεν συμπεριλαμβάνεται το κόστος εγγραφής στο δίσκο στον υπολογισμό του κόστους. Βάσεις Δεδομένων, Παν. Πειραιά 5
Λειτουργία Επιλογής (Selection Opertion) File scn αλγόριθμοι αναζήτησης που βρίσκουν και ανακτούν εγγραφές που πληρούν συνθήκες επιλογής. σ Α = α (r) Αλγόριθμος A (liner serch). Σάρωση κάθε block αρχείου και εξετάζουμε όλες τις εγγραφές για να δούμε εάν ικανοποιούν τη συνθήκη επιλογής. Κόστος = b r b r : αριθμός blocks της σχέσης R Εάν η επιλογή είναι πάνω στο κλειδί, Κόστος = (b r /) τέλος στην εύρεση εγγραφής Γραμμική αναζήτηση μπορεί να εφαρμοστεί ανεξάρτητα από Συνθήκη επιλογής ή Ταξινόμηση εγγραφών στο αρχείο, ή Διαθεσιμότητα ευρετηρίων Βάσεις Δεδομένων, Παν. Πειραιά 6
Λειτουργία Επιλογής () A (δυαδική αναζήτηση). Εφαρμόσιμη εάν η επιλογή είναι μία σύγκριση πάνω σ έναν χαρακτηριστικό με βάση το οποίο ταξινομείται το αρχείο. (σ Α u (r)) Υποθέτουμε ότι τα blocks της σχέσης αποθηκεύονται σε συνεχή σειρά Κόστος εκτίμησης (# disk blocks που σαρώνονται): log (b r ) κόστος εύρεσης του πρώτου με δυαδική αναζήτηση στα blocks + αριθμός blocks που περιέχουν εγγραφές που ικανοποιούν συνθήκες επιλογής + log ( b r ) SC(A, r)/f r - Εύρεση της πρώτης Εύρεση των υπόλοιπων b r : αριθμός blocks της σχέσης R SC(A, r): μέσος αριθμός πλειάδων που ικανοποιεί μια συνθήκη f r : παράγοντας ομαδοποίησης b r = n r / f r Βάσεις Δεδομένων, Παν. Πειραιά 7
Δυαδική αναζήτηση BinrySerch(A[0..N-], vlue) { low = 0 high = N - while (low <= high) { mid = (low + high) / if (A[mid] > vlue) high = mid - else if (A[mid] < vlue) low = mid + else return mid } return not_found } Βάσεις Δεδομένων, Παν. Πειραιά 8
Επιλογές χρησιμοποιώντας ευρετήρια Index scn αλγόριθμοι αναζήτησης που χρησιμοποιούν ευρετήριο Η συνθήκη επιλογής είναι πάνω στο κλειδί αναζήτησης του ευρετηρίου A3 (primry index on cndidte key). Ισότητα στο κλειδί Ανάκτηση εγγραφής που ικανοποιεί την αντίστοιχη συνθήκη. Αν χρησιμοποιούμε B+-δέντρο: Cost = HT i + (ύψος δέντρου + Ι/Ο για ανάκτηση της εγγραφής) A4 (primry index on nonkey). Iσότητα σε χαρακτηριστικό που δεν είναι κλειδί Ανάκτηση περισσότερων εγγραφών. Οι εγγραφές θα πρέπει να αποθηκεύονται σε συνεχόμενα blocks Cost = HT i + number of blocks contining retrieved records A5 (equlity on serch-key of secondry index). Οι επιλογές που καθορίζουν μία συνθήκη ισότητας μπορούν να χρησιμοποιήσουν ένα δευτερεύον ευρετήριο Ανάκτηση μίας εγγραφής εάν το κλειδί-αναζήτησης είναι υποψήφιο κλειδί Cost = HT i + Ανάκτηση πολλαπλών εγγραφών εάν το κλειδί-αναζήτησης δεν είναι υποψήφιο κλειδί Cost = HT i + number of records retrieved Κάθε εγγραφή μπορεί να είναι σε διαφορετικό block. Προσπέλαση ενός block για κάθε εγγραφή που ανακτούμε Βάσεις Δεδομένων, Παν. Πειραιά 9
Αναζητήσεις που περιλαμβάνουν συγκρίσεις Μπορούμε να υλοποιήσουμε επιλογές της μορφής AV (r) or A V (r) χρησιμοποιώντας Σειριακή ή δυαδική αναζήτηση, ή ευρετήρια στις ακόλουθες περιπτώσεις: A6 (primry index, comprison). (Reltion is sorted on A) Για A V (r) χρησιμοποιούμε το ευρετήριο για να βρούμε το η εγγραφή με τιμή v και σαρώνουμε το αρχείο σειριακά από εκείνο το σημείο Για AV (r) σαρώνουμε το αρχείο σειριακά μέχρι τη η εγγραφή > v; Δεν χρησιμοποιούμε ευρετήριο A7 (secondry index, comprison). Για A V (r) χρήση ευρετηρίου μέχρι να βρούμε τη πρώτη είσοδο ευρετηρίου με τιμή v και σαρώνουμε το ευρετήριο σειριακά από εκεί μέχρι να βρούμε δείκτες στις εγγραφές. Για AV (r) σαρώνουμε τις σελίδες φύλλα του ευρετηρίου βρίσκοντας δείκτες στις εγγραφές, μέχρι να βρούμε τι πρώτη είσοδο με τιμή > v Σε κάθε περίπτωση, ανάκτηση εγγραφών στις οποίες δείχνουν κάποιοι δείκτες Απαιτούν μία I/O για κάθε εγγραφή Γραμμική σάρωση μπορεί να είναι πιο φθηνή εάν μεταφέρονται πολλές εγγραφές! Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 30
Σειριακό αρχείο για τις εγγραφές του πίνακα ccount select blnce from ccount where nme_brnch > Minus Χρήση ευρετηρίου select blnce from ccount where nme_brnch < Minus Αναζήτηση κατευθείαν στο αρχείο Βάσεις Δεδομένων, Παν. Πειραιά 3
Δευτερεύον Ευρετήριο στο πεδίο blnce του πίνακα ccount select blnce from ccount where blnce > 600 select blnce from ccount where blnce < 700 Βάσεις Δεδομένων, Παν. Πειραιά 3
Λειτουργίες Σύνδεσης (Join Opertion) Πολλοί διαφορετικοί αλγόριθμοι για την υλοποίηση joins Nested-loop join Block nested-loop join Indexed nested-loop join Merge-join Hsh-join Επιλογή με βάση την εκτίμηση κόστους Τα παραδείγματα χρησιμοποιούν την ακόλουθη πληροφορία Number of records of customer: 0,000 depositor: 5000 Number of blocks of customer: 400 depositor: 00 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 39
Nested-Loop Join () Υπολογισμός thet join r s for ech tuple t r in r do begin for ech tuple t s in s do begin test pir (t r,t s ) to see if they stisfy the join condition if they do, dd t r t s to the result. end end r ονομάζεται εξωτερική σχέση (outer reltion) και s εσωτερική σχέση (inner reltion) της σύνδεσης(join) Δεν απαιτεί ευρετήρια και μπορεί να χρησιμοποιηθεί με κάθε είδος συνθήκης join. Ακριβή καθώς εξετάζει κάθε ζεύγος εγγραφών και στις δύο σχέσεις. Αριθμός ζευγαριών των εγγραφών που θα εξεταστούν n r n s Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 40
Nested-Loop Join () Εάν υπάρχει αρκετή μνήμη για να διατηρούμε μόνο ένα block κάθε σχέσης, το κόστος είναι n r b s + b r προσπελάσεις δίσκου Εάν η μικρότερη σχέση (depositor) χωράει εξ ολοκλήρου στη μνήμη, χρησιμοποίησε αυτή σαν εσωτερική Number of records of customer: 0,000 depositor: 5000 Number of blocks of customer: 400 depositor: 00 Το κόστος μειώνεται σε b r + b s προσπελάσεις δίσκου. Κόστος υποθέτοντας τη χειρότερη περίπτωση διαθέσιμης μνήμης 5000 400 + 00 =,000,00 disk ccesses with depositor s outer reltion, nd 0000 00 + 400 =,000,400 disk ccesses with customer s the outer reltion. Εάν η μικρότερη σχέση (depositor) χωράει εξ ολοκλήρου στη μνήμη, το κόστος θα είναι 500 (=00+400) προσπελάσεις δίσκου. Block nested-loops αλγόριθμος είναι προτιμότερος. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4
Block Nested-Loop Join () Διαφοροποίηση του nested-loop join κάθε block της εσωτερικής σχέσης (inner reltion) συνδυάζεται με κάθε block της εξωτερικής σχέσης (outer reltion). for ech block B r of r do begin for ech block B s of s do begin for ech tuple t r in B r do begin for ech tuple t s in B s do begin Check if (t r,t s ) stisfy the join condition if they do, dd t r t s to the result. end end end end Χειρότερη περίπτωση: b r b s + b r προσπελάσεις block. Κάθε block στην εσωτερική σχέση s διαβάζεται μία φορά για κάθε block στην εξωτερική σχέση (αντί μία φορά για κάθε εγγραφή στην εξωτερική σχέση) Καλύτερη περίπτωση: b r + b s προσπελάσεις block (η εξωτερική σχέση χωράει στη μνήμη) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4
Block Nested-Loop Join () Βελτιώσεις στο nested loop και block nested loop αλγορίθμους: Χρησιμοποιούμε M disk blocks σαν blocking unit για εξωτερικές σχέσεις (Μ= memory size in blocks) Τα υπόλοιπα blocks για να κρατήσουμε στο buffer την εσωτερική σχέση και την έξοδο Cost = b r / (M-) b s + b r Εάν equi-join ttribute αποτελούν κλειδί στην εσωτερική σχέση, σταματάμε το εσωτερικό loop στο πρώτο ταίριασμα Χρήση ευρετηρίου στην εσωτερική σχέση Βάσεις Δεδομένων, Παν. Πειραιά 43
Indexed Nested-Loop Join Αναζητήσεις στο ευρετήριο μπορούν να αντικαταστήσουν σαρώσεις αρχείου εάν Έχουμε ένα equi-join ή nturl join και Υπάρχει διαθέσιμο ένα ευρετήριο στο χαρακτηριστικό της εσωτερικής σχέση που χρησιμοποιείται στο join Μπορούμε να κατασκευάσουμε ένα ευρετήριο απλώς για να υπολογίσουμε ένα join. Για κάθε εγγραφή t r στην εξωτερική σχέση r, χρησιμοποίησε το ευρετήριο για να αναζητήσεις τις εγγραφές του s που ικανοποιούν τη συνθήκη του join condition με την εγγραφή t r. Χειρότερη περίπτωση: ο buffer έχει χώρο για μία μόνο σελίδα του r, και για κάθε εγγραφή στο r, εκτελούμε μία αναζήτηση στο ευρετήριο πάνω στο s. Βάσεις Δεδομένων, Παν. Πειραιά 44
Κόστος Indexed Nested-Loop Join Cost of the join: b r + n r c c : κόστος διάσχισης του ευρετηρίου και μεταφοράς όλων των εγγραφών s που ταιριάζουν για μία εγγραφή για το r c μπορεί να υπολογιστεί ως κόστος μία επιλογής στο s χρησιμοποιώντας τη συνθήκη του join. Εάν ευρετήρια είναι διαθέσιμα για χαρακτηριστικά του join και για τις δύο σχέσεις r και s, επιλέγουμε τη σχέση με τις λιγότερες εγγραφές σαν εξωτερική σχέση. Βάσεις Δεδομένων, Παν. Πειραιά 45