ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 1 από 8 Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ-460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Δημήτρης Πλεξουσάκης Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ημερομηνία: Τρίτη, 29 Ιανουαρίου 2013 Ονοματεπώνυμο: Αριθμός Μητρώου: Άσκηση 1 (15 μονάδες) (Επεκτατός Κατακερματισμός) Υποθέστε ότι μια βάση δεδομένων χρησιμοποιεί ένα ευρετήριο κατακερματισμού (hash index) στη σχέση R. Το ευρετήριο έχει υλοποιηθεί χρησιμοποιώντας επεκτατό κατακερματισμό (extensible hashing). Υποθέστε ότι η εισαγωγή μιας εγγραφής (record) στη σχέση R από έναν πελάτη επιφέρει διπλασιασμό του μεγέθους του καταλόγου του ευρετηρίου από n σε 2n καταχωρήσεις (directory entries). Για τους σκοπούς της άσκησης, θεωρήστε ότι δεν έχουν γίνει διαγραφές από το ευρετήριο, παρά μόνο εισαγωγές. α) (6 μονάδες) Πόσους κάδους κατακερματισμού (hash buckets) έχει το ευρετήριο, αμέσως πριν την εισαγωγή που επιφέρει τον διπλασιασμό του μεγέθους του καταλόγου; (Οι εγγραφές του καταλόγου ευρετηρίου δείχνουν στους κάδους κατακερματισμού). Δώστε τον μέγιστο και τον ελάχιστο αριθμό κάδων κατακερματισμού που μπορεί να έχει το ευρετήριο χρησιμοποιώντας εκφράσεις που βασίζονται στο n. Ένας νέος κάδος κατακερματισμού θα δημιουργηθεί το ελάχιστο, κάθε φορά που διπλασιάζεται ο κατάλογος. Όταν n=2, θα υπάρχουν 2 κάδοι κατακερματισμού. Όταν n=4, θα υπάρχουν το λιγότερο 3 κάδοι. Όταν n=8 θα υπάρχουν το λιγότερο 4 κάδοι, και ούτω καθ εξής. Γενικά, ο ελάχιστος αριθμός κάδων κατακερματισμού για έναν κατάλογο μεγέθους n, θα είναι log 2 n+1. Ο μέγιστος αριθμός είναι n. Σε αυτή την περίπτωση, κάθε καταχώρηση του καταλόγου δείχνει σε ξεχωριστό κάδο. β) (3 μονάδες) Έστω k ο ακριβής αριθμός κάδων κατακερματισμού στο ευρετήριο, αμέσως πριν την εισαγωγή που διπλασιάζει το μέγεθός του. Πόσους κάδους κατακερματισμού θα έχει το ευρετήριο αμέσως μετά την εισαγωγή; Εκφράστε την απάντηση σας με βάση το k. Ο διπλασιασμός του μεγέθους του καταλόγου επέρχεται όταν ένας κάδος κατακερματισμού γεμίσει και είναι απαραίτητο να διασπαστεί, έχοντας ως αποτέλεσμα τη δημιουργία ενός νέου κάδου. Αμέσως μετά την εισαγωγή ο αριθμός των κάδων θα είναι k+1. γ) (3 μονάδες) Πόσοι κάδοι κατακερματισμού θα έχουν ακριβώς μία καταχώρηση που να δείχνει σε αυτούς, αμέσως μετά την εισαγωγή που διπλασιάζει το μέγεθος του καταλόγου; Δύο κάδοι (ο κάδος που διασπάται και νέος κάδος που δημιουργείται) θα έχουν ακριβώς μια εγγραφή καταλόγου που να δείχνουν σε αυτούς. Όλοι οι άλλοι κάδοι θα έχουν τουλάχιστον δύο. δ) (3 μονάδες) Ποιος είναι ο μέγιστος αριθμός καταχωρίσεων καταλόγου που θα μπορούσαν να δείχνουν σε ένα και μόνο κάδο κατακερματισμού του ευρετηρίου;
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 2 από 8 Αν ένα κάδος κατακερματισμού δε διασπάται, θα διπλασιάζεται ο αριθμός των δεικτών (pointers) κάθε φορά που διπλασιάζεται ο κατάλογος. Έτσι στην πιο ακραία περίπτωση, οι μισές από τις καταχωρήσεις καταλόγου (n από τις 2n) θα μπορούσαν να δείχνουν σε ένα και μόνο κάδο. Άσκηση 2 (15 μονάδες) (B+δενδρικά ευρετήρια) α) (5 μονάδες) Θεωρείστε S(b,c) με τα ακόλουθα στατιστικά: T(S) = 4,000, B(S) = 1,000 (κάθε μπλοκ περιέχει 4 πλειάδες), V(S,b) = 200 (αριθμός διακριτών τιμών του γνωρίσματος b στη σχέση S) Υποθέστε ότι έχουμε διαθέσιμο ένα B+ δενδρικό ευρετήριο για το γνώρισμα b της S. To δέντρο έχει 4 επίπεδα και κάθε κόμβος περιέχει 4 κλειδιά. Κάθε κλειδί αντιστοιχεί σε μια διακριτή τιμή του b στην S. Θεωρείστε ότι κάθε κόμβος ευρετηρίου καταλαμβάνει ένα μπλοκ. Για λόγους απλότητας, θεωρούμε ότι οι πλειάδες με την ίδια τιμή b αποθηκεύονται διαδοχικά στο δίσκο, αλλά μπορούν να εξαπλώνονται σε διαφορετικά μπλοκ. Υπολογίστε τον αριθμό Ε/Ε δίσκου (Ι/Ο) που απαιτούνται στην χειρότερη περίπτωση για να εκτελεστεί η ακόλουθη επερώτηση: SELECT * FROM S WHERE b = 100 Η σωστή απάντηση είναι 10. Η επερώτηση θα χρησιμοποιήσει 4 Ε/Ε για τα 4 επίπεδα του ευρετηρίου και 6 Ε/Ε για τα μπλοκ που καταλαμβάνονται από T(S)/V(S,b) = 20 πλειάδες και αντιστοιχούν σε μια τιμή του γνωρίσματος b. (20 πλειάδες μπορούν να καταλαμβάνουν 5 μπλοκ, ή στη χειρότερη περίπτωση 6 μπλοκ). β) (3 μονάδες) Θεωρείστε ένα Β+ δέντρο με n=9 (τάξη του δέντρου) και h=4 (ύψους του δέντρου). Ποιος είναι ο μέγιστος αριθμός εγγραφών που μπορούν να ευρετηριαστούν σε αυτό το δέντρο; Η σωστή απάντηση είναι: 9 4-9 3. γ) (3 μονάδες) Θεωρείστε ένα Β+ δέντρο με n=9 (τάξη του δέντρου) και h=4 (ύψους του δέντρου). Ποιος είναι ο ελάχιστος αριθμός των φύλλων σε αυτό το δέντρο; Η σωστή απάντηση είναι 2 * 5 2. δ) (4 μονάδες) Ποιο από τα παρακάτω δεν μπορεί να συμβεί, ως αποτέλεσμα της εισαγωγής μιας εγγραφής σε ένα B+ δέντρο; (i) (ii) (iii) (iv) (v) Το ύψος του δέντρου δεν αλλάζει. Το ύψος του δέντρου αυξάνεται κατά ένα. Το δέντρο παραμένει ισορροπημένο (balanced). Το ίδιο κλειδί εισάγεται και στη ρίζα (root node) και σε κόμβο φύλλο (lead node) Το ίδιο κλειδί εισάγεται και στη ρίζα (root node) και σε εσωτερικό κόμβο (interior node)
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 3 από 8 Η σωστή απάντηση είναι η v Άσκηση 3 (12 μονάδες) (Σχεδίαση Φυσικού Σχήματος) Υποθέστε ότι μια σχεσιακή περιέχει την ακόλουθη μεγάλη σχέση: Track(ReleaseID, TrackNum, Title, Length, Location) Η βάση δεδομένων χρησιμοποιεί ένα συσταδοποιημένο Β+ δενδρικό ευρετήριο στο σύνθετο κλειδί ReleaseID,TrackNum. Επίσης διαθέτει ένα μη-συσταδοποιημένο Β+ δενδρικό ευρετήριο στο TrackNum. α) (6 μονάδες) Δώστε ένα παράδειγμα από ενός απλού SQL ερωτήματος σε έναν πίνακα (χωρίς ενημερώσεις (updates), εισαγωγές (insertions) ή διαγραφές (deletions)), το οποίο θα απαιτήσει μικρότερο αριθμό Ε/Ε (I/O) του δίσκου για να απαντηθεί χρησιμοποιώντας το συσταδοποιημένο ευρετήριο από ότι το μη-συσταδοποιημένο. Το παράδειγμά σας θα πρέπει να απαιτεί λιγότερες Ε/Ε λειτουργίες για να εκτελεστεί χρησιμοποιώντας το συσταδοποιημένο ευρετήριο από ότι μια πλήρη σάρωση πίνακα (full table scan), δηλ. χωρίς τη χρήση κάποιων από τα δύο ευρετήρια. Για μια πιο πλήρη απάντηση, εξηγήστε σύντομα γιατί κοστίζει λιγότερο η χρήση του συσταδοποιημένου ευρετηρίου. select * from Track where ReleaseID > 'xxx' Το δευτερεύον ευρετήριο δεν μπορεί να χρησιμοποιηθεί για να εκτελεστεί αυτή η επερώτηση. Θα είναι πιο γρήγορο να εκτελεστεί αυτή η επερώτηση χρησιμοποιώντας το συσταδοποιημένο ευρετήριο από ότι μια πλήρη σάρωση πίνακα εάν το κατηγόρημα είναι αρκετά επιλεκτικό, δηλ. εάν αρκετές εγγραφές δεν ικανοποιούν το κατηγόρημα, αφού το ευρετήριο μπορεί να χρησιμοποιηθεί για να αποφύγουμε να διαβάσουμε πλειάδες που δεν το ικανοποιούν. Μια άλλη πιθανή απάντηση θα ήταν ένα ερώτημα που θα επέστρεφε αποτελέσματα ταξινομημένα ως προς ReleaseID ή ως προς ReleaseID,TrackNum. select * from Track where ReleaseID > 'xxx' β) (6 μονάδες) Δώστε ένα παράδειγμα από ενός απλού SQL ερωτήματος σε έναν πίνακα (χωρίς ενημερώσεις (updates), εισαγωγές (insertions) ή διαγραφές (deletions)), το οποίο θα απαιτήσει μικρότερο αριθμό Ε/Ε για να απαντηθεί χρησιμοποιώντας το μη-συσταδοποιημένο ευρετήριο από ότι το συσταδοποιημένο. Το παράδειγμά σας θα πρέπει να απαιτεί λιγότερες Ε/Ε λειτουργίες για να εκτελεστεί χρησιμοποιώντας το μησυσταδοποιημένο ευρετήριο από ότι μια πλήρη σάρωση πίνακα (full table scan) που χρησιμοποιεί κανένα ευρετήριο. Για μια πιο πλήρη απάντηση, εξηγήστε σύντομα γιατί γιατί κοστίζει λιγότερο η χρήση του μη-συσταδοποιημένου ευρετηρίου. select (distinct) TrackNum from Track Αυτή η επερώτηση μπορεί να απαντηθεί μόνο χρησιμοποιώντας το μη συσταδοποιημένο ευρετήριο καμία πρόσβαση στα δεδομένα δεν θα απαιτηθεί. Θα μπορούσε επίσης να απαντηθεί χρησιμοποιώντας το συσταδοποιημένο ευρετήριο, αλλά σε αυτή την περίπτωση το ευρετήριο θα ήταν μεγαλύτερο. Μια άλλη πιθανή απάντηση θα ήταν μια επερώτηση με ένα κατηγόρημα στο TrackNum, αλλά μόνο αν λίγες πλειάδες ικανοποιούν το κατηγόρημα, αλλιώς μια σάρωση πίνακα ίσως είναι γρηγορότερη.
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 4 από 8 Άσκηση 4 (12 μονάδες) (Εκτίμηση Κόστους Εκτέλεσης Ερωτημάτων) Μια βάση δεδομένων περιέχει δύο σχέσεις, R και S. Η R έχει 50000 πλειάδες και καταλαμβάνει 500 μπλοκ δεδομένων (data blocks). Επίσης, έχει ένα Β+ δενδρικό ευρετήριο στο γνώρισμα R.a. Το ευρετήριο είναι μη συσταδοποιημένο και έχει ύψος 2. Τα φύλλα του ευρετηρίου καταλαμβάνουν 10 μπλοκ. Η σχέση S έχει 200000 πλειάδες και καταλαμβάνει 2000 μπλοκ δεδομένων. Θεωρείστε ότι το ΣΔΒΔ εκτελεί καθένα από τα παρακάτω τρία ερωτήματα με την ακόλουθη σειρά: Q1: select * from R order by R.a Η Q1 εκτελείται χρησιμοποιώντας το ευρετήριο για να διαβάσει τις πλειάδες της R ταξινομημένες στο R.a. Q2: select * from S H Q2 εκτελείται χρησιμοποιώντας σάρωση πίνακα στη σχέση S. Q3: select * from R order by R.a H Q3 είναι ίδια με την Q1 και εκτελείται με τον ίδιο τρόπο. α) (6 μονάδες) Υποθέτοντας ότι η λανθάνουσα μνήμη (buffer cache) είναι πολύ μικρή (κανένα cache hit), πόσες αναγνώσεις μπλοκ δίσκου (disk block reads) θα απαιτήσει το ΣΔΒΔ για να εκτελέσει καθένα από τις τρία ερωτήματα; Η πλήρη απάντηση σας απαιτεί τρεις αριθμούς, μια για κάθε ερώτημα. Q1: 11 αναγνώσεις μπλοκ ευρετηρίου και 50000 αναγνώσεις μπλοκ δεδομένων (μια για κάθε πλειάδα), αφού το ευρετήριο δεν είναι συσταδοποιημένο. Q2: 2000 αναγνώσεις μπλοκ δεδομένων για τη σάρωση πίνακα. Q3: 50011 όπως το Q1, αφού τίποτα δεν έχει μπει στη λανθάνουσα μνήμη. β) (6 μονάδες) Επαναλάβετε το ερώτημα (α), αλλά αυτή τη φορά υποθέστε ότι η λανθάνουσα μνήμη είναι αρκετά μεγάλη, έτσι ώστε να μπορεί να κρατά 1200 μπλοκ χρησιμοποιώντας την LRU πολιτική αντικατάστασης (buffer replacement policy). Υποθέστε ότι η λανθάνουσα μνήμη είναι άδεια πριν την εκτέλεση του ερωτήματος Q1. Πάλι, πλήρη απάντηση σας απαιτεί τρεις αριθμούς, μια για κάθε ερώτημα. Q1: 11 αναγνώσεις μπλοκ ευρετηρίου και 500 αναγνώσεις μπλοκ δεδομένων. Κάθε μπλοκ δεδομένων θα παραμείνει στη λανθάνουσα μνήμη από τη στιγμή που θα διαβαστεί την πρώτη φορά, επομένως θα διαβαστεί μια φορά. Q2: 2000 αναγνώσεις μπλοκ δεδομένων για τη σάρωση πίνακα. Q3: 511 όπως το Q1. Η λανθάνουσα μνήμη θα είναι γεμάτη από μπλοκ της S μετά την εκτέλεση της Q2, επομένως η Q3 θα απαιτήσει να διαβαστεί ξανά κάθε μπλοκ της R και του ευρετηρίου της R. Άσκηση 5 (16 μονάδες) Επεξεργασία Ερωτημάτων και Στατιστικά α) (12 μονάδες) Θεωρείστε δύο σχέσεις R(A,B) και S(C,D) με τα ακόλουθα στατιστικά: B(R) = 5 T(R) = 200 V(R,A) = 10 B(S) =100
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 5 από 8 T(S) = 400 V(S,C) 50 M = 1000 Υπάρχει ένα συσταδοποιημένο ευρετήριο στο S.C και ένα μη συσταδοποιημένο ευρετήριο στο R.A. Θεωρείστε το λογικό πλάνο: ( ) Υπάρχουν δύο λογικοί τελεστές, s= και j= για κάθε ένα από τους οποίους θεωρούμε δύο διαφορετικές λειτουργίες εκτέλεσης: s1 = σάρωση πίνακα με ένα πέρασμα (one pass table scan) s2 = επιλογή βασισμένη σε ευρετήριο (index-based selection) j1 = σύζευξη κατακερματισμού κύριας μνήμη (main memory hash join) j2 = σύζευξη βασισμένη σε ευρετήριο (index-based join) Οι λειτουργίες s1 και s2 εκτελούνται με σωλήνωση (pipelined), δηλ. το αποτέλεσμα μιας επιλογής δεν αποθηκεύεται στο δίσκο. Υπολογίστε το κόστος σε αριθμό Ε/Ε δίσκου για κάθε ένα από τα τέσσερα φυσικά πλάνα που προκύπτουν από τις παραπάνω διαφορετικές λειτουργίες εκτέλεσης (Cost(s1j1), Cost(s2j1), Cost(s1j2), Cost(s2j2)) συναρτήσει των παραπάνω στατιστικών. Η απάντησή σας θα πρέπει να περιέχει 4 εκφράσεις, π.χ. Cost(s1j1)=B(R)B(S)/M+V(R,A) (δεν πρόκειται για πραγματική απάντηση!). Cost(s1j1) = B(R) + B(S) Cost(s2j1) = T(R)/V(R,A) + B(S) Cost(s1j2) = B(R) + (T(R)/V(R,A))*(B(S)/V(S,A)) Cost(s2j2) = T(R)/V(R,A))+(T(R)/V(R,A))*(B(S)/V(S,A)) β. (4 μονάδες) Εκτιμήστε ποιο είναι το φτηνότερο πλάνο από τα προηγούμενα τέσσερα και υπολογίστε την αριθμητική τιμή του κόστους. Για την πλήρη απάντηση αυτή της ερώτησης απαιτείται ο υπολογισμός του κόστους και των τεσσάρων πλάνων. 45 Άσκηση 6 (12 μονάδες) Έλεγχος σύγχρονης πρόσβασης Θεωρείστε ότι ο έλεγχος σύγχρονης πρόσβασης εφαρμόζεται με τη χρήση της τεχνικής της πιστοποίησης (validation-based concurrency control). Για τις δοσοληψίες U και T γνωρίζουμε τα ακόλουθα: T ξεκίνησε τη χρονική στιγμή 50
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 6 από 8 T πέρασε τη φάση της πιστοποίησης τη χρονική στιγμή 100 και εκείνη τη στιγμή η U ανήκει στο σύνολο VAL RS(T) = {A, B} WS(T) = {B, C} α) Έστω ότι η U ολοκλήρωσe την εκτέλεσή της τη χρονική στιγμή 25. Ποια αντικείμενα δεν μπορούν να ανήκουν στα σύνολα RS(U) και WS(U)? β) Έστω ότι η U ξεκινάει τη χρονική στιγμή 25 και ολοκληρώνει την εκτελεσή της τη χρονική στιγμή 75. Ποια αντικείμενα δεν μπορούν να ανήκουν στα σύνολα RS(U) και WS(U)? γ) Έστω ότι η U ξεκινάει τη χρονική στιγμή 60 και ολοκληρώνει την εκτελεσή της τη χρονική στιγμή 75. Ποια αντικείμενα δεν μπορούν να ανήκουν στα σύνολα RS(U) και WS(U)? δ) Έστω ότι η U ολοκληρώνει την εκτελεσή της τη χρονική στιγμή 125. Ποια αντικείμενα δεν μπορούν να ανήκουν στα σύνολα RS(U) και WS(U)? α) Όλα μπορούν Όλα μπορούν β) Όλα μπορούν A,B γ) Όλα μπορούν A,B δ) Όλα μπορούν A,B,C Άσκηση 7 (12 μονάδες) Ανάνηψη από σφάλματα Θεωρείστε την παρακάτω ακολουθίες από εγγραφές ημερολογίου με την τεχνική του undo/redo logging και με χρήση checkpointing. <START, T1> < T1, A, 4, 5> <START,T2> < T2, B, 9, 10> <START CKPT (T1, T2)> <COMMIT T2 > <START T3 > < T3, C, 14, 15>
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 7 από 8 <END CKPT> <COMMIT T3 > <COMMIT T1 > Περιγράψτε τις ενέργειες στις οποίες θα προβεί ο recovery manager σχετικά με τα δεδομένα στη δευτερεύουσα μνήμη και το ημερολόγιο σε κάθε μια από τις ακόλουθες περιπτώσεις: α) το σφάλμα συμβαίνει αμέσως μετά την εγγραφή < T2, B, 9, 10> στο ημερολόγιο. β) το σφάλμα συμβαίνει αμέσως μετά την εγγραφή <COMMIT T2 > στο ημερολόγιο. γ) το σφάλμα συμβαίνει αμέσως μετά την εγγραφή <END CKPT> στο ημερολόγιο. δ) το σφάλμα συμβαίνει αμέσως μετά την εγγραφή <COMMIT T1 > στο ημερολόγιο. α) B<-9, A<-4 <ABORT T1>, <ABORT T2>, FLUSH LOG β) A<-4, B<-10 <ABORT T1>, FLUSH LOG γ) C<-14, A<-4 <ABORT T1>, <ABORT T3>, FLUSH LOG δ) C<-15 (none) Άσκηση 8 (6 μονάδες) Έλεγχος σύγχρονης πρόσβασης Θεωρείστε το ακόλουθο πρόγραμμα σύγχρονης εκτέλεσης για τρεις δοσοληψίες: R1(A); R2(A); R3(A); W1(B); W2(B); W3(B); Είναι το πρόγραμμα αυτό σειριακοποιήσιμο σύμφωνα με τον ορισμό του view serializability? Δικαιολογείστε την απάντησή σας. Λυση: Η πηγή για όλα τα reads των Τ1,Τ2,Τ3 ειναι η ΤΙ. Η πηγή για το RF(B) είναι η Τ3. Το πρόγραμμα είναι σειριακόποιήσιμο σύμφωνα με το view serializability. Ισοδύναμα σειριακά προγράμματα: Τ1, Τ2, Τ3 και Τ2, Τ1, Τ3. Καλή επιτυχία!
ΗΥ460 Τελική Εξέηαζη 29 Ιανουαπίου 2013 Σελίδα 8 από 8