ΗΥ460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2018 Project

Σχετικά έγγραφα
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΗΥ460) Χειμερινό εξάμηνο 2017

ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Επεξεργασία Ερωτήσεων

Άσκηση 1 (15 μονάδες) (Επεκτατός Κατακερματισμός)

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

Το εσωτερικό ενός Σ Β

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Διαφάνεια 16-1

Τμήμα Πληροφορικής ΑΠΘ

Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Βάσεις Δεδομένων Ι Ευρετήρια/Indexes. (...και επιδόσεις ΣΔΒΔ) Views (Όψεις) Φώτης Κόκκορας (MSc/PhD) Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπ/νιών

Επεξεργασία Ερωτήσεων

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Δυναμικός Κατακερματισμός

Ονοματεπώνυμο: Αριθμός Μητρώου:

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Σχεδιασμός Βάσεων Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Τμήμα Πληροφορικής ΑΠΘ

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Υλοποίηση των Σχεσιακών Τελεστών. 6/16/2009 Μ.Χατζόπουλος 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

Βελτιστοποίηση επερωτημάτων

Εαρινό Εξάμηνο

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ (Σεπτεμβρίου)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

Ο βελτιστοποιητής ερωτημάτων (query optimizer) Μετασχηματισμός εκφράσεων σχεσιακής άλγεβρας Υπολογισμός μεγεθών πράξεων σχεσιακής άλγεβρας

ΗΥ460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης, Δημήτρης Πλεξουσάκης, Χαρίδημος Κονδυλάκης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

Διαχείριση Πολιτισμικών Δεδομένων

Επεξεργασία ερωτημάτων

Ευρετήρια και Κατακερματισμός

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Βάσεις Περιβαλλοντικών Δεδομένων

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Από τα Δεδομένα στην Πληροφορία: Διδακτικό Σενάριο για Εισαγωγή στη Γλώσσα SQL. Σ. Φίλου Β. Βασιλάκης

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

2 η Σειρά Ασκήσεων Ημερομηνία Παράδοσης: 14/11/2016

Βάσεις Δεδομένων 2. Φροντιστήριο Αλγόριθμοι Επεξεργασίας και Βελτιστοποίησης Επερωτήσεων. Ημερ: 27/5/2008 Ακ.Έτος

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΗ ΔΕΥΤΕΡΗ

Τεχνολογία Πολιτισμικού Λογισμικού

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη

Εαρινό Εξάμηνο

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Σχεδιασμός των Πινάκων μίας Βάσης Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βάσεις Δεδομένων Σύνθετα SQL queries

Λύση (από: Τσιαλιαμάνης Αναγνωστόπουλος Πέτρος) (α) Το trie του λεξιλογίου είναι

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ευρετήρια. Το ευρετήριο αρχείου είναι ένα διατεταγµένο αρχείο µε σταθερού µήκους εγγραφές

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ηλεκτρονικοί Υπολογιστές II

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)


Η SQL ως γλώσσα τροποποίησης Δεδομένων

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

SQL Data Manipulation Language


Τμήμα Διοίκησης Επιχειρήσεων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Διαχείριση Πολιτισμικών Δεδομένων

Ευρετήρια. Ευρετήρια. Βάσεις εδοµένων :ευρετήρια 1

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013

Βάσεις Δεδομένων ΙΙ Ενότητα 5

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

Προηγμένα Πληροφοριακά Συστήματα. Ακαδημαϊκό Έτος

Transcript:

ΗΥ460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2018 Project Δημιουργήστε τους πίνακες (tables.sql) και εισάγετε τα δεδομένα (distributedby.sql 143.153 πλειάδες, movie.sql 193.781 πλειάδες, people.sql - 289.221 πλειάδες, plays.sql 810.692 πλειάδες, producedby.sql 202.868 πλειάδες). Αρχικά, δεν υπάρχουν ορισμένα ευρετήρια (index), κλειδιά (keys) ή συστάδες (clusters) για τους πίνακες της άσκησης. Επίσης, δημιουργήστε στην περιοχή σας τον πίνακα PLAN_TABLE, όπου θα αποθηκευτούν τα σχέδια εκτέλεσης (execution plans) κάθε επερώτησης της άσκησης. Κατά τη διάρκεια της άσκησης, κάθε φορά που είτε δημιουργείτε έναν πίνακα και φορτώνετε σε αυτόν πλειάδες, είτε ορίζετε, είτε όχι, ένα καινούργιο ευρετήριο, θα πρέπει πάντοτε να ενημερώνετε τα στατιστικά στοιχεία του αντίστοιχου πίνακα. Σημείωση: Η ενδιάμεση μνήμη (cache) που χρησιμοποιείται από την Oracle είναι 41.943.040 bytes, μοιρασμένη σε 5.120 buffers μεγέθους 8.192 bytes ο καθένας. Ζήτημα 1 ο Χρήση της ενδιάμεσης μνήμης για ελαχιστοποίηση των Ε/Ε Α) Επειδή ο μεγάλος αριθμός αιτήσεων E/E επιβραδύνουν τον χρόνο απόκρισης και αυξάνουν τις απαιτήσεις σε CPU, η απόδοση του εξυπηρετητή (server) της Oracle μπορεί να βελτιωθεί σημαντικά, όταν οι περισσότερες σελίδες από αυτές που αιτούνται βρίσκονται ήδη στην ενδιάμεση μνήμη. Το μέτρο αυτής της απόδοσης είναι το ποσοστό επιτυχίας (hit ratio) της ενδιάμεσης μνήμης (cache), και αντιστοιχεί στο λόγο του αριθμού των σελίδων που βρίσκονται στη μνήμη προς το συνολικό αριθμό των σελίδων, στις οποίες έχουν προσπελαστεί. Όταν η ενδιάμεση μνήμη του ΣΔΒΔ είναι πολύ μικρή, τότε η απόδοση του συστήματος επιβαρύνεται, εξαιτίας των πολλών αιτήσεων E/E. Θεωρούμε πως ένα σύστημα χρήζει ρύθμισης (tuning) όταν ο παραπάνω λόγος έχει τιμή μικρότερη του 80%. Μερικές από τις προτεινόμενες λύσεις για ρύθμιση είναι και οι παρακάτω: Προσθήκη επιπλέον σελίδων ενδιάμεσης μνήμης. Χρήση πολλαπλών δεξαμενών σελίδων (buffer pools) ενδιάμεσης μνήμης, για το διαχωρισμό των σελίδων ανάλογα με το πρότυπο πρόσβασης σε αυτές. Μεταφορά ενός ή περισσοτέρων πινάκων στην ενδιάμεση μνήμη (αν φυσικά υπάρχει διαθέσιμος χώρος). Α) Για τις παρακάτω επερωτήσεις υπολογίστε τον αριθμό των αναγνώσεων (physical reads) από το δίσκο. 1 η επερώτηση: SELECT FROM GROUP BY ORDER BY year, count(*) movie year year desc;

2 η επερώτηση: SELECT companyid, count(*) FROM distributedby GROUP BY companyid; Β) Υπολογίστε το ποσοστό επιτυχίας (hit ratio) της ενδιάμεσης μνήμης (cache) για την εκτέλεση των παραπάνω ερωτήσεων. Χρειάζεται το σύστημα ρύθμιση (tuning); Δικαιολογήστε την απάντησή σας. Γ) Υπολογίστε το μέγεθος των πινάκων που υπάρχουν στη βάση. Ποιος από αυτούς θα μπορούσε να φορτωθεί στην ενδιάμεση μνήμη για τους λόγους που αναπτύχθηκαν παραπάνω; Δ) Τοποθετήστε τον πίνακα movie στην ενδιάμεση μνήμη. Εκτελέστε τις παραπάνω επερωτήσεις, με τη σειρά που δίνονται, υπολογίζοντας μετά από κάθε μία τον αριθμό των σελίδων που διαβάστηκαν από το δίσκο. Τί παρατηρείτε; Εκτελέστε ξανά την πρώτη επερώτηση και υπολογίστε στη συνέχεια τον αριθμό των σελίδων που διαβάστηκαν από το δίσκο. Τί παρατηρείτε τώρα; Καταργήστε (drop) τον πίνακα movie και ξαναδημιουργήστε τον, φορτώνοντάς του τα δεδομένα από την αρχή. Ζήτημα 2 ο Υπολογισμός του hit ratio Γράψτε ένα SQL query που θα υπολογίζει το hit ratio για την Oracle Για παράδειγμα μπορείτε να προσπελάσετε την τιμή του των physical reads χρησιμοποιώντας την παρακάτω επερώτηση: SELECT VALUE FROM V$SYSSTAT WHERE NAME= psysical reads Ωστόσο, θα πρέπει να γράψετε μια επερώτηση που θα κάνει όλο τον υπολογισμό σε ποσοστό (δηλαδή να μην κάνετε ξεχωριστές επερωτήσεις οι οποίες θα σας επιστρέφουν τιμές που μπορείτε να υπολογίσετε με ένα υπολογιστή τσέπης). Επιπλέον η επερώτηση που θα φτιάξετε θα πρέπει να σας επιστρέφει σε μια δεύτερη τιμή ένα από τα Good, Medium, Bad ανάλογα με τις τελικές τιμές. Επιλέξτε μόνοι σας λογικά όρια για τις τιμές. Ζήτημα 3 ο Εναλλακτικές μορφές επερωτήσεων SQL Αρχικά, ο optimizer_mode έχει την τιμή choose, δηλαδή ο βελτιστοποιητής (optimizer) της Oracle επιλέγει, ανάλογα με την ύπαρξη, ή μη, στατιστικών, μεταξύ μιας προσέγγισης βελτιστοποίησης (optimization) επερωτήσεων, βασισμένης σε μοντέλο κόστους, ή βασισμένης σε ευρηστικούς κανόνες. Α) Ψάχνουμε τα IDs των ταινιών για τις οποίες δεν έχει συμπληρωθεί πληροφορία σχετικά με την εταιρεία διανομής των. Έχουμε, τις ακόλουθες δύο, ισοδύναμες ως προς το αποτέλεσμα,

