Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης Ονοµατεπώνυµο: Αριθµός Μητρώου: Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 27 Αυγούστου 2007 Άσκηση 1 (20 µονάδες) (Ενδιάµεση Μνήµη) Ως γνωστόν, η απλή LRU (simple Least Recently Used buffer management policy) δεν αποτελεί τη βέλτιστη πολιτική διαχείρισης ενδιάµεσης µνήµης σε ένα Σύστηµα ιαχείρισης Βάσεων εδοµένων (Σ Β ). Σας δίνεται µια δεξαµενή ενδιάµεσης µνήµης (buffer pool) των 100 σελίδων (όπου κάθε σελίδα χωράει 10 πλειάδες δεδοµένων µιας σχέσης) την οποία το Σ Β χρησιµοποιεί για να εκτελέσει παράλληλα τις ακόλουθες λειτουργίες: Α: (4 µονάδες) Μία ακολουθιακή σάρωση (sequential scan) µιας σχέσης R, που αποτελείται από 10.000 πλειάδες B: (6 µονάδες) Μία σύζευξη εµφωλευµένων βρόχων (nested loops join) µιας σχέσης S, αποτελούµενης από 1000 πλειάδες, µε µια σχέση Τ, αποτελούµενη από 500 πλειάδες, µε την S ως εξωτερική σχέση. C: (10 µονάδες) Μία σύζευξη ευρετηριασµένων εµφωλευµένων βρόχων (index nested loops join) µιας σχέσης U, αποτελούµενης από 1000 πλειάδες, µε µια σχέση V, αποτελούµενη από 10.000 πλειάδες, µε την V ως εσωτερική σχέση. Θεωρείστε ότι υπάρχει ένα πρωτεύον ευρετήριο B + -tree στη V και ότι το Β + -tree είναι τάξης (order) 10 και έχει συντελεστή κάλυψης (fill factor) 0,5. Κάθε αναζήτηση (lookup) στην V επισκέπτεται ακριβώς µία σελίδα φύλλο (leaf page) του Β + -tree. Εκτιµήστε τον αριθµό των σελίδων που θα διαβαστούν από το δίσκο µε µια απλή LRU πολιτική διαχείρισης ενδιάµεσης µνήµης κατά την παράλληλη επεξεργασία των παραπάνω λειτουργιών, θεωρώντας ότι κάθε µία από αυτές χρειάζεται τον ίδιο χρόνο για να ολοκληρωθεί, και ξεκινά περίπου την ίδια χρονική στιγµή. Για λόγους απλότητας, θεωρείστε ότι οι παραπάνω λειτουργίες εκτελούνται µε επικαλυπτόµενο (interleaved) τρόπο, έτσι ώστε µία σελίδα να τυγχάνει επεξεργασίας από τη λειτουργία Α, εν συνεχεία µία εξωτερική πλειάδα να τυγχάνει επεξεργασίας από τη λειτουργία Β και εν συνεχεία µια εξωτερική πλειάδα να τυγχάνει επεξεργασίας από τη λειτουργία C. Επίσης θεωρείστε ότι οι πλειάδες όλων των σχέσεων της άσκησης έχουν το ίδιο µέγεθος. Εφόσον όλες οι λειτουργίες εκτελούνται µε επικαλυπτόµενο (interleaved) τρόπο και χρειάζονται τον ίδιο χρόνο για να ολοκληρωθούν, µπορούµε να θεωρήσουµε ότι σε κάθε πέρασµα της εσωτερικής σχέσης T της σύζευξης Β (για την επεξεργασία µιας εξωτερικής πλειάδας της S), η Α θα σαρώσει το 1/1000 των πλειάδων της R, δηλαδή µία σελίδα δίσκου µε 10 πλειάδες.
Παροµοίως, για κάθε πλειάδα της εξωτερικής σχέσης S που τυγχάνει επεξεργασίας στην Β, η C θα επεξεργάζεται επίσης µια πλειάδα της εξωτερικής σχέσης U. Η τελευταία λειτουργία θα εµπλέκει µια αναζήτηση στο Β+-tree, το οποίο αποτελείται από 5 επίπεδα (συνεπώς θα προσπελάζονται 5 σελίδες). Ανάλογα µε το πώς ερµηνεύουµε την απαίτηση για την τιµή 0,5 του συντελεστή κάλυψης, µπορούµε ενδεχοµένως να συµπεράνουµε ότι το Β+-tree αποτελείται από 6 επίπεδα. Εφόσον οι ενέργειες αυτές θα εκτελούνται µε επικαλυπτόµενο (interleaved) τρόπο το κόστος κάθε µιας από τις τρεις ενέργειες θα είναι: Α. Θα διαβαστούν 1000 σελίδες της R. Β. Θα διαβαστούν 100 σελίδες της εξωτερικής σχέσης S. Κάθε πέρασµα της εσωτερικής σχέσης T για την επεξεργασία µιας εξωτερικής πλειάδας της S θα προσπελάζει 50 σελίδες. Το πρώτο πέρασµα θα απαιτήσει την εκ νέου ανάγνωση όλης της εσωτερικής σχέσης T. Στα επόµενα περάσµατα της εσωτερικής σχέσης, η Α θα έχει αποδεσµεύσει µία ακόµα σελίδα ενδιάµεσης µνήµης ενώ η C 5 ακόµα σελίδες. Εφόσον όµως η Β προσπελάζει εκ νέου κάθε µια από τις 50 σελίδες της για κάθε µία εξωτερική πλειάδα που τυγχάνει επεξεργασίας από τις A και C, οι σελίδες της δεν πρόκειται ποτέ να αποδεσµευτούν από την ενδιάµεση µνήµη. Συνεπώς θα αναγνωσθούν µόνο 150 σελίδες. C. Θα αναγνωσθούν 100 σελίδες της εξωτερικής σχέσης U. Κάθε µία θα εµπλέκει 5 αναζητήσεις στο Β+-tree για την εσωτερική σχέση V. Προφανώς η ρίζα του Β+-tree θα παραµένει στη δεξαµενή ενδιάµεσης µνήµης. Κάθε σελίδα δεύτερου επιπέδου του Β+-tree θα προσπελάζεται εκ νέου, κατά µέσο όρο κάθε 1 στις 10 αναζητήσεις. Μετά από κάθε 10 αναζητήσεις, η Α θα έχει προσπελάσει 10 σελίδες και η Β θα έχει προσπελάσει 1 νέα σελίδα των πλειάδων της εσωτερικής σχέσης T. Συνεπώς, µε µεγάλη πιθανότητα τα δύο κορυφαία επίπεδα του Β+-tree θα παραµένουν στην ενδιάµεση µνήµη. Τα κατώτερα επίπεδα του Β+-tree είναι απίθανο να διατηρούνται στην ενδιάµεση µνήµη εφόσον προσπελάζονται εκ νέου µόνο κάθε 1 στις 100 εξωτερικές πλειάδες το πολύ. Το συνολικό κόστος είναι: 100 + 1 (κορυφαίο επίπεδο) + 10 (δεύτερο επίπεδο) + 3 * 1.000 = 3111 σελίδες. Συνεπώς, ο συνολικός αριθµός σελίδων που διαβάζονται µε την προσέγγιση LRU είναι: 3111 + 150 + 1000 = 4.261 σελίδες. Άσκηση 2 (10 µονάδες) (Φυσικό Σχήµα Β ) Σας δίνεται η σχέση Executives(ename, title, dname, address), όπου όλα τα γνωρίσµατα έχουν το ίδιο µήκος και το ename είναι ένα υποψήφιο κλειδί (candidate key). Η σχέση αποθηκεύεται σε 12000 σελίδες και έχουµε στην διάθεσή µας ενδιάµεση µνήµη (buffer) 10 σελίδων. Υποθέστε ότι 10% των πλειάδων ικανοποιούν την ακόλουθη επερώτηση: Select E.title, Count(*) From Executives E Where E.dname > 'W%'
Group by E.title Για κάθε ένα από τα παρακάτω σενάρια, περιγράψτε το πιο αποδοτικό σχέδιο εκτέλεσης της επερώτησης (query execution plan) και υπολογίστε το κόστος του σε σελίδες Ε/Ε. Σηµειώστε ότι το βέλτιστο σχέδιο εκτέλεσης µπορεί να µην χρησιµοποιεί κανέναν από τα ευρετήρια που σας δίνονται στην συνέχεια. α) Μόνο ένα συσταδοποιηµένο δενδρικό ευρετήριο (Β+ δένδρο) είναι διαθέσιµο στο γνώρισµα title. β) Μόνο ένα µη-συσταδοποιηµένο δενδρικό ευρετήριο (Β+ δένδρο) είναι διαθέσιµο στο γνώρισµα title. γ) Μόνο ένα συσταδοποιηµένο δενδρικό ευρετήριο (Β+ δένδρο) είναι διαθέσιµο στο γνώρισµα dname. δ) Μόνο ένα συσταδοποιηµένο δενδρικό ευρετήριο (Β+ δένδρο) είναι διαθέσιµο στο σύνθετο γνώρισµα (dname, title). ε) Μόνο ένα συσταδοποιηµένο δενδρικό ευρετήριο (Β+ δένδρο) είναι διαθέσιµο στο σύνθετο γνώρισµα (title, dname). (α) Ακολουθιακή σάρωση του αρχείου και εκτέλεση της επιλογής (selection) και της αρίθµησης (counting) on the fly. Συνολικό κόστος = 12000 Ε/Ε. (β) Ταξινόµηση του αρχείου και εκτέλεση των υπολοίπων ενεργειών on the fly. Παρατηρήστε ότι µόλις εκτελεστεί η επιλογή, δεν υπάρχει λόγος να διατηρείται το πεδίο dname στο αποτέλεσµα. Συνολικό κόστος = 13200 Ε/Ε. (γ) Σάρωση του ευρετηρίου για το ταίριασµα των dnames, έπειτα ταξινόµηση και αρίθµηση των αντίστοιχων titles. Συνολικό κόστος = 2700 Ε/Ε. (δ) Σάρωση του ευρετηρίου για το ταίριασµα εγγραφών (entries), έπειτα ταξινόµηση και αρίθµηση των αντίστοιχων titles. Συνολικό κόστος = 1800 Ε/Ε. (ε) Σάρωση του ευρετηρίου και αρίθµηση των titles. Συνολικό κόστος = 6000 Ε/Ε. Άσκηση 3 (34 µονάδες) (Βελτιστοποίηση Επερωτήσεων) Υπολογίστε τον αριθµό µεταφορών σελίδων (Ε/Ε) που απαιτούνται για τον υπολογισµό της σύζευξης R R.a= S.b S µε τον αλγόριθµο συγχώνευσης-ταξινόµησης (sort-merge), υποθέτοντας τα εξής: 1. Το µέγεθος της R είναι 1000 σελίδες, µε 10 πλειάδες (tuples) ανά σελίδα, το µέγεθος της S είναι 500 σελίδες µε 20 πλειάδες (tuples) ανά σελίδα. 2. Το µέγεθος της διαθέσιµης ενδιάµεσης µνήµης (main memory buffer) για τον υπολογισµό της σύζευξης είναι 10 σελίδες. 3. Το Καρτεσιανό γινόµενο των πλειάδων της R και S που µπορούνε να συζευχθούν (matching) υπολογίζεται χρησιµοποιώντας έναν αλγόριθµο φωλιασµένων βρόγχων (block-nested loop). 4. Έχουµε τα στατιστικά V(R,A)=100 και V(S,B)=50. Αυτές οι διακριτές τιµές κατανέµονται οµοιόµορφα στις πλειάδες των δύο σχέσεων.
1. (2 µονάδες) Εξωτερική ταξινόµηση της σχέσης R: 2 1000( log 9 1000/10 +1) = 8000 Ε/Ε 2. (2 µονάδες) Εξωτερική ταξινόµηση της σχέσης S: 2 500( log 9 500/10 +1) = 3000 Ε/Ε. Για να µπορέσουµε να συγχωνεύσουµε σε ένα µόνο πέρασµα, θα πρέπει να έχουµε τόση µνήµη ώστε να τακτοποιούµε µια σελίδα από κάθε εκτέλεση (run) δηλαδή B > L, όπου L είναι το µέγεθος της µεγαλύτερης σχέσης. Όµως, αυτό δεν ισχύει διότι 1000 = 31.6 και έχουµε µόνο 10 σελίδες ενδιάµεσης µνήµης διαθέσιµες. 3. (15 µονάδες) Το βήµα συγχώνευσης: Πρώτον, προφανώς, πρέπει να σαρώσουµε τις εκτελέσεις των R και S, το οποίο µας κοστίζει 1500 µεταφορές σελίδων. Για κάθε τιµή του πεδίου A, ο αριθµός των σελίδων της R που περιέχουν πλειάδες που ταιριάζουν µε αυτή την τιµή είναι 1000/100=10. Παροµοίως, για κάθε τιµή του B, ο αριθµός των σελίδων της S που περιέχουν πλειάδες που ταιριάζουν µε αυτή την τιµή είναι 500/50=10. Συνεπώς, κάθε φορά που έχουµε ταίριασµα (match), υπολογίζουµε ένα Καρτεσιανό γινόµενο των 2 10-σέλιδων σχέσεων. Η χρήση του αλγορίθµου φωλιασµένων βρόγχων µε 10 σελίδες ενδιάµεσης µνήµης απαιτεί τη σάρωση µιας φοράς του R-µέρους και δύο φορών του S-µέρους για ένα σύνολο 30 σελίδων. Όµως, µια σάρωση των R και S που απαιτείται για τον υπολογισµό του γινοµένου έχει ήδη πραγµατοποιηθεί στην αρχική σάρωση (η οποία απαιτεί την µεταφορά 1500 σελίδων). Άρα, το επιπλέον κόστος είναι µόνο 10 σελίδες για τη σάρωση του S-µέρους τη δεύτερη φορά. Η έξοδος έχει 10 10 = 100 σελίδες, οπότε για κάθε ταίριασµα ο υπολογισµός του Καρτεσιανού γινόµενου απαιτεί την µεταφορά 110 σελίδων. Η ερώτηση είναι πόσα ταιριάσµατα µπορεί να έχουµε. Εφόσον το A έχει 100 τιµές και το B έχει 50, µπορούµε να έχουµε το πολύ 50 ταιριάσµατα, οπότε ο υπολογισµός και η παραγωγή στην έξοδο των ταιριαγµένων πλειάδων θα πάρει το πολύ 50 110 = 5500 µεταφορές σελίδων. Συνολικά θα έχουµε: 1000 + 500 + 5500 = 7000 σελίδες 4. (15 µονάδες) Όταν οι R και S είναι εξωτερικά ταξινοµηµένες, η τελευταία εκτέλεση (run) της ταξινόµησης διατηρεί τις σελίδες στη µνήµη και πάει απευθείας στο βήµα της συγχώνευσης. Με αυτό τον τρόπο εξοικονοµούµε χρόνο αλλιώς θα γράφαµε πίσω τις σελίδες στο δίσκο και θα τις ξαναφέρναµε για τη συγχώνευση. Η διατήρηση της R στη µνήµη εξοικονοµεί 1000 µεταφορές σελίδων ( 2 = 2000) και η διατήρηση της S στην µνήµη εξοικονοµεί 500 µεταφορές σελίδων ( 2 = 1000). Συνεπώς,, το συνολικό κόστος θα είναι: 6000 + 2000 + 7000 = 15000 σελίδες Ε/Ε.
Άσκηση 4 (10 µονάδες) ( ενδρικά Ευρετήρια) Θεωρήστε ένα Β+ δέντρο που ευρετηριάζει 300 εγγραφές (records). (α) Εάν το Β+ δέντρο έχει τάξη (order) 9 (δηλ., κάθε κόµβος έχει το πολύ 9 κλειδιά), ποιο είναι το ελάχιστο και µέγιστο ύψος (βάθος) του; (Ένα δέντρο µε µόνο τον κόµβο ρίζας έχει ένα ύψος (βάθος) 1.) Ελάχιστο: 3 (Ένα δένδρο ύψους 2 θα µπορούσε να δεικτοδοτήσει το πολύ 90 εγγραφές) Μέγιστο: 4 (Ένα δένδρο ύψους 5 απαιτεί τουλάχιστον 1250 εγγραφές) (β) Εάν το Β+ δέντρο έχει ένα ύψος 2, ποια είναι η ελάχιστη και µέγιστη τάξη (order) του; Ελάχιστο: 17 (Η τάξη 17 επιτρέπει µέχρι 18 * 17 = 306 εγγραφές να ευρετηριαστούν, ενώ η τάξη 16 θα επέτρεπε µόνο 17 * 16 = 272 εγγραφές να ευρετηριαστούν) Μέγιστο: 300 (Η τάξη 300 επιτρέπει τουλάχιστον 300 εγγραφές µε 2 κόµβους φύλλα στο δεύτερο επίπεδο, ο καθένας από τους οποίους θα πρέπει να δείχνει τουλάχιστον σε 150 εγγραφές. Η τάξη 301 θα απαιτούσε τουλάχιστον 2 κόµβους φύλλα δευτέρου επιπέδου που θα έπρεπε να δείχνουν σε τουλάχιστον 151 εγγραφές ο καθένας.) Άσκηση 5 (26 µονάδες) ( ιαχείριση οσοληψιών) 5.1 (13 µονάδες) Θεωρείστε τις δοσοληψίες T1: R1(A), W1(B) και T2: R2(A), W2(A), W2(B). Υποθέστε ότι εισάγοµε από ένα ζεύγος εντολών lock και unlock για κάθε στοιχείο της βάσης δεδοµένων στο οποίο οι δοσοληψίες έχουν πρόσβαση. Πόσα προγράµµατα σύγχρονης εκτέλεσης των δύο δοσοληψιών υπάρχουν που ακολουθούν το πρωτόκολλο 2PL; Υπάρχουν σειριακοποιήσιµα προγράµµατα σύγχρονης εκτέλεσης των δύο δοσοληψιών που δεν ακολουθούν το 2PL; Αν ακολουθηθεί το 2PL, τότε τα µόνα προγράµµατα σύγχρονης εκτέλεσης είναι τα σειριακά: Τ1;Τ2 και Τ2;Τ1. Θεωρούµε, ως συνήθως, ότι τα locks ζητούνται ακριβώς όταν χρειαστούν και απελευθερώνονται όλα µαζί. Αν αποδεσµευτούµε από το 2PL πρωτόκολλο, µπορούν να βρεθούν και άλλα σειριακοποιήσιµα προγράµµατα σύγχρονης εκτέλεσης, όπως το ακόλουθο: L 1 (A); R 1 (A); U 1 (A); L 1 (B); R 1 (B); U 1 (B); L 2 (A); R 2 (A); W 2 (A); U 2 (A); L 2 (B); W 2 (B); U 2 (B);
Αρκετές ακόµα παραλλαγές µπορούν να υπάρξουν, προσέχοντας όµως να µην παραβιαστεί η σειριακοποιησιµότητα του προγράµµατος. 5.2 (13 µονάδες) Θεωρείστε τις δοσοληψίες T1: R1(A), R1(B), INC1(A), INC1(B) και T2: R2(A), R2(B), INC2(A), INC2(B). Πόσα σειριακοποιήσιµα προγράµµατα σύγχρονης εκτέλεσης των δύο δοσοληψιών υπάρχουν; Αν η σειρά των increment operations στην T2 αντιστραφεί, πόσα σειριακοποιήσιµα προγράµµατα σύγχρονης εκτέλεσης των δύο δοσοληψιών υπάρχουν; Αρχικά, ας µετρήσουµε το πλήθος των σειριακοποιήσιµων διατάξεων που είναι conflictequivalent µε τη διάταξη (Τ1, Τ2). Για να είναι ένα πρόγραµµα ισοδύναµο µε το (Τ1, Τ2), το ΙΝC1(Α) πρέπει να προηγείται του R2(A). Έτσι, τα πρώτα τρία βήµατα της Τ1 πρέπει να βρίσκονται στις τρεις πρώτες θέσεις του προγράµµατος. Επιπρόσθετα, το INC1(Β) πρέπει να βρίσκεται πριν το R2(B), έτσι ώστε το πρώτο να είναι είτε η τέταρτη ενέργεια του προγράµµατος είτε η πέµπτη, αµέσως µετά το R2(A). Εποµένως, υπάρχουν δύο σειριακοποιήσιµα προγράµµατα ισοδύναµα του (Τ1, Τ2). Λόγω συµµετρίας, ο ίδιος αριθµός προγραµµάτων θα είναι ισοδύναµα µε την αντίθετη διάταξη (Τ2, Τ1). Έτσι, τελικά, το σύνολο των σειριακοποιήσιµων προγραµµάτων είναι τέσσερα. Αν τώρα η σειρά των increment operations στην Τ2 αντιστραφεί, τότε η κατάσταση δεν αλλάζει αν πρώτη διεργασία είναι η Τ1. Αν όµως εκκινήσει πρώτα η Τ2, τότε η µόνη δυνατή σειριακοποιήσιµη εκτέλεση είναι η σειριακή. Εποµένως, συνολικά τρία είναι τα σειριακοποιήσιµα προγράµµατα σύγχρονης εκτέλεσης.