Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Προχωρημένα Θέματα Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης.

Slides:



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

Γραφήματα & Επίπεδα Γραφήματα
«Κυβερνητικές προτάσεις για το Ασφαλιστικό» © VPRC – Μάρτιος / Δ.1 © VPRC – Μάρτιος 2008 ΚΥΒΕΡΝΗΤΙΚΕΣ ΠΡΟΤΑΣΕΙΣ ΓΙΑ ΤΟ ΑΣΦΑΛΙΣΤΙΚΟ.
Indexing.
Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
Αποτελέσματα Μελέτης για το Μέγαρο Πολιτισμού Κύπρου Ετοιμάστηκε για την Εταιρεία KPMG Από την Εταιρεία RAI Consultants Public Ltd Μάρτιος 2008.
Μάρτιος 2011 Βαρόμετρο ΕΒΕΘ - Καταναλωτές. “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Μετά από έρευνα που διενήργησε εταιρεία ερευνών, διαπιστώθηκε πως στην εταιρεία μας οι εργαζόμενοι χρησιμοποιούν μεταξύ τους ένα λεξιλόγιο κάπως ανάρμοστο.
Transactions & P2P Systems Διονύσης Αθανασόπουλος Βασίλης Φωτόπουλος.
Πρωτογενής έρευνα Hi5, μία μόδα για νέους;. Μεθοδολογία - εργαλεία Η έρευνα διενεργήθηκε με την μέθοδο της συλλογής ερωτηματολογίων, τα οποία και συμπληρώνονταν.
ΜοντελοποίησηΈργα ΜαθήματαΑξιολόγηση Αναστοχασμος Μαθήματα.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Τα στοιχειώδη περί γεωδαιτικών υπολογισμών
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Βασικές Αρχές Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβριος 2009.
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Βάσεις Δεδομένων II Περίληψη: Προχωρημένα Θέματα Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης 2002
Παρουσίαση Έρευνας Κοινής Γνώμης «Ο λόγος στον Πολίτη» Θεσσαλονίκη, Ιανουάριος 2010.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Τεχνικές Ελέγχου Συνδρομικότητας - Ασκήσεις.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Συστολικοί επεξεργαστές.
Ανάλυση του λευκού φωτός και χρώματα
© GfK 2012 | Title of presentation | DD. Month
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
+21 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Δεκέμβριος 2013 Δείκτης > +20 Δείκτης 0 να +20 Δείκτης 0 να -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Γραφήματα & Επίπεδα Γραφήματα
ΒΑΡΟΜΕΤΡΟ ΕΒΕΘ – ΣΕΠΤΕΜΒΡΙΟΣ 2014 AD – HOC ΕΡΩΤΗΣΕΙΣ.
1 AYTOΣ Ο ΠΛΑΝΗΤΗΣ ΕΙΝΑΙ ΠΟΛΥ ΕΝΔΙΑΦΕΡΩΝ ΤΟΠΟΣ ΓΙΑ ΝΑ ΖΕΙ ΚΑΝΕΙΣ….
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Συναρτησιακές Εξαρτήσεις.
ΙΣΟΛΟΓΙΣΜΟΣ ΒΑΣΕΙ Δ.Λ.Π. (ΕΝΑΡΞΗΣ)
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Εξάσκηση στην προπαίδεια
Αποκεντρωμένη Διοίκηση Μακεδονίας Θράκης ∆ιαχείριση έργων επίβλεψης µε σύγχρονα µέσα και επικοινωνία C2G, B2G, G2G Γενική Δ/νση Εσωτερικής Λειτουργίας.
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
1/5/ ΧΡΗΣΕΙΣ ΤΗΣ ΗΛΙΑΚΗΣ ΑΝΤΙΝΟΒΟΛΙΑΣ 1/5/ (πηγή: HELIOAKMI).
2006 GfK Praha CORRUPTION CLIMATE IN EUROPE % % % %0 - 10% % % % % % ΚΛΙΜΑ ΔΙΑΦΘΟΡΑΣ Η.
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
13ο Πανελλήνιο Συνέδριο Ακαδημαϊκών Βιβλιοθηκών – Κέρκυρα Οκτωβρίου 2004 Το σύστημα COINE για την προβολή της πολιτιστικής κληρονομιάς και την υποστήριξη.
ΚΕΦΑΛΑΙΟ 3 Περιγραφική Στατιστική
Βαρόμετρο ΕΒΕΘ Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Λ. Κηφισίας 3, Μαρούσιτηλ.: τηλ.: ΧΟΡΗΓΟΣ: Μέλος του δικτύου :
1 Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης 2005.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Μεταθέσεις & Συνδυασμοί
Συνδυαστικά Κυκλώματα
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
ANAKOINWSH H 2η Ενδιάμεση Εξέταση μεταφέρεται στις αντί για , την 24 Νοεμβρίου στις αίθουσες ΧΩΔ και 110 λόγω μη-διαθεσιμότητας.
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
Βάσεις Δεδομένων II Ενότητα 7: Ταυτοχρονισμός Γεωργία Γκαράνη
Βάσεις Δεδομένων II Περίληψη: Τεχνικές Ανάνηψης Πάνος Βασιλειάδης Νοέμβρης 2002
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
+19 Δεκέμβριος 2014 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20 Δείκτης < -20 Συνολικά της ΕΕ: +5 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20.
ΤΑ ΔΟΝΤΙΑ ΜΑΣ.
Βαρόμετρο ΕΒΕΘ Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού.
Βάσεις Δεδομένων II Προχωρημένα Θέματα Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης 2002
Βάσεις Δεδομένων II Περίληψη: Βασικές Αρχές Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης 2002
Μεταγράφημα παρουσίασης:

Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Προχωρημένα Θέματα Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης

