ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΓΑΣΤΗΙΟ 4

Σχετικά έγγραφα
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΓΑΣΤΗΙΟ 3

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

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

Ιδιότθτεσ πεδίων Γενικζσ.

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

Ειδικά Θζματα Βάςεων Δεδομζνων

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

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

Αςκιςεισ ςε (i) Δομζσ Ευρετθρίων και Οργάνωςθ Αρχείων (ii) Κανονικοποίθςθ

Κατά τθν ενεργοποίθςθ τθσ ιδιότθτασ αυτισ ενδζχεται να εμφανιςτεί ζνα μινυμα ςαν αυτό τθσ παρακάτω εικόνασ. Απλά επιβεβαιϊςτε πατϊντασ ΟΚ.

Πωσ δθμιουργώ φακζλουσ;

SingularLogic Galaxy. Οδηγίες εγκαηάζηαζης Galaxy

ΒΑΣΕΛΣ ΔΕΔΟΜΕΝΩΝ ΕΓΑΣΤΘΛΟ 5

Joomla! - User Guide

Διαδικασία Δημιοσργίας Ειδικών Λογαριασμών. (v.1.0.7)

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Ειδικά Θζματα Βάςεων Δεδομζνων

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Ειδικά Θζματα Βάςεων Δεδομζνων

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

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

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

GNSS Solutions guide. 1. Create new Project

Ειδικά Θζματα Βάςεων Δεδομζνων

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 12 θ Διάλεξθ Διαχείριςθ Αρχείων

Εργαςτιριο Βάςεων Δεδομζνων

Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ

Κάνουμε κλικ ςτθν επιλογι του οριηόντιου μενοφ «Get Skype»για να κατεβάςουμε ςτον υπολογιςτι μασ το πρόγραμμα του Skype.

ςυςτιματα γραμμικϊν εξιςϊςεων

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

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

17. Πολυδιάςτατοι πίνακεσ

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών. (v )

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΗ. του ΙΑΣΡΟΦΑΡΜΑΚΕΤΣΙΚΟΤ ΦΑΚΕΛΟΤ ΑΘΕΝΩΝ Για τον ΟΙΚΟ ΝΑΤΣΟΤ ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ. iknowhow Πληροφορική A.E

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Εφδοξοσ+ Συνδεκείτε ςτθν Εφαρμογι Φοιτθτϊν και μεταβείτε ςτθ ςελίδα «Ανταλλαγι Βιβλίων (Εφδοξοσ+)».

Πωσ δημιουργώ μάθημα ςτο e-class του ΠΣΔ [επίπεδο 1]

1. Κατέβαςμα του VirtueMart

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Εγχειρίδιο Χρήςησ Support

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

Βάςεισ Δεδομζνων Ι. Ενότητα 7: Ειςαγωγή ςτην γλώςςα_sql. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

Σφςτημα Κεντρικήσ Υποςτήριξησ τησ Πρακτικήσ Άςκηςησ Φοιτητών ΑΕΙ

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Οδηγίεσ για την πρόςβαςη των δικαιοφχων ςτο ΟΠΣΑΑ

Εγχειρίδιο Χρήςησ Αυτοματοποίηςησ Κυκλώματοσ Πληρωμών ΟΛΠ μζςω e-banking VERSION <Final>

assessment.gr USER S MANUAL (users)

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

Σφντομεσ Οδθγίεσ Χριςθσ

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Μθχανολογικό Σχζδιο, από τθ κεωρία ςτο πρακτζο Χριςτοσ Καμποφρθσ, Κων/νοσ Βαταβάλθσ

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

1. Διαχείριςη ενθεμάτων

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Επιμελητήρια)

Αςφάλεια και Προςταςία Δεδομζνων

Η γλώςςα προγραμματιςμού C

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

Δομζσ Δεδομζνων Πίνακεσ

Οδθγίεσ Ρρόςβαςθσ Στισ Εφαρμογζσ EMCS και AIS Και τθν Διαχείριςθ Ηλεκτρονικϊν Εξουςιοδοτιςεων

Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό. Διάλεξθ 10

ΟΔΗΓΙΕ ΓΙΑ ΣΗΝ ΕΙΑΓΩΓΗ ΕΚΔΡΟΜΩΝ & ΝΕΩΝ - ΑΝΑΚΟΙΝΩΕΩΝ ΣΗΝ ΙΣΟΕΛΙΔΑ ΣΗ Δ.Δ.Ε. ΘΕΠΡΩΣΙΑ

ΕΝΟΤΘΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 6: Θ «Βοικεια» ςτον Υπολογιςτι