επερωτήσεις SQL: 1 η επερώτηση: SELECT movieid FROM movie MINUS SELECT movieid FROM distributedby; 2 η επερώτηση: SELECT movieid FROM movie WHERE movieid NOT IN (SELECT movieid FROM distributedby); i) Χρησιμοποιήστε την εντολή EXPLAIN PLAN της Oracle για να δείτε τα σχέδια εκτέλεσης (execution plans) των δύο επερωτήσεων που επιλέγει ως βέλτιστα ο εξυπηρετητής (server). Σχεδιάστε σε μια δεντρική μορφή τα δύο αυτά σχέδια και, στη συνέχεια, περιγράψτε τις λειτουργίες που περιλαμβάνει το καθένα. ii) Πριν εκτελέσετε τις επερωτήσεις, και με βάση τα σχέδια αυτά, ταξινομήστε τις επερωτήσεις ανάλογα με το χρόνο που πιστεύετε ότί θα διαρκέσει η εκτέλεσή τους. Δικαιολογήστε την απάντησή σας. Στη συνέχεια, βρείτε τον χρόνο εκτέλεσης των επερωτήσεων και συγκρίνετε τα αποτελέσματα με την πρόβλεψη που έχετε κάνει. iii) Προτείνετε τρόπους για να επιταχυνθούν οι παραπάνω επερωτήσεις, π.χ. με τη χρήση ευρετηρίων (indeces) και συστάδων (clusters). Εξετάστε αν όντως επιτυγχάνουν να επιταχύνουν την εκτέλεσή τους. B) Ψάχνουμε τα IDs των ταινιών στις οποίες συμμετέχουν ηθοποιοί γεννημένοι μετά τη χρονιά χ, όπου χ = 1930, 1950, 1970, 1990, 1995. Έχουμε τις ακόλουθες δύο, ισοδύναμες ως προς το αποτέλεσμα, επερωτήσεις SQL: 1 η επερώτηση: SELECT pl.movieid FROM people p, plays pl WHERE p.personid = pl.personid and p.birthyear > χ; 2 η επερώτηση: SELECT pl.movieid FROM plays pl WHERE pl.personid IN (SELECT p.personid FROM people p WHERE p.birthyear > χ); i) Βρείτε και δείξτε τα σχέδια εκτέλεσης των παραπάνω επερωτήσεων -δεν εξαρτώνται από την τιμή του χ- και στη συνέχεια συγκρίνετε τους χρόνους εκτέλεσης των επερωτήσεων για τις διάφορες τιμές του χ. Ποια από τις δύο εκτελείται πιο γρήγορα;

