ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης 2 η Σειρά Ασκήσεων Ηµεροµηνία Παράδοσης: 14/11/2016 Άσκηση 1 (10 µονάδες) Εξωτερική Ταξινόµηση Θεωρείστε µια βάση δεδοµένων που περιέχει µια σχέση R, η οποία έχει Τ πλειάδες και καταλαµβάνει B µπλοκ στο δίσκο. Υπάρχουν δύο B+-tree ευρετήρια ορισµένα στην R: ένα συσταδοποιηµένο (clustered) ευρετήριο στο γνώρισµα R.a και ένα µη-συσταδοποιηµένο (unclustered) ευρετήριο στο γνώρισµα R.b. Τα γνωρίσµατα R.a και R.b δε συσχετίζονται µεταξύ τους. Μας ενδιαφέρει η εκτέλεση του ακόλουθου SQL ερωτήµατος στην προηγούµενη βάσεων δεδοµένων: select * from R order by R.b α. (5 µονάδες) Υποθέστε ένα πλάνο εκτέλεσης του ερωτήµατος που περιλαµβάνει σειριακή σάρωση της R και στην συνέχεια ταξινόµηση της σχέσης στο γνώρισµα R.b χρησιµοποιώντας εξωτερική ταξινόµηση µε συγχώνευση (external merge sort). Υποθέσετε ο τελεστής ταξινόµησης µε συγχώνευση διαθέτει επαρκή µνήµη για να κρατά µόνο Μ µπλοκ δεδοµένων, όπου Μ < Β. Ποιό είναι το κόστος Ε/Ε αυτού του πλάνου, δηλαδή πόσες λειτουργίες ανάγνωσης εγγραφής µπλοκ στο δίσκο απαιτούνται για να εκτελεστεί; Λάβετε υπόψη και το κόστος της σειριακής σάρωσης και το κόστος της ταξινόµησης. β. (5 µονάδες) Υποθέστε ένα πλάνο εκτέλεσης του ερωτήµατος που διαβάζει τις πλειάδες της R ταξινοµηµένες χρησιµοποιώντας το µη συσταδοποιηµένο ευρετήριο πάνω στο R.b (index scan). Εκτιµήστε το κόστος Ε/Ε αυτού του πλάνου. Υποθέστε ότι το σύστηµα έχει λανθάνουσα µνήµη (buffer cache) Μ σελίδων (Μ<Β) η οποία αρχικά περιέχει Μ από τα Β µπλοκ της σχέσης R. Άσκηση 2 (20 µονάδες) Αλγόριθµοι Σύζευξης Μας ενδιαφέρει η σύζευξη δύο πινάκων R και S χρησιµοποιώντας την συνθήκη R.a = S.b. Το γνώρισµα R.a είναι πρωτεύον κλειδί (primary key) του R στο οποίο έχει οριστεί ένα συσταδοποιηµένο (clustered ) ευρετήριο. Το γνώρισµα S.b είναι υποψήφιο κλειδί (candidate key) του S στο οποίο δεν έχουν οριστεί ευρετήρια. Το µέγεθος σε µπλοκ του R και του S είναι ίσα: B(R) = B(S) ενώ το µέγεθος του ευρετηρίου R.a είναι πολύ µικρό σε σχέση µε το B(R). α. (4 µονάδες) Υποθέστε ότι η σύζευξη εκτελείται µε έναν αλγόριθµο φωλιασµένων βρόχων βασισµένο σε µπλοκ (block nested loop) µε τον S εσωτερικό πίνακα και ότι είναι διαθέσιµες Μ σελίδες ενδιάµεσης µνήµης (buffer pages) όπου M < B. Δώστε µια εκτίµηση του κόστους Ε/Ε του πλάνου σε συνάρτηση µε τα B και M όταν το αποτέλεσµα της σύζευξης δεν αποθηκεύεται στον δίσκο (materialized). β. (4 µονάδες) Υποθέστε ότι η σύζευξη εκτελείται µε έναν αλγόριθµο συγχώνευσης µε ταξινόµηση (sort merge) Οι πλειάδες του R διαβάζονται διατεταγµένες χρησιµοποιώντας το συσταδοποιηµένο ευρετήριο στο R.a. Ο S ταξινοµείται χρησιµοποιώντας εξωτερική ταξινόµηση, το αποτέλεσµα της οποίας προωθείται σε σωλήνωση (pipelined) στην σύζευξη. Μ σελίδες ενδιάµεσης µνήµης (buffer 1
pages) είναι διαθέσιµες, όπου J B < M < B. Πόση µνήµη απαιτεί ο αλγόριθµος συγχώνευσης µε ταξινόµηση και πόση η εξωτερική ταξινόµηση; Δικαιολογήστε σύντοµα την απάντησή σας. γ. (8 µονάδες) Εκτιµήστε το κόστος του πλάνου του ερωτήµατος (β) υποθέτοντας Μ σελίδες ενδιάµεσης µνήµης σύµφωνα µε την εκτίµηση που έχετε κάνει προηγουµένως. Υποθέστε ότι οι αναγνώσεις και οι εγγραφές των µπλοκ είναι το ίδιο και ότι το αποτέλεσµα της σύζευξης δεν αποθηκεύεται στον δίσκο (materialized). δ. (4 µονάδες) Υποθέτοντας ότι J B < M < B, κάτω από ποιες συνθήκες ο αλγόριθµος φωλιασµένων βρόχων βασισµένο σε µπλοκ (block nested loop) είναι προτιµότερος από αλγόριθµο συγχώνευσης µε ταξινόµηση (sort merge). Δικαιολογήστε σύντοµα την απάντησή σας εκφράζοντας τις συνθήκες µε όρους των B και M. Άσκηση 3 (35 µονάδες) Βελτιστοποίηση Ερωτηµάτων Σας δίνονται οι παρακάτω πίνακες µε πληροφορία σχετική µε φοιτητές και µαθήµατα που παρακολουθούν: Student(id,name,class) Course(number,name) Enrolment(id,courseNum,grade,semester) Ένας φοιτητής µπορεί να παρακολουθήσει πολλές φορές το ίδιο µάθηµα σε διαφορετικά εξάµηνα. Μας ενδιαφέρει η βελτιστοποίηση του ακόλουθου ερωτήµατος SQL: SELECT * FROM Student,Enrolment,Course WHERE class = 1 AND grade = 'B' AND Student.id = Enrolment.id AND Enrolment.courseNum = Course.number λαµβάνοντας υπόψη τις παρακάτω παραµέτρους: Το µέγεθος µιας σελίδας είναι 4kb. Οι πλειάδες του Student έχουν µέγεθος 400 bytes µε το id να καταλαµβάνει 4 bytes. Οι πλειάδες του Course έχουν µέγεθος 200 bytes. Οι πλειάδες του Enrolment έχουν µέγεθος 100 bytes µε το grade να καταλαµβάνει 1 byte. T(Student) = 10000, T(Course) = 500, T(Enrolment) = 25000 V(Student,class) = 4, V(Enrolment, grade) = 10 500 σελίδες ενδιάµεσης µνήµης (buffer pages). Δείκτες σε µπλοκ καταλαµβάνουν 5 bytes. Όλα τα B+Trees έχουν 80% κάλυψη (occupancy). Έχει οριστεί ένα πρωτεύον (primary) B+Tree ευρετήριο στο γνώρισµα class. Έχει οριστεί ένα δευτερεύον (secondary) B+Tree ευρετήριο στο γνώρισµα grade. α. (10 µονάδες) Υπολογίστε την πιο αποδοτική σειρά εκτέλεσης των συζεύξεων του παραπάνω ερωτήµατος χρησιµοποιώντας τον αλγόριθµο δυναµικού προγραµµατισµού για την εύρεση του βέλτιστου λογικού πλάνου. 2
β. (25 µονάδες) Υπολογίστε το βέλτιστο πλάνο εκτέλεσης του λογικού πλάνου που δώσατε στο προηγούµενο ερώτηµα θεωρώντας τους αλγορίθµους σύζευξης: φωλιασµένων βρόγχων (nested loop), σάρωση µε χρήση ευρετηρίων (index joins), ταξινόµησης και συγχώνευσης (sort-merge). Υπολογίστε τον αριθµό Ε/Ε κάθε πλάνου που εξετάζεται στην απάντησή σας. Άσκηση 4 (25 µονάδες) Εκτίµηση Στατιστικών Σας δίνονται οι παρακάτω πίνακες µε πληροφορία σχετική µε αθλητές στίβου και τις επιδόσεις τους σε αθλητικές διοργανώσεις : Athlete(aid, name, country) Event(eid, year, location) Result(aid, eid, time) Ένας αθλητής έχει έναν µοναδικό κωδικό (aid) καθώς και ένα όνοµα (name) και την χώρα (country) µε την οποία αγωνίζεται. Τα αθλητικά γεγονότα έχουν και αυτά έναν µοναδικό κωδικό (eid) καθώς και πληροφορία για τον χρόνο (year) και την τοποθεσία (location) όπου διοργανώθηκαν (για παράδειγµα 2012 Grete). Οι επιδόσεις των αθλητών σε αγωνίσµατα δρόµων καταγράφεται στο γνώρισµα χρόνος (time). Τα γνωρίσµατα aid και eid είναι εξωτερικά κλειδιά του πίνακα Result από τους πίνακες Athlete και Event. Θεωρήστε τα παρακάτω στατιστικά στους τρεις πίνακες της βάσης δεδοµένων: B(Athlete) = 100 B(Event) = 40 B(Result) = 250 T(Athlete) = 2,000 T(Event) = 400 T(Result) = 50,000 V(Athlete, country) = 100 V(Event, year) = 50 V(Event, location) = 25 Οι πίνακες Athlete και Event είναι συσταδοποιηµένοι στα πρωτεύοντα κλειδιά τους aid και eid αντιστοίχως. Ο πίνακας Result δεν είναι συσταδοποιηµένος. Ο πίνακας Athlete έχει τρία B+tree ευρετήρια στα γνωρίσµατα aid, name, και country. Ο πίνακας Event έχει επίσης τρία B+tree ευρετήρια στα γνωρίσµατα eid, year, και location. Ο πίνακας Result έχει δύο B+ tree στα γνωρίσµατα eid και aid αλλά όχι στο γνώρισµα time. Υποθέστε ότι είναι διαθέσιµη επαρκής ενδιάµεση µνήµη (M) για να κρατήσει τους πίνακες (ολικώς ή µερικώς) ώστε να χρησιµοποιηθούν αλγόριθµοι που απαιτούν ένα µόνο πέρασµα (one-pass) για την εκτέλεση όλων των ερωτηµάτων SQL. Σας δίνεται το ακόλουθο λογικό πλάνο ενός ερωτήµατος που εµπλέκει και τις τρεις σχέσεις : 3
α. (5 µονάδες) Διατυπώστε ένα ερώτηµα SQL το οποίο θα µπορούσε να µεταφραστεί στο λογικό πλάνο που σας δίνεται. β. (5 µονάδες) Ποιο είναι το εκτιµώµενο κόστος του αρχικού λογικού πλάνου λαµβάνοντας υπόψη τα στατιστικά για τις σχέσεις τα οποία σας έχουν δοθεί. Κάντε τις δικές σας υποθέσεις για τους βέλτιστους φυσικούς αλγόριθµους εκτέλεσης των διάφορων σχεσιακών τελεστών του πλάνου και δώστε αριθµητικές εκτιµήσεις κόστους των ενδιάµεσων αποτελεσµάτων που το πλάνο παράγει. γ. (5 µονάδες) Προτείνεται ένα πιο αποδοτικό λογικό πλάνο από αυτό που σας δόθηκε αρχικά στην εκφώνηση που υπολογίζει τα ίδια αποτελέσµατα. Σχεδιάστε το πλάνο και εξηγήστε γιατί αναµένεται να βελτιώσει το κόστος εκτέλεσης του αρχικού. δ. (5 µονάδες) Δώστε µια εκτίµηση του κόστους του καινούργιου πλάνου. ε. (5 µονάδες) Ποιο είναι το βέλτιστο φυσικό πλάνο εκτέλεσης του παρακάτω λογικού πλάνου µε την σειρά των συζεύξεων που προβλέπει; Η απάντησή σας θα πρέπει να περιλαµβάνει τους φυσικούς αλγορίθµους εκτέλεσης των αλγορίθµων σύζευξης (nested loop, sortmerge, hash, κλπ.) καθώς και τις µεθόδους πρόσβασης (access methods) στις πλειάδες των πινάκων που απαιτούν (sequential scan, index, κλπ..) Δώστε όλες απαραίτητες πληροφορίες για την εκτέλεση των συζεύξεων του πλάνου: για συζεύξεις µε κατακερµατισµό ποιός είναι ο πίνακας που χρησιµοποιείται για δηµιουργήσει τον πίνακα κατακερµατισµού και αυτός για την ιχνηλάτησή του (build-probe relations), για συζεύξεις µε φωλιασµένους βρόγχους ποιός είναι ο εσωτερικός και ο εξωτερικός πίνακας (inner or outer relations), καθώς επίσης εάν τα ενδιάµεσα αποτελέσµατα των συζεύξεων αποθηκεύονται στον δίσκο (materialized) ή προωθούνται σε σωλήνωση (pipelined). Για λόγους απλότητας υποθέστε ότι υπάρχει επαρκής ενδιάµεση µνήµη για τους αλγόριθµους σύζευξης που επιλέγεται. Δώστε µια εκτίµηση του κόστους του φυσικού πλάνου που προτείνετε σε Ε/Ε και δικαιολογήστε σύντοµα γιατί είναι το βέλτιστο δυνατό. 4
Άσκηση 5 (12 µονάδες) Επαναδιατύπωση Ερωτηµάτων α. (4 µονάδες) Δώστε ένα φωλιασµένο ερώτηµα στον πίνακα Account(#account, branch, balance) το οποίο επιστρέφει για κάθε υποκατάστηµα (branch) του οποίου το όνοµα αρχίζει από «Α» όλους τους καταθετικούς λογαριασµούς µε το µέγιστο ποσό (balance) στο υποκατάστηµα. β. (4 µονάδες) Επαναδιατυπώστε το προηγούµενο ερώτηµα χωρίς την χρήση φωλιασµένων ερωτηµάτων (αποσυσχέτιση). γ. (4 µονάδες) Με βάση το προηγούµενο παράδειγµα προτείνεται µια γενική διαδικασία για την αποσυσχέτιση ερωτηµάτων. 5