ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης ιαχείριση Συναλλαγών II Tree Protocols Τζικούλης Βασίλειος redits:γιάννης Μακρυδάκης 1
ιαχείριση Συναλλαγών Συναλλαγή = Αδιάσπαστη Λογική Οµάδα Ενεργειών Περιέχει Αναγνώσεις(Read) ή/και Εγγραφές(Write) Οι συναλλαγές/δοσοληψίες επιθυµούµε να εναλλάσσονται στην εκτέλεση τους για λόγους απόδοσης της βάσης. Πρέπει να γίνεται µε συνέπεια εξασφαλίζοντας το I Ένα πρόγραµµα (χρονοπρόγραµµα) εκτέλεσης, περιλαµβάνει «ανάµικτες»(interleaved) ενέργειες από πολλές συναλλαγές. Με το 2PL εξασφαλίζουµε την σειριοποιησιµότητα, θεωρώντας ότι κάθε αντικείµενο είναι ανεξάρτητο από τα άλλα. 2
ιαχείριση Συναλλαγών TP Μια βάση δεδοµένων µπορεί να περιέχει και οµαδοποιηµένες περιοχές δεδοµένων µε διαφορετικό βαθµό οµαδοποίησης ή να υπάρχει µια µερική διάταξη των δεδοµένων. Για να εφαρµόσουµε πρωτόκολλα χρειάζεται να έχουµε γνώση αυτής της διάταξης ή οµαδοποίησης Ασχολούµαστε µε οµαδοποιήσεις ή διατάξεις που αποτελούν ένα δέντρο. TP#1 όταν έχουµε µερική διάταξη των δεδοµένων TP#2 όταν έχουµε οµαδοποίηση των δεδοµένων 3
ιαχείριση Συναλλαγών TP#1 Χαρακτηριστικά Έχουµε µόνο αποκλειστικά κλειδώµατα XL Το πρώτο κλείδωµα γίνεται σε οποιοδήποτε στοιχείο του δέντρου. Ένα κλείδωµα σε ένα στοιχείο γίνεται µόνο αν ο γονέας είναι ήδη κλειδωµένος από την ίδια συναλλαγή Καθοδική πορεία κλειδώµατος προς τα φύλλα. Κάθε στοιχείο κλειδώνεται µόνο µία φορά στην διάρκεια της συναλλαγής. Το ξεκλείδωµα µπορεί να γίνει οποιαδήποτε στιγµή εν υπάρχει φάση ανάπτυξης, συρρίκνωσης 4
ιαχείριση Συναλλαγών TP#1 T1 L1(), R1() L1(), R1() L1(), R1() T2 L2() R2() L2(H), R2(H) W2(), U2() Παράδειγµα 1: Πως θα εκτελεστεί µε το ΤP#1? S: R1() R1() R2() R2(H) W2() R1() W1() W1() W2(H) R1(G) W1(G) R2(K) W1(),U1() W1(), U1() W2(H) L1(G), R1(G) U1() L2(K), R2(K), U2(H), U2(K) G H I J W1(G),U1(G) K L 5
ιαχείριση Συναλλαγών TP#1 L1(), NO L1(), R1() L1(), R1(), U1() W1(), U1() T1 T2 T3 L2(), NO L2() R2() L2(), R2(), U2(), L2(), W2(), U2() R2(),U2() L3(), W3() L3(), R3() U3(), U3() Παράδειγµα 2 Πως θα εκτελεστεί µε το ΤP#1? S: W3()R1()R1()R2()W1() R2()W2()R3()R2() G K H I L J 6
ιαχείριση Συναλλαγών TP#1 T1 L1(), R1() L1(), R1(), U1() L1(), R1(), U1() W1(), L1(I) R1(I), U1(), U1(I) T2 L2() R2() L2() NO L2(), U2(), L2(), U2() R2(), U2() Παράδειγµα 3Α: Φτιάξτε χρονοπρόγραµµα me TP#1 T1: L1(),R1(),L1()R1(),U1(), L1(), R1(), U1(), W1(),L1(I), R1(I),U1(),U1(I) T2: L2(),R2(), L2(), U2() L2(),U2(), R2(), U2() G K H I L J 7
ιαχείριση Συναλλαγών TP#1 T1 L1(), R1() L1(), R1(), U1() L1(), R1(), U1() W1(), L1(I) R1(I), U1(), U1(I) T2 L2() R2() L2() NO L2(), U2(), L2(),U2() R2(), U2() Παράδειγµα 3Β: Φτιάξτε χρονοπρόγραµµα T1: L1(),R1(),L1()R1(),U1(), L1(), R1(), U1(), W1(),L1(I), R1(I),U1(),U1(I) T2: L2(),R2(), L2(), U2() L2(),U2(), R2(), U2() G K H I L J 8
ιαχείριση Συναλλαγών TP#1 T1 L1(), R1() L1(), R1(), U1() L1(), R1(), U1() T2 L2() R2() L2(), U2(), L2(),U2() Παράδειγµα 3Γ: Φτιάξτε χρονοπρόγραµµα T1: L1(),R1(),L1()R1(),U1(), L1(), R1(), U1(), W1(),L1(I), R1(I),U1(),U1(I) T2: L2(),R2(), L2(), U2() L2(),U2(), R2(), U2() W1(), L1(I) R2(), U2() G H I J R1(I), U1(), U1(I) K L 9
ιαχείριση Συναλλαγών TP#2 Κάθε κόµβος/φύλλο είναι δεδοµένο Ένας ενδιάµεσος κόµβος αντιπροσωπεύει τους απογόνους. Χαρακτηριστικά Έχουµε διαµοιραζόµενα ή αποκλειστικά κλειδώµατα και προειδοποιήσεις Το κλείδωµα ενός κόµβου κλειδώνει και όλους τους απογόνους του. (έµµεσα) στην ίδια κατάσταση Για να αποφύγω πολλαπλό κλείδωµα από συναλλαγές θέτω στους προγόνους µια προειδοποίηση(warning) πριν το κλείδωµα. ( ξεκινάµε από την ρίζα προς τα φύλλα ) Κλειδώνω κόµβο µόνο αν δεν υπάρχει ήδη κλείδωµα ή προειδοποίηση Ξεκλειδώνω ή αφαιρώ προειδοποίηση αν δεν υπάρχει κλείδωµα ή προειδοποίηση σε απόγονο. ( ξεκλείδωµα ή αφαίρεση προειδοποιήσεων από τα φύλλα προς την ρίζα) 10
ιαχείριση Συναλλαγών TP#2 Παράδειγµα Τα φύλλα (G, H, I, J, K, L, ) είναι δεδοµένα Οι ενδιάµεσοι κόµβοι αντιπροσωπεύουν τους απογόνους. Ο αντιπροσωπεύει τους G,H Η ρίζα αντιπροσωπεύει την βάση G H I J K L 11
ιαχείριση Συναλλαγών TP#2 Η τοποθέτηση στον κόµβο µιας προειδοποίησης/ πρόθεσης διαµοιραζόµενου κλειδώµατος: IS Η τοποθέτηση στον κόµβο µιας προειδοποίησης/ πρόθεσης αποκλειστικού κλειδώµατος: IΧ To κλείδωµα ενός κόµβου από µια διεργασία: Χ για αποκλειστικό και S για διαµοιραζόµενο Η απόσυρση του κλειδώµατος ή της προειδοποίησης/πρόθεσης U 12
ιαχείριση Συναλλαγών TP#2 Παράδειγµα 1 T1: R1(), W1(G),W1(H) T2: R2(), W2(I), W2(J) Ένα χρονοπρόγραµµα: IX1(), IX1(), IX1(), S1(), IX2(), IX2(), IX2(), X2(), G H I J K L R2(), R1(), IX1(G), X1(G), W1(G), W2(I), W2(J), U2(I), U2(J), U2(), U2(), U2(), IX1(H), X1(H), W1(H), U1(H), U1(G), U1(), U1(), U1(). 13
ιαχείριση Συναλλαγών TP#2 Παράδειγµα 1 IX1(), IX1(), IX1(), S1(), IX2(), IX2(), IX2(), X2(), R2(), R1(), IX1(G), X1(G), W1(G), W2(I), W2(J), U2(I), U2(J), U2(), U2(), U2(), IX1(H), X1(H), W1(H), U1(H), U1(G), U1(), U1(), U1(). T1 IX1(), IX1(), IX1(), S1() T2 IX2(), IX2(), IX2(), X2(), R2() G H I J K L R1(), IX1(G), X1(G), W1(G), W2(I), W2(J), U2(I), U2(J), U2(), U2(), U2() IX1(H), X1(H), W1(H), U1(H), U1(G), U1(), U1(), U1() 14
ιαχείριση Συναλλαγών TP#2 Παράδειγµα 2 T1: R1(Β), R1(), R1(G), R1(H), R1(), R1(J), T2: R2(), W2(G), W2(H) Ένα χρονοπρόγραµµα είναι: IS1(), IS1(), S1(), R1(), IX2(), IX2(), IX2(), X2(), G H I J K L R2() W2(G), W2(H), R1(), R1(G) R1(H), U1(G), U1(H), U1(), R1(), R1(J), U1(J), U1(I), U1(), U1(G), U1(H), U1(), U1(), U1(), U2(G), U2(H), U2(), U2(), U2() 15
ιαχείριση Συναλλαγών TP#2 Παράδειγµα 2 IS1(), IS1(), S1(), R1(), IX2(), IX2(), IX2(), X2(), R2() W2(G), W2(H), R1(), R1(G) R1(H), U1(G), U1(H), U1(), R1(), R1(J), U1(J), U1(I), U1(), U1(G), U1(H), U1(), U1(), U1(), U2(G), U2(H), U2(), U2(), U2() G H I J K L T1 IS1(), IS1(), S1(), R1() R1(), R1(G) R1(H) U1(G), U1(H), U1() R1(), R1(J) U1(J), U1(I), U1(), U1(G), U1(H), U1(), U1(), U1() T2 IX2(), IX2(), IX2(), X2(), NO X2(), R2() W2(G), W2(H), U2(G), U2(H), U2(), U2(), U2() 16