ii) Πώς μπορούμε να διατυπώσουμε τις παραπάνω επερωτήσεις ώστε να αξιοποιήσουμε καλύτερα τη διαθέσιμη μνήμη και να βελτιώσουμε την απόδοση εκτέλεσης τους; Ζήτημα 4 ο Βελτιστοποίηση βάσει κόστους Χρησιμοποιήστε την εντολή ALTER SESSION για να θέσετε την τιμή της παραμέτρου OPTIMIZER_MODE σε ALL_ROWS. Με αυτή την επιλογή ο βελτιστοποιητής (optimizer) της Oracle χρησιμοποιεί μία προσέγγιση βελτιστοποίησης (optimization) επερωτήσεων, βασισμένη σε μοντέλο κόστους και προσπαθεί να επιτύχει την καλύτερη δυνατή χρήση των πόρων του συστήματος στην εκτέλεσής τους. Α) Θεωρήστε την παρακάτω επερώτηση πάνω στους πίνακες movie και plays, η οποία περιέχει το γνώρισμα movieid στις συνθήκες του WHERE. Ποιο είναι το σχέδιο επεξήγησης της; Ποιος ο χρόνος εκτέλεσής της; Αλλάζει τίποτα αν στο SELECT προσθέσουμε την δήλωση distinct για απαλοιφή των διπλοεγγραφών; SELECT p.personid FROM movie m, plays p WHERE p.movieid = m.movieid and m.movieid = 0046790; SELECT DISTINCT p.personid FROM movie m, plays p WHERE p.movieid = m.movieid and m.movieid = 0046790; Β) Δημιουργήστε μια συστάδα κατακερματισμού (hash cluster) για το γνώρισμα movieid με 1000 κλειδιά αναζήτησης και σχετίστε τον πίνακα movie με αυτό. Θα πρέπει να καταργήσετε (drop) και να ξαναδημιουργήσετε τον πίνακα movie, για να επωφεληθείτε της συστάδας κατακερματισμού. Ποιο είναι τώρα το σχέδιο εκτέλεσης της προηγούμενης επερώτησης και ποιος ο χρόνος εκτέλεσης; Γ) Καταργήστε (drop) τον πίνακα plays και ξαναδημιουργήστε τον, σχετίζοντας το γνώρισμα movieid με το cluster που έχετε ορίσει από το προηγούμενο ερώτημα. Ποιο είναι το σχέδιο εκτέλεσης της ίδιας ερώτησης και ποιος ο χρόνος εκτέλεσής της; Δ) Βρείτε το σχέδιο εκτέλεσης των παρακάτω επερωτήσεων. Παρατηρείτε κάτι; Στη συνέχεια, δημιουργήστε ένα μη συσταδοποιημένο (unclustered) B + -Tree ευρετήριο για το γνώρισμα year του πίνακα movie και ένα για το γνώρισμα birthyear του πίνακα people. Ποιο είναι τώρα το πλάνο εκτέλεσης των παρακάτω επερωτήσεων SQL; SELECT movietitle FROM movie WHERE year > 1990; SELECT personname FROM people WHERE birthyear > 1945; Ε) Βρείτε το σχέδιο εκτέλεσης των ακόλουθων επερωτήσεων SQL στον πίνακα movie που περιέχουν τα γνωρίσματα movieid και year στις συνθήκες επιλογής. Χρησιμοποιείται η συστάδα κατακερματισμού (hash cluster) στο movieid ή το B + -Tree ευρετήριο στο γνώρισμα year; Σε Τί

οφείλεται τυχόν ύπαρξη διαφορετικών σχεδίων εκτέλεσης; SELECT movieid, movietitle FROM movie WHERE movieid!= 0046790 and year > 1985; SELECT movieid, movietitle FROM movie WHERE movieid = 0046790 and year > 1985; Ζήτημα 5 ο Βελτιστοποίηση βάσει κανόνων Σε αυτό το σημείο της άσκησης πρέπει να υπάρχει ορισμένη μια συστάδα κατακερματισμού (hash cluster) για το γνώρισμα movieid, που χρησιμοποιείται από τους πίνακες movie και plays. Επίσης, υπάρχουν δύο μη συσταδοποιημένα (unclustered) B + -Tree ευρετήρια για τα γνωρίσματα year και birthyear των πινάκων movie και people, αντίστοιχα. Χρησιμοποιήστε την εντολή ALTER SESSION για να θέσετε την τιμή της παραμέτρου OPTIMIZER_MODE σε RULE. Με αυτή την επιλογή ο βελτιστοποιητής (optimizer) της Oracle χρησιμοποιεί μία προσέγγιση βελτιστοποίησης (optimization) επερωτήσεων, βασισμένη αποκλειστικά σε ευρηστικούς κανόνες, αδιαφορώντας για την ύπαρξη στατιστικών. Α) Εκτελέστε εκ νέου το ερώτημα (Δ) του 4 ου ζητήματος. Υπάρχει κάποια διαφορά στα πλάνο εκτέλεσης. Αν ναι, συγκρίνετε τους χρόνους εκτέλεσης. Β) Ορίστε για το γνώρισμα movietitle του πίνακα ένα μοναδικό μη-συσταδοποιημένο B + -Tree ευρετήριο. Βρείτε το σχέδιο εκτέλεσης της παρακάτω SQL επερώτησης. Χρησιμοποιείται η συστάδα κατακερματισμού (hash cluster) ή το ευρετήριο που μόλις ορίσατε και γιατί; SELECT m.movieid, m.movietitle, p.companyid FROM movie m, producedby p WHERE m.movieid = p.movieid and m.movieid = 0046799 and m.movietitle = 'Boot Polish (1954)'; Καταργήστε (drop) το ευρετήριο στο movietitle. Ζήτημα 6 ο Σύγκριση μεθόδων βελτιστοποίησης Σε αυτό το σημείο της άσκησης πρέπει να υπάρχει ορισμένη μια συστάδα κατακερματισμού (hash cluster) στο γνώρισμα movieid που χρησιμοποιείται από τους πίνακες movie και plays. Επίσης, υπάρχουν δύο μη συσταδοποιημένα B + -Tree ευρετήρια για τα γνωρίσματα year και birthyear των πινάκων movie και people αντίστοιχα. Τέλος, ο optimizer_mode πρέπει να είναι RULE. Α) Για κάθε έναν από τους τρεις τύπους OPTIMIZATION_MODE (RULE, FIRST_ROWS, ALL_ROWS) βρείτε το πλάνο και το χρόνο εκτέλεσης της παρακάτω επερώτησης SQL: SELECT /*+ ORDERED USE_HASH(p,pl) */ pl.movieid FROM people p, plays pl WHERE p.personid = pl.personid and p.birthyear > 1990;