2 Συναλλαγές & Ταυτοχρονισμός DB Κράτησε για τον κ. Χ την θέση 13Α για LA! Κράτησε για τον κ. Y την θέση 13Α για LA! Πόσοι ταξιδεύουν για LA ?

3 Θεματολόγιο Φαντάσματα Κλείδωμα δέντρων Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Πώς τα βάζω όλα μαζί

4 Θεματολόγιο Φαντάσματα Κλείδωμα δέντρων Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Πώς τα βάζω όλα μαζί

5 Αρχική παρατήρηση Μέχρι στιγμής, κάναμε δύο μη προφανείς υποθέσεις: Η ΒΔ δεν εμπλουτίζεται με νέες εγγραφές κατά τη διάρκεια των συναλλαγών (ήτοι, υποθέταμε ότι write = UPDATE και όχι INSERT) Τα αντικείμενα της ΒΔ είναι ανεξάρτητα μεταξύ τους (το οποίο καταρρέει αν υποθέσουμε π.χ., ένα B+ tree σε κάποιο πεδίο ενός πίνακα) Τι θα γίνει αν αναιρέσουμε τις υποθέσεις αυτές?

6 Παράδειγμα: Sailors SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING INSERT INTO SAILORS (5,’X’,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T2:

7 Πιθανή Εκτέλεση SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay4263 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING S1S1 S1S1 RATINGAGE 171 INSERT INTO SAILORS (5,’X’,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T2: Πρώτα, οι RATING=1

8 Πιθανή Εκτέλεση SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay4263 5X196 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING S1S1 S1S1 RATINGAGE 171 INSERT INTO SAILORS (5,’X’,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T2: Χ2Χ2 Το INS παίρνει X- lock

9 Πιθανή Εκτέλεση SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay4263 5X196 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING S1S1 S1S1 RATINGAGE 171 INSERT INTO SAILORS (5,’X’,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T2: Χ2Χ2 Το DEL παίρνει X- lock Χ2Χ2 Χ2Χ2

10 Πιθανή Εκτέλεση SIDSNAMERATINGAGE 1Popay1171 2Popay2143 4Popay4263 5X196 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING S1S1 S1S1 RATINGAGE 171 INSERT INTO SAILORS (5,’X’,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T2: Τ2 COMMITS!!

11 Πιθανή Εκτέλεση SIDSNAMERATINGAGE 1Popay1171 2Popay2143 4Popay4263 5X196 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING S1S1 RATINGAGE INSERT INTO SAILORS (5,’X’,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T2: Μετά, όσοι έχουν RATING=2

12 Πιθανές Εκτελέσεις... SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay4263 5X196 RATINGAGE Τ1 || Τ2 RATINGAGE Τ1 ; Τ2 RATINGAGE Τ2 ; Τ1

13 Φάντασμα Το φαινόμενο κατά το οποίο μια συναλλαγή ξεκινά με ένα σύνολο εγγραφών στην αρχή της, και βρίσκεται με ένα διαφορετικό σύνολο εγγραφών στο τέλος της, χωρίς να έχει κάνει αυτή τις αλλαγές. Ο 2PL ΔΕΝ μας προστατεύει από φαντάσματα!

14 Αν μπορούσαμε άραγε... SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay4263 5X196 S1S1 S1S1 Χ2Χ2 …να κλειδώναμε στην ίδια συναλλαγή όλες τις εγγραφές που πληρούν τη συνθήκη RATING=1...

15 Κλείδωμα κατηγορήματος Το γεγονός ότι κλειδώνω όλες τις εγγραφές που πληρούν μια συνθήκη (όπως π.χ., RATING = 1) Η πιο απλοϊκή λύση, είναι να κλειδώσω όλον τον πίνακα (βλ. και στη συνέχεια) Καμιά πιο έξυπνη ιδέα?

16 Θεματολόγιο Φαντάσματα Κλείδωμα δέντρων Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Πώς τα βάζω όλα μαζί

17 Κλείδωμα ευρετηρίων Αν είχαμε ένα index (π.χ., B+ tree) πάνω στο πεδίο rating, θα μπορούσαμε να κλειδώναμε γρήγορα όλες τις εγγραφές με RATING=1. Ακόμα κι αν δεν υπάρχουν τέτοιες εγγραφές, κλειδώνοντας τον index, μπορούμε να απαγορεύσουμε να δημιουργηθούν από άλλους κατά τη διάρκεια της συναλλαγής! Ειδική περίπτωση του κλειδώματος κατηγορήματος... Στη συνέχεια, Ramakrishnan & Gehrke Β+ tree Table

18 Πρώτη λύση Ας υποθέσουμε ότι θέλουμε να εισάγουμε μια εγγραφή με RATING=1στη διάρκεια της Τ1 Κατεβαίνοντας από τη ρίζα προς τα φύλλα του Β+ δέντρου, μπορούμε να κλειδώνουμε κάθε κόμβο με X-lock [του φύλλου συμπεριλαμβανομένου] Τραγική απόδοση: ήδη από το πρώτο βήμα έχω κλειδώσει τη ρίζα, ήτοι, ΟΛΟ το δέντρο.

19 Παρατήρηση Στα Β+ δέντρα, οι ενδιάμεσοι κόμβοι χρησιμεύουν ΜΟΝΟ ως μονοπάτια για τα φύλλα [θυμάστε τη διαφορά με τα Β δέντρα?] Αν κλείδωνα με S-lock τους ενδιάμεσους κόμβους και με X-lock τα φύλλα? Bug: τι θα γίνει αν η εισαγωγή διασπάσει το παιδί ?

20 Απλός αλγόριθμος κλειδώματος δέντρων SELECT: Ξεκινώντας από τη ρίζα κλειδώνουμε με S-lock κάθε κόμβο. Μετά, ξεκλειδώνουμε τον γονέα του. INS/DEL: Ξεκινώντας από τη ρίζα κλειδώνουμε με X-locks κατά περίπτωση. Μετά ελέγχουμε αν ο κλειδωθείς κόμβος είναι ασφαλής: Αν ναι, ξεκλειδώνουμε τους προγόνους του. Ασφαλής κόμβος: οι όποιες αλλαγές δεν θα διαδοθούν προς τα πάνω από τον κόμβο αυτό INS: ο κόμβος δεν είναι πλήρης. DEL: ο κόμβος δεν είναι άδειος κατά το ήμισυ.

21 Απλός αλγόριθμος κλειδώματος δέντρων Α’ τρόπος για το «κατά περίπτωση» X-locks για όλους τους κόμβους Β’ τρόπος για το «κατά περίπτωση» S-locks για τους ενδιάμεσους κόμβους X-locks για τα φύλλα Μετατροπή του S-lock σε Χ-lock αν υπάρχει διάσπαση Elmasri & Navathe, Ramakrishnan & Gehrke

22 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* Θυμάστε τι βάζουμε σε κάθε κουτάκι? 23

ROOT A B C DE F G H I * *23*24*35*36*38*41*44* DEL 38* 23 Χ Με Α’ τρόπο...

24 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* 23 Χ DEL 38*

25 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* 23 Χ DEL 38*

26 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* 23 Χ DEL 38*

27 ROOT A B C DE F G H I * *23*24*35*36*41*44* 23 DEL 38*

28 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* INS 45* 23 S Με Β’ τρόπο...

29 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* INS 45* 23 S

30 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* INS 45* 23 S S Γιατί ΔΕΝ ξεκλειδώνω το Β ?

31 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* INS 45* 23 Χ

32 ROOT A B C DE F G H I * *23*24*35*36*38*41*44* INS 45* 23 45*

33 Πιο δύσκολα... Πώς θα έτρεχε το DEL 38* με τον Β’ τρόπο ? Τι θα γίνει αν πάω να κάνω INS 25* στο αρχικό δέντρο? Για το σπίτι: είναι 2PL ο αλγόριθμος ?

34 Θεματολόγιο Φαντάσματα Κλείδωμα δέντρων Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Πώς τα βάζω όλα μαζί

35 Τι κλειδώνουμε στην πράξη? Μέχρι τώρα θεωρούσαμε εγγραφές και αυτό είναι το επίπεδο στο οποίο τα τωρινά DBMS δουλεύουν Παλαιά, τα κλειδώματα στην πράξη αφορούσαν σελίδες Μπορούμε να κλειδώσουμε τη βάση σε πολλά «επίπεδα» που ορίζουν μια «ιεραρχία διακριτότητας» Tuples Tables Pages Database contains Ramakrishnan & Gehrke

36 Ορισμοί Διακριτότητα (granularity): πόσο μικρό είναι ένα αντικείμενο υπό παρατήρηση Μικρή διακριτότητα = μεγάλο μέγεθος στοιχείου (π.χ., πίνακας ή ΒΔ) Elmasri & Navathe: “χαμηλή” διακριτότητα Μεγάλη διακριτότητα = μικρό μέγεθος στοιχείου (π.χ., σελίδα ή εγγραφή) Elmasri & Navathe: “υψηλή” διακριτότητα Πρόγονος ενός αντικειμένου: οποιοδήποτε αντικείμενο στην ιεραρχία διακριτότητας το περικλείει (π.χ., η ΒΔ είναι πρόγονος μιας σελίδας)

37 Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Κλείδωμα σε μικρή διακριτότητα: αποκλεισμός και καθυστέρηση των συναλλαγών που τρέχουν εν παραλλήλω (π.χ., τι θα γίνει αν κλειδώσω όλη τη ΒΔ?) Κλείδωμα σε μεγάλη διακριτότητα: μεγάλος αριθμός κλειδωμάτων (χώρος μνήμης, καθυστέρηση διαχείρισης) Ερώτηση Κρίσεως: Ποια η καλύτερη διακριτότητα (& υπό ποιες συνθήκες)?

38 Παράδειγμα Τ1: UPDATE EMP WHERE EMP_ID = 1 SET… T2: SELECT * FROM EMP Η Τ1 για να γράψει μία και μόνο εγγραφή, μπλοκάρει την Τ2. Ιδέα: Τ1: κλειδώνει την εγγραφή της Τ1 Τ2: ελέγχει για κλείδωμα όλες τις εγγραφές μία μία? Καλύτερη Ιδέα: Μήπως να κλειδώναμε μόνο τη σελίδα που περιέχει την εγγραφή της Τ1?

39 Εκμετάλλευση της ιεραρχίας Η ιδέα είναι να κλειδώνουμε με κατάλληλο τρόπο σε διαφορετικά επίπεδα διακριτότητας Χρειαζόμαστε ένα νέο είδος κλειδώματος (γιατί?) Κλείδωμα πρόθεσης (intention lock): εφαρμόζεται σε ένα πρόγονο, χαρακτηρίζοντας τι πράξη (για την ακρίβεια: κλείδωμα) θα εφαρμοστεί στον απόγονό του Τριών ειδών κλειδώματα πρόθεσης...

40 Κλειδώματα Πρόθεσης Ένας πρόγονος (π.χ., σελίδα) λαμβάνει IS: αν η συναλλαγή θέλει να διαβάσει (πάρει S-lock) για κάποιους απoγόνους (π.χ., μια εγγραφή) IX: αν η συναλλαγή θέλει να γράψει (πάρει X-lock) για κάποιους απογόνους (π.χ., μια εγγραφή) SIX: αν η συναλλαγή θέλει να διαβάσει (πάρει S-lock) όλους τους απογόνους του και να γράψει (πάρει X- lock) και κάποιους από αυτούς. Πριν πάρεις ένα κλείδωμα για κάποιο αντικείμενο, πρέπει να πάρεις κλείδωμα πρόθεσης για όλους τους προγόνους του

41 Συγκρούσεις Ο πίνακας συγκρούσεων γίνεται πλέον: T1: έχει κάποιο lock σε ένα αντικείμενο Τ2: αιτείται κάποιο lock στο ίδιο αντικείμενο Ότι δεν έχει  είναι επιτρεπτό T1 T2 ISIXSIXSX IS  IX  SIX  S  X 

42 Παράδειγμα: «σύγκρουση» για μια σελίδα Τ1: έχει κλειδώσει με IS τη σελίδα, ώστε να διαβάσει μία (κάποιες) εγγραφή(ες) της Τ2: αντιστοίχως, αλλά για να γράψει Αν πρόκειται για διαφορετικές εγγραφές, κανείς δεν περιμένει Αλλιώς, η σύγκρουση συμβαίνει στο χαμηλότερο επίπεδο με τα κλειδώματα S- & X- locks T1 T2 ISIXSIXSX IS  IX  SIX  S  X 

43 Τα κλειδώματα είναι σε όλη την ιεραρχία... Tuples Tables Pages Database contains S IS T1 X IX T2 T1 T2 ISIX IS  IX  Στα ψηλά επίπεδα, δουλεύει καλά. Στα χαμηλά, όπως πριν...

44 Αλγόριθμος Κλειδωμάτων Ξεκινάς στην κορυφή της ιεραρχίας Για να πάρω ένα κλείδωμα S- (ή IS-) σε ένα αντικείμενο, πρέπει να έχω IS- (ή IX-) στον πρόγονό του [αλλιώς, περιμένω] Για να πάρω ένα κλείδωμα X- (ή IX- ή SIX) σε ένα αντικείμενο, πρέπει να έχω IX- (ή SIX-) στον πρόγονό του [αλλιώς, περιμένω] Ξεκλειδώνω με την αντίστροφη σειρά (bottom-up)

45 Παραδείγματα (και «τι σημαίνει S-lock σε ένα πίνακα?») T1 διαβάζει τον πίνακα R, και update κάποιες εγγραφές: T1 παίρνει SIX-lock στον R, μετά για κάθε εγγραφή του R παίρνει και ένα S-lock, και όπου δη, αναβαθμίζει το S-lock αυτό σε X-lock (στα updates στις κρίσιμες εγγραφές, δηλαδή). T2 χρησιμοποιεί ένα index για να διαβάσει τμήμα της R: T2 παίρνει IS στον R και μετά για κάθε εγγραφή του R παίρνει και ένα S-lock. T3 διαβάζει όλον τον R://ΠΡΟΣΟΧΗ! T3 παίρνει S-lock στο R. //S-lock σε πίνακα? ή, η T3 κάνει ότι και η T2 & μπορεί να χρησιμοποιήσει «κλιμάκωση κλειδώματος» (lock escalation) για να αποφασίσει αν θα πάρει S lock στο R.

46 Κλιμάκωση κλειδωμάτων Όταν μια συναλλαγή προσπαθήσει να πάρει κλειδώματα π.χ., για έναν ολόκληρο πίνακα, πέφτουμε στην περίπτωση του προβλήματος χώρου & χρόνου στη διαχείριση των κλειδωμάτων Κλιμάκωση Κλειδωμάτων: Αποφασίζουμε ότι πάνω από κάποιο threshold, αντί να κλειδώνω μία μία σελίδα (με S- ή X-lock), κλειδώνω μόνο τον πίνακα (με S- ή X-lock) και τίποτε άλλο. ΠΡΟΣΟΧΗ: Αδιέξοδα!!! (αν π.χ., ο ένας είχε SIX και ο άλλος IS στον πίνακα πριν την κλιμάκωση)

47 Θεματολόγιο Φαντάσματα Κλείδωμα δέντρων Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Πώς τα βάζω όλα μαζί

48 Το ζήτημα είναι... Όπως είπαμε, υπάρχει το πρόβλημα των φαντασμάτων Ο σκοπός είναι να το αποτρέψω και θα χρησιμοποιήσουμε την τεχνική κλειδώματος κατηγορήματος (predicate locking) Θα εξετάσουμε με ποιον τρόπο, γίνεται αυτό στην πράξη!

49 Φαντάσματα SIDSNAMERATINGAGE 1Popay1171 2Popay2143 3Popay3280 4Popay4263 5X196 S1S1 S1S1 Χ2Χ2 …να κλειδώναμε στην ίδια συναλλαγή όλες τις εγγραφές που πληρούν τη συνθήκη RATING=1...

50 Κλείδωμα κατηγορήματος / ευρετηρίων Το γεγονός ότι κλειδώνω όλες τις εγγραφές που πληρούν μια συνθήκη (όπως π.χ., RATING = 1) Αν είχαμε ένα index (π.χ., B+ tree) πάνω στο πεδίο rating, θα μπορούσαμε να κλειδώναμε γρήγορα όλες τις εγγραφές με RATING=1. Β+ tree Table

51 Αν ΔΕΝ έχω κάποιον index Για να αποφύγω φαντάσματα SELECT statements: S-lock σε όλον τον πίνακα UPDATE / DELETE statements: SIX-lock στον πίνακα και Χ-locks στις κρίσιμες σελίδες με τις υπό τροποποίηση εγγραφές Αν κάποιος πάει να γράψει (X-lock στη σελίδα), θα συγκρουστεί με το εν λόγω κλείδωμα

52 Αν έχω B+ trees Στον index, S-locks στα φύλλα όταν κάνω SELECT, αλλιώς X-locks στα φύλλα Στον πίνακα: SELECT statements: IS-lock στον πίνακα, S-locks στις σελίδες με εγγραφές που ικανοποιούν τοWHERE clause UPDATE / DELETE statements: IX-lock στον πίνακα και Χ-locks στις κρίσιμες σελίδες με τις υπό τροποποίηση εγγραφές Πρώτα κλειδώνω τον index και μετά τον πίνακα Η σύγκρουση εντοπίζεται στον index

53 Tuning for performance Γράψτε μικρές συναλλαγές. Εν ανάγκη, σπάστε τις μεγάλες σε πολλές μικρές συναλλαγές [το default στην SQL είναι συναλλαγή ανά εντολή]! Χρησιμοποιήστε indexes. Όχι μόνο ψάχνουμε πιο γρήγορα [αν και γράφουμε πιο αργά] αλλά ο ταυτοχρονισμός αυξάνεται! Αποφύγετε το lock escalation. Τα νέα DBMS’s συνήθως δεν το κάνουν, εκτός κι αν τους το πείτε (RTFM)… Το granule (επίπεδο διακριτότητας ?) ήταν για καιρό η σελίδα. Πλέον, τα πιο πολλά DBMS’s λειτουργούν σε επίπεδο εγγραφής …