ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 1 από 8 Ονοματεπώνυμο: Αριθμός Μητρώου: Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ-460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Δημήτρης Πλεξουσάκης Βασίλης Χριστοφίδης Τελική Εξέταση (3 ώρες) Ημερομηνία: 1 Φεβρουαρίου 2012 Άσκηση 1 (14 μονάδες) (Αποθήκευση Δεδομένων) Θεωρείστε ένα δίσκο με μέγεθος τομέα (sector) 1KB, μέγεθος μπλοκ (block) 4ΚΒ, 100 τομείς ανά τροχιά (sectors per track), 10,000 τροχιές ανά επιφάνεια (tracks per surface), και 5 διπλής όψεως πλατό (platters). Υποθέστε ότι ο μέσος χρόνος αναζήτησης (seek time) είναι 10 msec, η μέση καθυστέρηση περιστροφής (rotational delay) είναι 5 msec, και ο χρόνος μεταφοράς (transfer time) είναι 4MB ανά δευτερόλεπτο. Υποθέστε ότι ενδιαφερόμαστε να αποθηκεύσουμε σε ένα τέτοιο δίσκο ένα αρχείο 1000000 εγγραφών (records) των 200 bytes η κάθε μια και ότι καμία εγγραφή δε επιτρέπεται να εκτίνεται σε 2 μπλοκ (unspanned). Ζητούνται τα εξής: α) (2 μονάδες) Πόσα μπλοκ απαιτούνται για να αποθηκευτεί ολόκληρο το αρχείο; Για 20 εγγραφές ανά μπλοκ απαιτούνται 1,000,000 / 20 = 50,000 blocks. β) (4 μονάδες) Ποιος είναι ο χρόνος μεταφοράς (transfer time) ανά μπλοκ; Στρογγυλοποιείστε αυτό τον χρόνο στο πλησιέστερο ακέραιο αριθμό msecs. Ποιος είναι ο χρόνος μεταφοράς ανά κύλινδρο; Ο χρόνος μεταφοράς ανά μπλοκ είναι 4KB / (4MB / sec) = 1/1024 sec ~ 1 msec Ο χρόνος μεταφοράς ανά κύλινδρο είναι 250 msec γ) (5 μονάδες) Υποθέστε ότι τα δεδομένα είναι οργανωμένα κατά βέλτιστο τρόπο, δηλαδή πρώτα γεμίζουμε τον κύλινδρο (cylinder) 1, μετά τον κύλινδρο 2, κοκ. Υποθέστε επίσης ότι για κάθε αναζήτηση (seek) απαιτείται ο μέσος χρόνος αναζήτησης ανεξάρτητα από τον πραγματικό αριθμό των τροχιών (tracks) ανάμεσα στην τρέχουσα (current track) και την τροχιά προορισμού (destination track) και ότι η κεφαλή (head) βρίσκεται αρχικά σε τυχαία τροχιά και σε τυχαίο τομέα. Ποιος είναι ο χρόνος που απαιτείται για την σειριακή (sequentially) ανάγνωση ολόκληρου του αρχείου;
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 2 από 8 Ο κύλινδρος έχει 25 * 10 μπλοκ, άρα απαιτούνται 50,000 / 250 = 200 κύλινδροι για να αποθηκευτεί ολόκληρο το αρχείο. Οπότε ο χρόνος που απαιτείται για την ανάγνωση ολόκληρου του αρχείου είναι: average rotational delay + 200 (average seek time + transfer time per cylinder) = 5 msec + 200 (10 msec + 250 msec) = 52,005 msec ~ 52 sec Note: the solution omitting the term for the rotational delay is also acceptable. δ) (3 μονάδες) Ποιος είναι ο χρόνος που απαιτείται για την ανάγνωση του αρχείου με τυχαία σειρά (random order); Υποθέστε ότι κάθε αίτημα για ένα μπλοκ «κοστίζει» το μέσο χρόνο αναζήτησης (seek time) και τη μέση καθυστέρηση περιστροφής (rotational delay). Ο χρόνος που απαιτείται για την ανάγνωση ολόκληρου του αρχείου είναι: 50,000 (average seek time + average rotational delay + transfer time per block) = 50,000 (10 msec + 5 msec + 1 msec) = 800,000 msec = 800 sec Άσκηση 2 (15 μονάδες) (B+ Δεντρικά Ευρετήρια) Θεωρήστε ένα Β+ δεντρικό ευρετήριο. Οι κόμβοι-φύλλα περιέχουν δείκτες σε συνολικά Ν εγγραφές και κάθε μπλοκ του ευρετηρίου περιέχει m δείκτες. Θέλουμε να επιλέξουμε την τιμή του m που ελαχιστοποιεί τους χρόνους αναζήτησης, εάν αποθηκεύσουμε το ευρετήριο σε συσκευή δίσκου με τα εξής χαρακτηριστικά: Ο χρόνος ανάγνωσης ενός μπλοκ (από το δίσκο στην κύρια μνήμη) προσεγγίζεται από τη σχέση (70+0.05*m) msecs. Τα 70 msecs αναπαριστούν το χρόνο αναζήτησης (seek time) και την καθυστέρηση περιστροφής (rotational delay) ενώ τα 0.05*m msecs είναι ο χρόνος μεταφοράς (transfer time). Όσο το m αυξάνεται, τόσο μεγαλύτερο γίνεται το μπλοκ και συνεπώς τόσο περισσότερος χρόνος απαιτείται για τη μεταφορά του στην κύρια μνήμη. Όταν το μπλοκ μεταφερθεί στην κύρια μνήμη, χρησιμοποιείται δυαδική αναζήτηση για να βρεθεί ο σωστός δείκτης. Άρα ο χρόνος επεξεργασίας του μπλοκ στην κύρια μνήμη είναι (a + b log2 m) msecs, όπου a, b είναι σταθερές. Η σταθερά a είναι πολύ μικρότερη από το χρόνο αναζήτησης και καθυστέρησης των 70 milliseconds. Το ευρετήριο είναι πλήρες, άρα ο αριθμός των μπλοκ που πρέπει να εξεταστούν σε κάθε αναζήτηση είναι logm N. Απαντήστε τα ακόλουθα: (α) (10 μονάδες) Ποια τιμή του m ελαχιστοποιεί το χρόνο αναζήτησης μιας δεδομένης εγγραφής; Δώστε μια απάντηση κατά προσέγγιση. Η τιμή που θα δώσετε θα πρέπει να είναι ανεξάρτητη του b. Υπόδειξη: Αν καταλήξετε μια εξίσωση που λύνεται δύσκολα αλγεβρικά, βρείτε τη ρίζα της δοκιμάζοντας τιμές (δηλ την τιμή που μηδενίζει την εξίσωση). Θυμηθείτε ότι loga (X * Y) = loga (X) + loga (Y) και loga (X/Y) = loga (X) - loga (Y). Επίσης εάν a > 0, b > 0, a!= 1, b!= 1, και Χ > 0 loga (X) = logβ (X) / logβ (α).
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 3 από 8 f(m)=logm(n)*(70+0.05*m+a+b*log2(m)).αφού a<<70, μπορούμε να το αγνοήσουμε και άρα f(m) logm(n)*(70+0.05*m+b*log2(m)). Παραγωγίζοντας την f(m) έχουμε f'(m)=[ln(n)/ln(m)]*[0.05-(70+0.05m)/(m*ln(m))] Θέτουμε f'(m)=0 για να βρούμε το ελάχιστο και έχουμε: 70=0.05*m*(ln(m)-1) m 298 (β) (5 μονάδες) Τι συμβαίνει όταν η σταθερά χρόνου αναζήτησης και καθυστέρησης (70ms) ελαττώνεται; Για παράδειγμα, αν η σταθερά αυτή υποδιπλασιαστεί, πώς αλλάζει η βέλτιστη τιμή του m; Όσο η σταθερά χρόνου αναζήτησης και καθυστέρησης ελαττώνεται, το ίδιο συμβαίνει και με το m. Για παράδειγμα, αν η σταθερά υποδιπλασιαστεί τότε το βέλτιστο m ισούται προσεγγιστικά με 169. Άσκηση 3 (10 μονάδες) (Σχεδίαση Φυσικού Σχήματος) Θεωρείστε την σχέση R(a,b,c,d), η οποία είναι συσταδοποιημένη (clustering) στο γνώρισμα a που αποτελεί και το κλειδί της σχέσης στο οποίο έχει επίσης οριστεί ένα B+δενδρικό ευρετήριο. Για κάθε ένα από τα ακόλουθα ανεξάρτητα φορτία εργασίας θα πρέπει να μελετήστε εάν είναι δυνατόν η προσθήκη ενός ακόμα B+δενδρικού ευρετηρίου θα επιταχύνει την εκτέλεση των ερωτημάτων (queries). Εάν υπάρχουν παραπάνω από ένα δυνατά ευρετήρια διαλέξτε ένα και καθορήστε ποιο ή ποια γνωρίσματα καλύπτει. Εάν εκτιμάτε ότι ο χρόνος εκτέλεσης των ερωτημάτων του κάθε φορτίου δεν θα βελτιωθεί από την ύπαρξη ενός επιπλέον ευρετηρίου εξηγήστε γιατί. (α) (5 μονάδες) Όλα τα ερωτήματα έχουν την μορφή: select * from R where b >? and b <? and d =? όπου? συμβολίζει κάποια τιμή An index on (d,b) would be best since it allows us to select exactly the tuples that satisfy these queries. (Indices on d only would require reading through unneeded values of b. Indices on b alone or (b,d) also are less selective since although they allow us to access the specified values of b, some of the d values in the selected b range might match, while others might not.) (β) (5 μονάδες) 100,000 ερωτήματα έχουν την μορφή: select * from R where b =? and c =? και 100,000 ερωτήματα έχουν την μορφή: select * from R where b =? and d =? An index on either (b,c) or (b,d) would be most selective for half of the queries and would be helpful for the others. An index on b alone would not be quite as good. It would help all queries equally well, but miss the opportunity to speed up half of them further.
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 4 από 8 Άσκηση 4 (20 μονάδες) (Βελτιστοποίηση Επερωτήσεων) Θεωρείστε δυο σχέσεις R(A,B,C,V) και S(D,E,F) όπου το A είναι το κλειδί της R και το D το κλειδί της S. Σας δίνεται το ακόλουθο ερώτημα SQL: Select S.F, sum(r.v) From R, S Where R.B = 1234 and R.C= S.D and S.E= 5678 Group by S.F Έχουμε συσταδοποιημένα (clustered) ευρετήρια στα πεδία R.A και S.D (που είναι και τα κλειδιά των σχέσεων), και μη συσταδοποιημένα (unclustered) ευρετήρια στα R.B και S.E. Υποθέστε ότι και οι δυο σχέσεις R και S είναι πολύ μεγάλες και δεν χωράνε στην κύρια μνήμη. Θεωρείστε τα ακόλουθα τρία λογικά πλάνα (logical plans) όπου ο τελεστής συμβολίζει την ομαδοποίηση (grouping): P1 = F,sum(V) ( B=1234 (R)) Join C=D ( E=5678(S)) P2 = F,sum(V) ( E=5678 ( B=1234(R) Join C=D S)) P3 = F,sum(V) ( Β=1234 ( Ε=5678 (R Join C=D S))) Σε αυτή την άσκηση θεωρούμε ότι στα πλάνα μας η R εμφανίζεται μόνο σαν αριστερή και η S μόνο σαν δεξιά σχέση μιας σύζευξης (join). α) (3 μονάδες) Καθορίστε σε ποια λογικά πλάνα μπορούμε να χρησιμοποιήσουμε μια σύζευξη βασισμένη σε ευρετήρια (index-based join). Θυμηθείτε ότι σε μια τέτοια σύζευξη χρησιμοποιείται το ευρετήριο της δεξιάς σχέσης. Τα P2, P3. Δεν γίνεται να χρησιμοποιηθεί μια σύζευξη βασισμένη σε ευρετήρια για το P1 καθώς το ευρετήριο χάνεται μετά την επιλογή (selection). β) (3 μονάδες) Υποθέστε ότι όλες οι επιλογές (selections) υλοποιούνται σαν αναζητήσεις ευρετηρίων (index lookups). Καθορίστε για ποια λογικά πλάνα μπορούμε να χρησιμοποιήσουμε μια σύζευξη με συγχώνευση (merge join) που αποφεύγει την δημιουργία των αρχικά ταξινομημένων συρμών (runs) για το σωστό πεδίο. Θυμηθείτε ότι μια σύζευξη με συγχώνευση γίνεται σε δυο βήματα: τον αρχικό σχηματισμό των συρμών για την αριστερή και την δεξιά σχέση, και στην συνέχεια τη φάση συγχώνευσης. Σε αυτό το υποερώτημα ενδιαφερόμαστε μόνο για τα φυσικά πλάνα (physical plans) που αποφεύγουν τον αρχικό σχηματισμό συρμών για την δεξιά σχέση. Δεν πρέπει να κάνετε καμία επιπλέον υπόθεση για την ύπαρξη ευρετήριων πέρα από αυτά που σας δίνονται στην εκφώνηση. Το P3 γιατί η σύζευξη R Join C=D S θα πραγματοποιηθεί στο γνώρισμα S.D στο οποίο η δεξιά σχέση είναι συσταδοποιημένη και άρα ήδη ταξινομημένη. γ) (3 μονάδες) Εάν αποφασίσουμε να υλοποιήσουμε την σύζευξη με έναν αλγόριθμο κατακερματισμού (hash join), καθορίστε σε ποιο από τα τρία λογικά πλάνα η σύζευξη θα εκτελεστεί βέλτιστα απαιτώντας το πολύ τον ίδιο αριθμό E/E για οποιοδήποτε από τα υπόλοιπα δυο πλάνα στα οποία η σύζευξη υλοποιείται με τον αλγόριθμο της συγχώνευσης. To P1, γιατί κάνει σύζευξη σε μικρότερους πίνακες.
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 5 από 8 δ) (3 μονάδες) Θεωρείστε το λογικό πλάνο P2. Σε ποιες από τα παρακάτω περιπτώσεις μια σύζευξη βασισμένη σε ευρετήρια (index join) εγγυάται ότι θα αποδώσει καλύτερα (λιγότερες E/E) από ότι μια σύζευξη κατακερματισμού (hash-join), εάν αυτή πραγματοποιείται στη κύρια μνήμη; Όλες οι πλειάδες στο R ικανοποιούν το R.B= 1234. Όχι, γιατί σε αυτή την περίπτωση μια σύζευξη βασισμένη σε ευρετήρια έχει πολύ κακή απόδοση. Υπάρχει μόνο μια πλειάδα στο R που ικανοποιεί το R.B= 1234 Ναι, γιατί σε αυτή την περίπτωση μια σύζευξη βασισμένη σε ευρετήρια θα χρειαστεί μόνο μια αναζήτηση ευρετηρίου (single index lookup). ε) (8 μονάδες) Υποθέστε ότι και οι δύο σχέσεις αποθηκεύονται σε 10000 σελίδες (pages), οι σελίδες ενδιάμεσης μνήμης (buffers) είναι 102, όλες οι πλειάδες της R ικανοποιούν την συνθήκη R.B= 1234 και όλες οι πλειάδες της S ικανοποιούν την συνθήκη S.E= 5678 (ακόμα V(R,B)=V(S,E)=1 και V(R,C)=V(S,F)=100). Σημειώστε ότι κανένα από τα λογικά πλάνα δεν μπορεί να υλοποιηθεί στην κύρια μνήμη. Βρείτε ένα νέο λογικό πλάνο που μπορεί να εκτελεστεί αποκλειστικά στην κύρια μνήμη εκτός από τις αναγνώσεις των σχέσεων R και S. Δώστε μόνο το λογικό πλάνο, υποθέτοντας ότι καμιά εγγραφή δεν είναι μεγαλύτερη από μια σελίδα. [F, sum(v)] ( [C, sum(v)] ( (R)) Join (S)) Η εσωτερική ομαδοποίηση έχει μόνο 100 κάδους (buckets), οπότε μπορεί να γίνει στην κύρια μνήμη. Η σύζευξη έχει μια αριστερή σχέση που χωράει στην κύρια μνήμη και μπορεί να γίνει σαν μια σύζευξη φωλιασμένων βρόγχων (nested loop join), και μετά τα αποτελέσματα στέλνονται σε ροή στην εξωτερική ομαδοποίηση. Αυτή επίσης μπορεί να υλοποιηθεί σαν μια σύζευξη με φωλιασμένους βρόγχους επαναχρησιμοποιώντας τους κάδους της πρώτης ομαδοποίησης. Άσκηση 5 (16 μονάδες) Στατιστικά και Εκτίμηση Πληθικότητας Επερωτήσεων Θεωρήστε την παρακάτω σχέση R: Make Model Doors Honda Civic 2 Honda Accord 2 Honda SUV 2 Ford Taurus 4 Ford Mustang 4 Ford SUV 4 GM Chevy 2 GM Buivk 2 GM SUV 2
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 6 από 8 (α) (3 μονάδες) Τι τιμή έχουν οι παρακάτω μεταβλητές? T(R) V(R, Make) V(R, Doors) T(R) = 9 V(R, Make) = 3 V(R, Doors) = 2 (β) (5 μονάδες) Υποθέστε ότι οι τιμές για τις επερωτήσεις επιλέγονται από τις τιμές που υπάρχουν στην βάση μας. Τι θα υπολογίσει ο βελτιστοποιητής των επερωτήσεων (optimizer) για: Τον αριθμό των πλειάδων στο σ Make=Honda(R) Τον αριθμό των πλειάδων στο σ Model=SUV(R) Τον αριθμό των πλειάδων στο σ Make=Honda^Model=SUV(R) Τον αριθμό των πλειάδων στο σ Make=Honda^Doors=2(R) Τον αριθμό των πλειάδων στο Make, Doors(R) T(R) / V (R, Make) = 3 T(R) / V (R, Model) = 9/7 T(R) / V (R, Make) * V (R, Model) = 9/ 3 * 7 = 3/7 T(R) / V (R, Make) * V (R, Doors) = 9/ 3 * 2 = 3/2 T(R) = 9 (Δεν αφαιρούμε τις διπλοεγγραφές) (γ) (3 μονάδες) Εξηγείστε σύντομα γιατί η εκτίμηση για την επερώτηση Make=Honda ^ Model=SUV μπορεί να έχει μεγαλύτερη ακρίβεια από την επερώτηση Make=Honda ^ Doors=2. Όταν κάνουμε υπολογισμούς για τα αποτελέσματα κάποιας επιλογής, υποθέτουμε ότι τα γνωρίσματά μας είναι ανεξάρτητα το ένα από το άλλο. Στην περίπτωση όμως του Make και του Doors, υπάρχει συσχέτιση ανάμεσα στις τιμές τους. Για την ακρίβεια, όλα τα Honda έχουν 2 πόρτες στην σχέση R. (δ) (5 μονάδες) Για να χειριστούμε το πρόβλημα που προέκυψε στο υποερώτημα γ, κάποιος θα μπορούσε να προτείνει να κρατάμε στατιστικά για το V(R, Make-Doors), όπου το Make-Doors χρησιμοποιείται σαν ένα ενιαίο πεδίο που σχηματίζεται από την συνένωση των τιμών του Make και του Doors. Εξηγήστε σύντομα το πόσο καλή είναι η παραπάνω ιδέα και αν θα μπορούσε η όχι να υλοποιηθεί σε ένα DBMS.
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 7 από 8 Για να απαντήσουμε στην ερώτηση θα πρέπει να λάβουμε υπόψη μας τα παρακάτω. Τα στατιστικά θα βοηθούσαν τους υπολογισμούς μας, μια και T(R)/V(R, Make-Doors) = 3 που είναι ακριβώς η τιμή που θα θέλαμε για την Make=Honda ^ Doors=2 επερώτηση. Από την άλλη απαιτείται ένα επιπλέον κόστος για να κρατάμε στατιστικά και να τα ενημερώνουμε. Το να συλλέξουμε τα στατιστικά σε όλα τα ζεύγη γνωρισμάτων θα ήταν εξαιρετικά ακριβό, έτσι αν υλοποιούσαμε την ιδέα θα έπρεπε να το κάνουμε μόνο σε ζεύγη που γνωρίζουμε οτι συσχετίζονται. Επιπλέον, αν και οι τιμές της R φαίνεται να συσχετίζονται, δεν σημαίνει στην γενική περίπτωση ότι τα δυο αυτά πεδία συσχετίζονται. Άσκηση 6 (15 μονάδες) Έλεγχος σύγχρονης πρόσβασης
ΗΥ460 Τελική Εξέταση 1 Φεβρουαρίου 2012 Σελίδα 8 από 8 Λύση Άσκηση 7 (15 μονάδες) Ανάνηψη από σφάλματα