Β) Καταργήστε (drop) το ευρετήριο για το γνώρισμα birthyear και επαναλάβετε το ερώτημα (Α). Για την ίδια παράμετρο βελτιστοποίησης (mode) παρατηρείτε κάποια διαφοροποίηση ανάμεσα στις δύο επερωτήσεις; Γ) Δημιουργήστε ένα bitmap ευρετήριο για το γνώρισμα birthyear. Επαναλάβετε και πάλι το ερώτημα (Α). Τί διαφορές παρατηρείτε σχετικά με τη χρήση bitmap ευρετηρίων; Δ) Συγκρίνετε τους χρόνους εκτέλεσης των επερωτήσεων (Α), (Β) και (Γ) για κάθε παράμετρο (mode) βελτιστοποίησης. Τί διαφορές παρατηρείτε; Ε) Καταργήστε (drop) τον πίνακα people και ξαναδημιουργήστε τον, ορίζοντας ένα συσταδοποιημένο (clustered) B + -Tree ευρετήριο στο γνώρισμα birthyear. Για κάθε έναν από τους τρεις τύπους OPTIMIZATION_MODE (RULE, FIRST_ROWS, ALL_ROWS) βρείτε το πλάνο και το χρόνο εκτέλεσης της επερώτησης του ερωτήματος (Α). Παρατηρείτε κάποια διαφορά σε σχέση με τη προηγουμένη χρήση μη- συσταδοποιημένου (unclustered) B + -Tree ευρετηρίου; Ζήτημα 7 ο Χρήση του Oracle SQL Access Advisor Στο σημείο αυτό θα χρησιμοποιήσετε τον SQL Access Advisor της Oracle. Το εργαλείο αυτό χρησιμοποιείται για την αυτόματη ανάλυση ενός συνόλου δεδομένων και επερωτήσεων και την πρόταση μεθόδων που θα βελτιστοποιήσουν την πρόσβαση στα δεδομένα. Α) Κάντε drop την βάση σας και ξαναδημιουργήστε την. Στη συνέχεια εκτελέστε το query SELECT pl.movieid FROM people p, plays pl WHERE p.personid = pl.personid and p.birthyear > 1990; Εκτελέστε τον SQL Access Advisor (οδηγίες εδώ https://oracle-base.com/articles/11g/sql-accessadvisor-11gr1#dbms_advisor) και αναλύστε τις προτάσεις του για την βελτιστοποίηση της συγκεκριμένης επερώτησης και τα αντίστοιχα γραφήματα που βγάζει. Β) Υλοποιήστε τις προτάσεις του αναφορικά με τα materialized views και μετρήστε το χρόνο εκτέλεσης για το παραπάνω query. Αναλύστε τα αποτελέσματα. Τί διαφορές παρατηρείτε σε σχέση με τις προσεγγίσεις του Ζητήματος 6. Γ) Ποιό το κόστος που «πληρώσατε» στην συγκεκριμένη υλοποίηση. Ποιά θα ήταν τελικά η προσέγγιση σας προσπαθώντας να βελτιστοποιήσετε την παραπάνω επερώτηση?