Οδηγίες Πρόζβαζης ζηο EndNote Web. Πρόζβαζη ζηο EndNote Web

Αςφάλεια και Προςταςία Δεδομζνων

Slide 1. Εισαγωγή στη ψυχρομετρία

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

SingularLogic Application. Παραμετροποίηση Galaxy Application Server

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

Θεςιακά ςυςτιματα αρίκμθςθσ

Τμήματα Μνήμησ Υπολογιςμόσ Φυςικών διευθύνςεων. Εκπαιδεφτρια: Μαρία Πολίτθ

Transcript:

ΠΑΝΕΠΙΣΗΜΙΟ ΠΕΙΡΑΙΩ ΣΜΗΜΑ ΨΗΦΙΑΚΩΝ ΤΣΗΜΑΣΩΝ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΓΑΣΤΗΙΟ 4 ΔΕΣΡΟΙΝΑ ΡΑΡΑΚΩΝΣΤΑΝΤΙΝΟΥ dpap@unipi.gr

INDEXES

ΕΥΕΤΗΙΟ (INDEX) Το ευρετιριο (index) είναι ζνα αντικείμενο δεδομζνων μζςα ςτθ βάςθ δεδομζνων που καταγράφει τισ γραμμζσ του πίνακα ςε τζτοια ςειρά, ϊςτε να γίνεται γριγορθ αναηιτθςθ Κάκε ευρετιριο κάκε πίνακα είναι ζνα ξεχωριςτό αντικείμενο. Τα πρωτεφοντα και τα δευτερεφοντα κλειδιά είναι αυτόματα καταχωρθμζνα ςτα ευρετιρια. Γριγορθ πρόςβαςθ ςε ευρετθριοποιθμζνεσ ςτιλεσ Κάκε ευρετιριο μπορεί να ανανεωκεί όταν μια γραμμι ανανεϊνεται, γεγονόσ που ζχει ωσ αποτζλεςμα τα ευρετιρια μασ να δείχνουν τισ αλλαγζσ που ζχουν λάβει χϊρα (ανανεϊςεισ, προςκικεσ, διαγραφζσ). Η καλφτερθ και πιο πρακτικι μζκοδοσ είναι να ζχουμε 3 ι 4 ευρετιρια ανά πίνακα. Αν χρειάηονται και περιςςότερα, μποροφμε ανά περίπτωςθ να κάνουμε προςκικθ (add) και διαγραφι (drop) για όςο χρειάηονται. Εάν μια βάςθ δεδομζνων περιλαμβάνει ωσ επί το πλείςτον ανανεϊςεισ, το καλφτερο είναι να χρθςιμοποιιςουμε όςο λιγότερα ευρετιρια γίνεται. Συγκροτθμζνα (Clustered) ευρετιρια Ανακατανζμουν τισ γραμμζσ βάςει ενόσ μοναδικοφ ευρετθρίου, ϊςτε να μεγιςτοποιοφν τθν ταχφτθτα πρόςβαςθσ ςτο δίςκο.

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΩΝ Ζχουμε τον πίνακα Customer Customer ID είναι το πρωτεφον κλειδί Θζλουμε να κάνουμε αναηιτθςθ βάςει των ακολοφκων: Customer name (last, first) City, state Postal (zip) code Address Δθμιουργοφμε ευρετιρια για τα εξισ: name, city/state, zip και address Ζχουμε λοιπόν 4 ευρετιρια: αργό insert, update, delete, αλλά γριγορο lookup Εάν θ βάςθ δεδομζνων είναι αρκετά ςτακερι, τότε όλα είναι μια χαρά. ΣΥΝΤΑΞΗ create index ονομα_ευρετθρίου on πίνακασ (ςτιλθ);

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (1/18) Ρολλζσ φορζσ δε φαίνεται διαφορά ςτθν ταχφτθτα των SQL επερωτιςεων όταν υπάρχουν ι όχι ευρετιρια. Οι λόγοι είναι οι εξισ: Απαιτείται πολφ μεγάλοσ αρικμόσ εγγραφϊν προκειμζνου να γίνει αντιλθπτι θ διαφορά. Ο SQL Server διατθρεί αυτόματα ςτατιςτικά δεδομζνα για κάκε ςτιλθ χωριςτά, τα οποία ζχουν τθν μορφι ιςτογραμμάτων και τα οποία χρθςιμοποιοφνται ωσ ευρετιρια όταν δεν ζχουν δθμιουργθκεί ρθτϊσ ευρετιρια ςτισ αντίςτοιχεσ ςτιλεσ. Τα ευρετιρια βοθκοφν τον SQL Server να αναηθτιςει τα δεδομζνα πιο γριγορα. Για να καταλάβουμε γιατί είναι χριςιμα τα ευρετιρια πρζπει να ξζρουμε τα εξισ: Ο SQL Server αποκθκεφει τα δεδομζνα ςε ςελίδεσ (pages) Το μζγεκοσ τθσ ςελίδασ είναι προκακοριςμζνο -> 8KB (αν ζχουμε ζναν πίνακα που ζχει 1000B μζγεκοσ γραμμισ, μποροφμε να αποκθκεφςουμε 8 γραμμζσ ανά ςελίδα. Υπάρχουν πολλοί τφποι ςελίδων, εμείσ ασ επικεντρωκοφμε ςτισ ςελίδεσ δεδομζνων (data pages).

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (2/18) Πςο πιο πολλζσ πλιρεισ ςελίδεσ δεδομζνων ζχουμε: Τόςο μεγαλφτερθ ΒΔ ζχουμε Τόςο περιςςότερο χρόνο χρειάηεται για να φτάςουμε ςε μια ςυγκεκριμζνθ γραμμι. Αν ο πίνακασ μασ δεν ζχει ευρετιρια, αυτό ςθμαίνει ότι οι γραμμζσ ςτισ ςελίδεσ δεδομζνων αποκθκεφονται χωρίσ καμία ςυγκεκριμζνθ ςειρά. Το πικανότερο είναι ότι αποκθκεφονται με τθ ςειρά με τθν οποία ειςιχκθςαν. Οπότε τα ευρετιρια χρθςιμοποιοφνται για να οργανϊςουμε τισ ςελίδεσ δεδομζνων μασ.

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (3/18) Clustered ευρετιριο Η λογικι ςειρά ςτο ευρετιριο ακολουκεί τθ φυςικι ςειρά των γραμμϊν ςτον πίνακα Ζχουμε ζνα clustered ευρετιριο ανά πίνακα Συνικωσ είναι πιο γριγορο από το non-clustered ευρετιριο. Αν πχ το customer_id χρθςιμοποιείται για ζνα clustered ευρετιριο, τα δεδομζνα κα αναταξινομθκοφν βάςθ αυτοφ του κλειδιοφ. Non-clustered ευρετιριο: Αυτά τα ευρετιρια χρθςιμοποιοφν δείκτεσ για να μασ φζρνουν τα δεδομζνα. Μποροφμε να ζχουμε παραπάνω από ζνα non-clustered ευρετιριο ανά πίνακα. Είναι πιο αργό από το clustered ευρετιριο.

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (4/18) AUTOMATIC STATISTICS Οι SQL Server ΒΔ αυτόματα δθμιουργοφν και ανανεϊνουν ςτατιςτικά. Ο SQL Server χρειάηεται αυτά τα ςτατιςτικά για να κάνει αποτελεςματικά το query processing. Η πλθροφορία που αποκθκεφεται περιλαμβάνει: Τον αρικμό των γραμμϊν και των ςελίδων που απαςχολοφνται από τα δεδομζνα του πίνακα Τθ χρονικι ςτιγμι κατά τθν οποία ανανεϊκθκαν για τελευταία φορά τα ςτατιςτικά Το μζςο μικοσ των κλειδιϊν μιασ ςτιλθσ Ιςτογράμματα που δείχνουν τθν κατανομι των δεδομζνων ςε μια ςτιλθ Μποροφμε να δοφμε αυτά τα ςτατιςτικά ςε κάκε πίνακα του SQL Server, είτε μζςω τθσ T-SQL είτε μζςω τθσ SQL Server Management Studio διεπαφισ χριςτθ. T-SQL επιλογι: sp_helpstats indextesting, 'ALL', θ οποία δίνει μια λίςτα με όλα τα ςτατιςτικά που ζχουν αποκθκευκεί αναφορικά με ζναν ςυγκεκριμζνο πίνακα.

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (5/18) Με τθν εκτζλεςθ των παρακάτω script διαφαίνεται θ ςυνειςφορά των ευρετθρίων ΔΗΜΙΟΥΓΙΑ ΒΔ (πχ test_indexes) ΔΗΜΙΟΥΓΙΑ ΡΙΝΑΚΑ create table indextesting (column1 int, column2 int); ΕΙΣΑΓΩΓΗ 1.500.000 ΕΓΓΑΦΩΝ DECLARE @i int SELECT @i = 1 while (@i<1500000) begin End SELECT @i = @i+1; insert into indextesting values (@i, 10000000-@i); ΕΚΤΕΛΕΣΗ ΕΡΕΩΤΗΣΗΣ (χωρίσ INDEX, χωρίσ STATISTICS) select column1, column2 from indextesting where column1 = 5000000; Περίπου 2 sec

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (6/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (7/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (8/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (9/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (10/18) ΚΑΘΑΙΣΜΟΣ ΤΗΣ CACHE DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE ΕΡΑΝΑΛΗΨΗ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΗΣ ΡΟΗΓΟΥΜΕΝΗΣ ΕΡΕΩΤΗΣΗΣ (χωρίσ INDEX, με STATISTICS) select column1, column2 from indextesting where column1 = 5000000; Clear the procedure cache: SQL Server compile new plans the next time those procedures are run Clear the data cache: Any data loaded into the buffer cache due to the prior execution of a query is removed Περίπου 0,5 sec

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (11/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (12/18) ΔΙΑΓΑΦΗ ΣΤΑΤΙΣΤΙΚΩΝ drop statistics indextesting._wa_sys_00000001_79c80f94 ΡΟΣΟΧΗ: Το _WA_Sys_00000001_79C80F94 όνομα επιλζγεται τυχαία από τον SQL Server. Συνεπϊσ ο χριςτθσ κα πρζπει να ανοίξει τον φάκελο statistics κάτω από τον πίνακα indextesting για να δει το εκάςτοτε όνομα. ΚΑΘΑΙΣΜΟΣ ΤΗΣ CACHE DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE ΕΡΑΝΑΛΗΨΗ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΗΣ ΡΟΗΓΟΥΜΕΝΗΣ ΕΡΕΩΤΗΣΗΣ (χωρίσ INDEX, χωρίσ STATISTICS) select column1, column2 from indextesting where column1 = 5000000; Περίπου 2 sec

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (13/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (14/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (15/18) ΔΗΜΙΟΥΓΙΑ ΕΥΕΤΗΙΟΥ create index indextesting_column1 on indextesting (column1); ΔΙΑΓΑΦΗ ΣΤΑΤΙΣΤΙΚΩΝ ΓΙΑ ΤΗ ΣΤΗΛΗ column1 drop statistics indextesting._wa_sys_00000001_79c80f94 ΚΑΘΑΙΣΜΟΣ ΤΗΣ CACHE DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE ΕΡΑΝΑΛΗΨΗ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΗΣ ΡΟΗΓΟΥΜΕΝΗΣ ΕΡΕΩΤΗΣΗΣ (με INDEX, χωρίσ STATISTICS) select column1, column2 from indextesting where column1 = 5000000; Περίπου 0,1 sec

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (16/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (17/18)

ΡΑΑΔΕΙΓΜΑ ΕΥΕΤΗΙΑ (18/18)

ΔΟΣΟΛΗΨΙΕΣ (TRANSACTIONS)

ΔΟΣΟΛΗΨΙΕΣ Μζχρι ςτιγμισ κεωροφςαμε δεδομζνο ότι υπάρχει μόνο ζνασ DB χριςτθσ που εκτελεί μία SQL διλωςθ κάκε φορά. Στθν πραγματικότθτα όμωσ, ζνα ςφςτθμα βάςεων δεδομζνων μπορεί να ζχει πολλοφσ παράλλθλουσ χριςτεσ. Κάκε χριςτθσ μπορεί να ςυντάξει μια ςυνζχεια από SQL δθλϊςεισ, οι οποίεσ ςτο ςφνολο τουσ αποτελοφν μια λογικι μονάδα (δοςολθψία - transaction). Το ςφςτθμα βάςεων δεδομζνων είναι υπεφκυνο να ηθτιςει τισ SQL δθλϊςεισ από διαφορετικοφσ χριςτεσ με ζναν τρόπο, ϊςτε να παράγει τα ίδια αποτελζςματα που κα παράγονταν ςτθν περίπτωςθ που οι δθλϊςεισ κα εκτελοφνταν ςε ζνα ςενάριο ενόσ μοναδικοφ χριςτθ (serializable). Το πρόγραμμα του χριςτθ μπορεί να περιλαμβάνει πολλζσ λειτουργίεσ πάνω ςτα δεδομζνα που ζχουν ανακτθκεί από τθ ΒΔ, αλλά το ςφςτθμα διαχείριςθσ βάςεων δεδομζνων (DBMS) αςχολείται μόνο με το ποια δεδομζνα διαβάηονται/γράφονται από/ςτθν ΒΔ. Μια δοςολθψία είναι θ αφθρθμζνθ όψθ του DBMS ενόσ προγράμματοσ χριςτθ: μια ςυνζχεια από DB reads (R) και writes (W). T: A=A+100, B=B-100 T: R(A), W(A), R(B), W(B) time User s view System s view

ΤΙ ΕΙΝΑΙ ΔΟΣΟΛΗΨΙΑ (TRANSACTION) A transaction is a sequence of one or more SQL statements that together form a logical piece of work - Groff & Weinberg Πλεσ οι δθλϊςεισ μζςα ςτθ δοςολθψία ΡΕΡΕΙ να εκτελεςκοφν. Σε διαφορετικι περίπτωςθ, τα δεδομζνα μπορεί να είναι αςυνεπι και θ ακεραιότθτα να τίκεται ςε κίνδυνο. Μια δοςολθψία είναι μια ατομικι μονάδα: είναι μια πρόταςθ, βάςει τθσ οποίασ ΠΛΕΣ οι δθλϊςεισ πρζπει να εκτελεςκοφν επιτυχϊσ. Σε αντίκετθ περίπτωςθ ΚΑΜΙΑ δεν πρόκειται να εκτελεςκεί. Μερικζσ δοςολθψίεσ ΔΕΝ γίνονται ποτζ επιτρεπτζσ. Μια ςτακεροφσ κατάςταςθσ βάςθ δεδομζνων είναι αυτι ςτθν οποία ικανοποιοφνται όλοι οι περιοριςμοί που ζχουν τεκεί, αναφορικά με τθν ακεραιότθτα των δεδομζνων. ΡΑΑΔΕΙΓΜΑ: κατά τθ διάρκεια τθσ δοςολθψίασ, καμία άλλθ δοςολθψία δεν πρζπει να προςβάςει τον Χ.

ΙΔΙΟΤΗΤΕΣ ΔΟΣΟΛΗΨΙΩΝ (ACID ΙΔΙΟΤΗΤΕΣ) ΑΡΑΙΤΗΣΕΙΣ ΓΙΑ ΤΙΣ ΔΟΣΟΛΗΨΙΕΣ Ατομικότθτα (Atomicity): είτε εκτελοφνται όλεσ οι δοςολθψίεσ, είτε όλεσ γυρίηουν πίςω (roll back). Account transfer debit and credit both succeeded or both failed Συνζπεια (Consistency): μόνο ορκά states μποροφν να υπάρξουν. If order detail cannot be written, order header is rolled back Απομόνωςθ/Ανεξαρτθςία (Isolation/Indepedence): τα αποτελζςματα δεν είναι ορατά από άλλεσ δοςολθψίεσ, μζχρι θ δοςολθψία να ολοκλθρωκεί (ςειριοποιηςιμότητα - serializability). Account transfer debit and credit either both seen or neither is seen Αντοχι (Durability): τα δεδομζνα διατθροφνται ακόμθ και ςτθν περίπτωςθ που υπάρξει πρόβλθμα ςτο hardware ι ςτο software. Account balance is maintained Αυτζσ οι απαιτιςεισ ονομάηονται ACID ιδιότθτεσ των δοςολθψιϊν. Το DBMS διαςφαλίηει τθν ατομικότθτα, τθ ςυνζπεια, τθν ανεξαρτθςία και τθν αντοχι των δοςολθψιϊν. Η ςειριοποιθςιμότθτα (Serializability) διαςφαλίηει τθν ανεξαρτθςία των δοςολθψιϊν.

Τα περιςςότερα εμπορικά SQL προϊόντα ακολουκοφν το ANSI/ISO Transaction Model, το οποίο προςδιορίηει τουσ ρόλουσ των COMMIT και ROLLBACK. Μια δοςολθψία αρχικοποιείται από τθν πρϊτθ SQL διλωςθ που εκτελείται. Θεωρείται δεδομζνο ότι κάκε SQL διλωςθ (κάκε επερϊτθςθ/query ι τροποποίθςθ ςτθ ΒΔ ι ςτο ςχιμα τθσ) αντιμετωπίηεται ωσ ξεχωριςτι δοςολθψία. Οι δοςολθψίεσ μποροφν να προςδιοριςκοφν ωσ εξισ: START TRANSACTION; <sequence of SQL statements> COMMIT; or ROLLBACK; TRANSACTIONS IN SQL Με τθν SQL το ANSI / ISO Transaction Model προςδιορίηει ότι: O επιτυχισ τερματιςμόσ του προγράμματοσ ςθματοδοτεί το τζλοσ τθσ δοςολθψίασ και τθν πραγματοποίθςθ ανανεϊςεων ςτα δεδομζνα Ο μθ φυςιολογικόσ τερματιςμόσ του προγράμματοσ ςταματά τθ δοςολθψία και οι ανανεϊςεισ των δεδομζνων αναιροφνται.

COMMIT Statement: COMMIT ΚΑΙ ROLLBACK (1/2) Λαμβάνει χϊρα ςτο τζλοσ κάκε επιτυχϊσ ολοκλθρωμζνθσ δοςολθψίασ. Τερματίηει επιτυχϊσ τθν τρζχουςα δοςολθψία, αλλά δεν αρχίηει αυτόματα κάποια καινοφρια. Κάνει μόνιμεσ όλεσ τισ τροποποιιςεισ που ζχουν γίνει κατά τθ διάρκεια τθσ δοςολθψίασ. Τα δεδομζνα που ζχουν ειςαχκεί και ανανεωκεί ςτθ ΒΔ διατθροφνται που ςθμαίνει ότι θ δοςολθψία δεν μπορεί να γυρίςει ςε προθγοφμενθ φάςθ, παρά μόνο ςτθν περίπτωςθ που εκτελεςκεί το αντίκετο ςφνολο των δθλϊςεων με αντίςτροφθ ςειρά. ROLLBACK Statement: Αναιρεί όλεσ τισ τροποποιιςεισ που ζχουν γίνει ςτθ ΒΔ, οπότε αναιρείται και το αποτζλεςμα των εκτελεςμζνων SQL δθλϊςεων Επαναφζρει τθ ΒΔ ςτθν κατάςταςθ ςτθν οποία βριςκόταν ακριβϊσ μετά από τθν πιο πρόςφατθ COMMIT διλωςθ.

COMMIT KAI ROLLBACK (2/2) DATABASE BEFORE DATABASE BEFORE DAT ABASE BEFORE INSERT INSERT INSERT UPDATE UPDATE UPDATE INSERT INSERT HARDWARE FAILURE DELETE ERROR! DATABASE AFTER

READ-ONLY ΔΟΣΟΛΗΨΙΕΣ Μια δοςολθψία που απλϊσ διαβάηει μια ΒΔ και δεν γράφει ςε αυτι, μπορεί εφκολα να ςειριοποιθκεί με άλλεσ read-only δοςολθψίεσ. Αυτό ςθμαίνει ότι οι read-only δοςολθψίεσ δεν χρειάηεται να περιμζνουν θ μία να ολοκλθρωκεί θ άλλθ. Για να ορίςουμε ότι θ επόμενθ διλωςθ πρόκειται να είναι readonly, γράφουμε το εξισ: SET TRANSACTION READ ONLY;

ΣΕΙΙΟΡΟΙΗΣΙΜΟΤΗΤΑ (SERIALIZABILITY) (1/2) Θεωρείςτε δφο χριςτεσ που κζλουν ταυτόχρονα να κλείςουν μια κζςθ για μια ςυγκεκριμζνθ πτιςθ: βρίςκουν μια άδεια κζςθ και κάνουν τθν κράτθςθ (τθ κζτουν occupied). Σε ζνα ςφςτθμα χωρίσ περιοριςμοφσ, οι λειτουργίεσ τουσ κα μποροφςαν να εκτελεςκοφν με τθ ςυγκεκριμζνθ ςειρά: T1: find empty book seat 22A seat 22A, T2: find empty book seat 22A seat 22A, time Ροιοσ χριςτθσ κα κρατιςει τελικά τθ κζςθ 22A? Για να αποφφγουμε αυτό το πρόβλθμα, πρζπει να κεωριςουμε τθ ςυνζχεια των επερωτθμάτων τθσ δοςολθψίασ ενόσ χριςτθ ωσ μια μονάδα. Επερωτιματα από δφο διαφορετικζσ δοςολθψίεσ χρθςτϊν πρζπει να μπουν ςε μια ςειρά, ζτςι ϊςτε και οι δφο δοςολθψίεσ να εκτελοφνται ςειριακά (θ δοςολθψία 1 πριν τθ δοςολθψία 2 ι θ δοςολθψία 2 πριν τθ δοςολθψία 1). Στο παράδειγμα μασ, είτε ο χριςτθσ 1 ι ο χριςτθσ 2 κα κρατιςουν τθ κζςθ 22A. Ο άλλοσ χριςτθσ κα δει τθ κζςθ 22A ωσ occupied και κα πρζπει να βρει άλλθ κζςθ.

ΣΕΙΙΟΡΟΙΗΣΙΜΟΤΗΤΑ (SERIALIZABILITY) (2/2) Η Σειριοποιθςιμότθτα (Serializability) ςυνικωσ διαςφαλίηεται μζςω του κλειδϊματοσ (locking) των αντικειμζνων τθσ ΒΔ ωσ read ι written. Ρριν να διαβαςκεί ι να εγγραφεί ζνα αντικείμενο ΒΔ (πίνακασ ι πλειάδα), θ δοςολθψία πρζπει να εξαςφαλίςει το κατάλλθλο κλείδωμα. Τα κλειδϊματα ςυνικωσ ελευκερϊνονται μόνο κατά το τζλοσ τθσ δοςολθψίασ. Εάν μια δοςολθψία δεν μπορεί να πάρει το κλείδωμα που του ηθτικθκε, πρζπει να περιμζνει ζωσ ότου απελευκερωκεί από μια άλλθ δοςολθψία που το ζχει τθν τρζχουςα χρονικι ςτιγμι.

ΑΤΟΜΙΚΟΤΗΤΑ (ATOMICITY) Μζχρι αυτι τθ ςτιγμι, ζχουμε επίςθσ κεωριςει ότι όλεσ οι SQL δθλϊςεισ εκτελοφνται ςωςτά. Στθν πραγματικότθτα, μποροφν να ςυμβοφν πολλοί τφποι ςφαλμάτων ςτο ςφςτθμα, κατά τθν εκτζλεςθ τθσ δοςολθψίασ ενόσ χριςτθ Τθ ςτιγμι που το ςφςτθμα μασ παρουςιάηει κάποιο ςφάλμα, οι δοςολθψίεσ είναι ανολοκλιρωτεσ: κάποιεσ, αλλά όχι όλεσ οι SQL δθλϊςεισ τουσ ζχουν εκτελεςτεί. Θεωροφμε μια δοςολθψία τραπζηθσ T: T: A=A+100, B=B-100 time Η δοςολθψία T μεταφζρει 100 από το λογαριαςμό του B ςτο λογαριαςμό του A. Τι κα ςυμβεί αν το ςφςτθμα παρουςιάςει ςφάλμα ακριβϊσ μετά τθν εκτζλεςθ τθσ πρϊτθσ διλωςθσ τθσ Τ, πριν δθλαδι τθν εκτζλεςθ τθσ δεφτερθσ διλωςθσ τθσ δοςολθψίασ? Το ςφςτθμα βάςθσ δεδομζνων κα πρζπει να διαςφαλίςει ότι κάκε δοςολθψία αντιμετωπίηεται ωσ μια ατομικι μονάδα (είτε όλεσ οι SQL δθλϊςεισ εκτελοφνται, είτε καμία).

ΡΑΑΔΕΙΓΜΑ ACID ΙΔΙΟΤΗΤΩΝ Ζςτω οτι κζλουμε να μεταφζρουμε 50 από το λογαριςμό Α ςτο λογαριαςμό Β. read(a); A := A - 50; write(a); read(b); B := B + 50; write(b); Σε ότι αφορά τθ ΒΔ: R(A); W(A); R(B); W(B); Σφμφωνα με τισ ιδιότθτεσ ACID πρζπει κατά τθ διάρκεια τθσ μεταφοράσ χρθμάτων από τον ζνα λογαριαςμό ςτον άλλο να διαςφαλίηονται: Ατομικότθτα, Συνζπεια, Απομόνωςθ και Αντοχι.

Ατομικότθτα ΡΑΑΔΕΙΓΜΑ ACID ΙΔΙΟΤΗΤΩΝ H δοςολθψία αποτελείται από πολλζσ ενζργειεσ, όμωσ δεν είναι δυνατόν να εκτελεςτοφν μερικζσ μόνο από αυτζσ για διάφορουσ λόγουσ (π.χ. γιατί κατά τθ διάρκεια εκτζλεςθσ το ςφςτθμα αποτυγχάνει). Αυτό ζχει ωσ αποτζλεςμα να παραβιαςτοφν κάποιοι κανόνεσ και μαηί μ αυτοφσ και θ ςυνζπεια τθσ βάςθσ. Ζτςι, αν θ δοςολθψία αποτφχει μετά το βιμα 3 και πριν το βιμα 6 το ςφςτθμα κα πρζπει να εξαςφαλίςει ότι τα updates του δεν αντανακλϊνται ςτθ βάςθ, εκτόσ και αν προκφψει μια αςυνζπεια. A: 150 B: 200 read(a); A := A - 50; write(a); --CRASH-- read(b); B := B + 50; write(b); A: 100 B: 200 Το DBMS εξαςφαλίηει ότι θ ατομικότθτα κα διατθρθκεί, αναιρϊντασ όλεσ τισ δοςολθψίεσ που αποτυγχάνουν. Α + Β = 350 Α + Β = 300

Συνζπεια ΡΑΑΔΕΙΓΜΑ ACID ΙΔΙΟΤΗΤΩΝ Tο άκροιςμα των δφο λογαριαςμϊν ςτο τζλοσ τθσ ςυναλλαγισ, πρζπει να ιςοφται με το άκροιςμά τουσ ςτθν αρχι. Υποκζτουμε ότι μια δοςολθψία που ξεκινά να τροποποιεί μια ςυνεπι ΒΔ, κα καταλιξει επίςθσ ςε ςυνεπι ΒΔ (δθλ. θ δοςολθψία είναι κατά μία ζννοια ςυνεπισ/ορκι) read(a); A := A - 50; write(a); read(b); B := B + 50; write(b); A: 150 B: 200 A: 100 B: 250 Α + Β = 350 Α + Β = 350

Απομόνωςθ ΡΑΑΔΕΙΓΜΑ ACID ΙΔΙΟΤΗΤΩΝ Ασ υποκζςουμε ότι ςτο ςφςτθμα τρζχουν περιςςότερεσ από μια δοςολθψίεσ ταυτοχρόνωσ. Στο παράδειγμά μασ ανάμεςα ςτα βιματα 3 και 6 μια άλλθ δοςολθψία επιτρζπεται να αποκτιςει πρόςβαςθ ςτθ μερικϊσ ενθμερωμζνθ βάςθ δεδομζνων. Τότε αφοφ αυτι μπορεί να δει τα ενδιάμεςα αποτελζςματα τθσ άλλθσ μπορεί να προκλθκοφν ανεπικφμθτα αποτελζςματα (π.χ. το άκροιςμα Α+Β να είναι μικρότερο από αυτό που κα ζπρεπε να είναι). Αυτό ςυμβαίνει γιατί ενδιάμεςα ςτθ δοςολθψία θ βάςθ μπορεί να είναι αςυνεπισ. Αντοχι Κάκε φορά που ο χριςτθσ ειδοποιείται ότι θ ςυναλλαγι ζχει ολοκλθρωκεί (π.χ. ολοκλιρωςθ τθσ μεταφοράσ ποςοφ από account A ςε B) θ ενθμζρωςθ τθσ βάςθσ από τθ ςυναλλαγι πρζπει να διατθρθκεί παρά τισ αποτυχίεσ του ςυςτιματοσ.

ΡΑΑΔΕΙΓΜΑΤΑ ΑΡΟΤΥΧΙΑΣ ΣΥΣΤΗΜΑΤΟΣ ΚΙ ΕΞΑΣΦΑΛΙΣΗ ΑΝΤΟΧΗΣ Ζςτω ότι ςε μια αεροπορικι εταιρία που χρθςιμοποιεί μια βάςθ δεδομζνων για κράτθςθ - επεξεργαςία κζςεων πζφτει το ςφςτθμα. 3.Crash 1. Κράτησε για τον κ. Χ την θέση 13Α για LA! 2. ΟΚ! DB Τότε αφοφ θ ςυναλλαγι είχε προλάβει να ολοκλθρωκεί οι αλλαγζσ ςτθ βάςθ διατθροφνται. 4. Restore DB 6.NO! 5. Κράτησε για τον κ. Y την θέση 13Α για LA!

TRANSACTION LOGS Με ποιο τρόπο το ΣΔΒΔ ςταματά μια δοςολθψία? Τα περιςςότερα ςυςτιματα διατθροφν Transaction Logs που καταγράφουν όλεσ τισ λειτουργίεσ, όπωσ και τισ COMMIT δθλϊςεισ. Πταν πραγματοποιείται ζνα ROLLBACK, εξετάηεται το log και οι λειτουργίεσ αναιροφνται ςε ανάποδθ χρονολογικι ςειρά, μζχρι το πιο πρόςφατο COMMIT. Ζαν θ δοςολθψία δεν πραγματοποιικθκε εξαιτίασ software/hardware ςφάλματοσ, το ΣΔΒΔ επικαλείται ζνα εργαλείο επανόρκωςθσ (recovery utility), ϊςτε να επαναφζρει το log και μετά να κάνει rollback όλεσ τισ λειτουργίεσ που δεν ζχουν πραγματοποιθκεί. Το log ςυνικωσ αποκθκεφεται ςε διαφορετικό ςθμείο από τθν ΒΔ, προκειμζνου να αποφευχκεί προςπάκεια πρόςβαςθσ.

ΕΥΧΑΙΣΤΩ ΡΟΛΥ! 40