Έλεγχος Συγχρονικότητας. (Concurrency Control)

Σχετικά έγγραφα
Χρονοδιάγραμμα/Χρονοπρόγραμμα

Επαναληπτικές ασκήσεις

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Έλεγχος Ταυτοχρονισμού

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Επεξεργασία οσοληψιών

Έλεγχος Ταυτοχρονισμού

Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Επεξεργασία οσοληψιών. το πώς βλέπει το Σ Β τα προγράµµατα των χρηστών. οσοληψία (transaction)

Βάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών

Locking to ensure serializability

Σημεία ελέγχου (Checkpoints)

Αρχεία και Βάσεις Δεδομένων

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

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Σχετικά µε το µάθηµα: Αξιολόγηση. Σχετικά µε το µάθηµα:faq ΟΧΙ ΝΑΙ. Λιγότερος! (ας πούµε το 1/3-1/4)

Βάσεις Δεδομένων 2. Φροντιστήριο Δοσοληψίες Τεχνικές ελέγχου συνδρομικότητας. Ημερ: 05/5/2009 Ακ.Έτος

Θεµατολόγιο. Πώς ελέγχουµε σειριοποιησιµότητα στην πράξη;

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων. Δρ. Κωνσταντίνος Χ.

Συναλλαγές. Εαρινό Εξάμηνο Τμήμα Μηχανικών Η/Υ και Πληροϕορικής Πολυτεχνική Σχολή, Πανεπιστήμιο Πατρών. Συναλλαγές. Βάσεις Δεδομένων ΙΙ

Επεξεργασία οσοληψιών

Δοσοληψίες. Κατανεμημένα Συστήματα

Δοσοληψίες. Κατανεμημένα Συστήματα

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

Πλειάδες φαντάσματα (phantoms)

Έλεγχος Ταυτοχρονισμού

Επεξεργασία οσοληψιών

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

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

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

ΚΕΦΑΛΑΙΟ 1 ΣΥΝΑΛΛΑΓΕΣ ΚΑΙ ΕΛΕΓΧΟΣ ΤΑΥΤΟΧΡΟΝΙΣΜΟΥ

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

Φραγή σε πολλαπλά επίπεδα λεπτομέρειας Τι αντικείμενα κλειδώνουμε?

Finite Field Problems: Solutions

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Transaction Processing (Διαχείριση Δοσοληψιών)

Αρχεία και Βάσεις Δεδομένων

Προχωρημένα Θέματα Βάσεων Δεδομένων

EE512: Error Control Coding

Επεξεργασία οσοληψιών (συνέχεια)

Διαχείριση Δοσοληψιών

Έλεγχος συγχρονικότητας Μέρος 2 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Every set of first-order formulas is equivalent to an independent set

Επεξεργασία οσοληψιών

Fractional Colorings and Zykov Products of graphs

Ordinal Arithmetic: Addition, Multiplication, Exponentiation and Limit

Συστήματα Διαχείρισης Βάσεων Δεδομένων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

C.S. 430 Assignment 6, Sample Solutions

Transactions Management. (Διαχείριση Δοσοληψιών)

Lecture 2. Soundness and completeness of propositional logic

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

Μάθημα Βάσεις Δεδομένων ΙΙ - Ασκήσεις Επανάληψης. 01 Εκφώνηση

Κεφάλαιο 13 Δοσοληψίες

ORDINAL ARITHMETIC JULIAN J. SCHLÖDER

Section 8.3 Trigonometric Equations

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

2 Composition. Invertible Mappings

ST5224: Advanced Statistical Theory II

2. THEORY OF EQUATIONS. PREVIOUS EAMCET Bits.

Bounding Nonsplitting Enumeration Degrees

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Section 9.2 Polar Equations and Graphs

Κατανεμημένες δοσοληψίες

Αποκατάσταση συστήματος Βάσεις Δεδομένων

Βάσεις Δεδομένων ΙΙ. Διάλεξη 2 η Tεχνικές Ελέγχου Συνδρομικότητας

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

ANSWERSHEET (TOPIC = DIFFERENTIAL CALCULUS) COLLECTION #2. h 0 h h 0 h h 0 ( ) g k = g 0 + g 1 + g g 2009 =?

Nowhere-zero flows Let be a digraph, Abelian group. A Γ-circulation in is a mapping : such that, where, and : tail in X, head in

Επανάκτηση δεδομένων. (εμπλουτισμένο υλικό)

derivation of the Laplacian from rectangular to spherical coordinates

Κατανεμημένες δοσοληψίες

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Statistical Inference I Locally most powerful tests

The Simply Typed Lambda Calculus

b. Use the parametrization from (a) to compute the area of S a as S a ds. Be sure to substitute for ds!

Example Sheet 3 Solutions

Τεχνικές Ελέγχου Συνδροµικότητας

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

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

Τεχνικές Ανάνηψης Περιεχόµενα

Προχωρημένα Θέματα Βάσεων Δεδομένων

Matrices and Determinants

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

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Inverse trigonometric functions & General Solution of Trigonometric Equations

Reminders: linear functions

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

The challenges of non-stable predicates

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

2. Let H 1 and H 2 be Hilbert spaces and let T : H 1 H 2 be a bounded linear operator. Prove that [T (H 1 )] = N (T ). (6p)

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

A Note on Intuitionistic Fuzzy. Equivalence Relation

Other Test Constructions: Likelihood Ratio & Bayes Tests

Κατανεμημένες δοσοληψίες

Transcript:

Έλεγχος Συγχρονικότητας (Concurrency Control)

Συγχρονικότητα δοσοληψιών Οι αλληλεπιδράσεις ανάμεσα σε πολλαπλές δοσοληψίες που εκτελούνται ταυτόχρονα (multiple transactions execute concurrently) μπορεί να καταστήσουν ασυνεπή την κατάσταση της ΒΔ ακόμα και αν κάθε δοσοληψία από μόνη της διατηρεί την συνέπεια της ΒΔ ακόμα και αν δεν υπάρχει αστοχία του συστήματος Πρέπει να υπάρχει κάποιου είδους έλεγχος στις χρονικές στιγμές πραγματοποίησης των επιμέρους βημάτων των δοσοληψιών. 2

Προβλήματα Λόγω Συγχρονικότητας Παράδειγμα 1 Θεωρούμε δύο δοσοληψίες Τ1 και Τ2 ως εξής: T1: R(X), X=Χ-N, W(X), R(Y), Y=Y+N, W(Y) T2: R(X), X=X+M, W(X) Ν και Μ είναι κρατήσεις στην πτήση Χ και Υ. Η T1 μεταφέρει Ν κρατήσεις θέσεων από την πτήση Χ στη Y. Η T2 κρατά Μ θέσεις στη Χ. Αν και η δύο δοσοληψίες υποβληθούν ταυτόχρονα, δεν υπάρχει καμία εγγύηση ότι η T1 θα εκτελεστεί πριν την T2 ή το ανάποδο. Ωστόσο, το συνολικό αποτέλεσμα πρέπει να είναι ισοδύναμο με τη μία ή την άλλη περίπτωση (δηλαδή, με κάποια σειριακή εκτέλεση των δύο δοσοληψιών). 3

Προβλήματα Λόγω Συγχρονικότητας Παράδειγμα 1: Χ = 100 κρατήσεις, Υ = 90 κρατήσεις μεταφορά Ν = 30 κρατήσεων νέα κράτηση Μ = 5 θέσεις T1 μεταφέρει Ν κρατήσεις θέσεων από την πτήση Χ στη Y. T2 κρατά Μ θέσεις στη Χ. Σωστό αποτέλεσμα: Χ = 75, Υ = 120 Σειριακή εκτέλεση Τ1 Τ2 T1 T2 Χ Υ 100 90 Read(Χ) Χ Χ Ν Write(Χ) 70 Read(Υ) Υ Υ + Ν Write(Υ) 120 Read(Χ) Χ Χ + Μ Write(Χ) 75 75 120 4

Προβλήματα Λόγω Συγχρονικότητας Παράδειγμα 1: Χ = 100 κρατήσεις, Υ = 90 κρατήσεις μεταφορά Ν = 30 κρατήσεων νέα κράτηση Μ = 5 θέσεις T1 μεταφέρει Ν κρατήσεις θέσεων από την πτήση Χ στη Y. T2 κρατά Μ θέσεις στη Χ. Σωστό αποτέλεσμα: Χ = 75, Υ = 120 Σειριακή εκτέλεση Τ2 Τ1 T1 T2 Χ Υ 100 90 Read(Χ) Χ Χ + Μ Write(Χ) 105 Read(Χ) Χ Χ Ν Write(Χ) 75 Read(Υ) Υ Υ + Ν Write(Υ) 120 75 120 5

Προβλήματα Λόγω Συγχρονικότητας Παράδειγμα 1: Χ = 100 κρατήσεις, Υ = 90 κρατήσεις μεταφορά Ν = 30 κρατήσεων νέα κράτηση Μ = 5 θέσεις T1 μεταφέρει Ν κρατήσεις θέσεων από την πτήση Χ στη Y. T2 κρατά Μ θέσεις στη Χ. Σωστό αποτέλεσμα: Χ = 75, Υ = 120 Η τιμή του X είναι τελικά λανθασμένη Απώλεια ενημερώσεων στο δίσκο T1 T2 Χ Υ 100 90 Read(Χ) Χ Χ Ν [70] Read(Χ) Χ Χ + Μ [105] Write(Χ) 70 Read(Υ) Write(Χ) 105 Υ Υ + Ν Write(Υ) 120 105 120 6

Προβλήματα Λόγω Συγχρονικότητας Παράδειγμα 1: Χ = 100 κρατήσεις, Υ = 90 κρατήσεις μεταφορά Ν = 30 κρατήσεων νέα κράτηση Μ = 5 θέσεις T1 μεταφέρει Ν κρατήσεις θέσεων από την πτήση Χ στη Y. T2 κρατά Μ θέσεις στη Χ. Σωστό αποτέλεσμα: Χ = 75, Υ = 120 Προσωρινή ενημέρωση T1 T2 Χ Υ Dirty Read 100 90 Read(Χ) Χ Χ Ν Write(Χ) 70 Read(Χ) Χ Χ + Μ Write(Χ) 75 Failure! Τι θα συμβεί αν η Τ1 αποτύχει η Τ2 θα έχει διαβάσει «ανύπαρκτη τιμή» 7

Προβλήματα Λόγω Συγχρονικότητας Παράδειγμα 1: Χ = 100 κρατήσεις, Υ = 90 κρατήσεις μεταφορά Ν = 30 κρατήσεων νέα κράτηση Μ = 5 θέσεις T1 μεταφέρει Ν κρατήσεις θέσεων από την πτήση Χ στη Y. T2 κρατά Μ θέσεις στη Χ. Σωστό αποτέλεσμα: Χ = 75, Υ = 120 H τιμή του Χ που διαβάζει η Τ1 είναι διαφορετική!! Μη επαναλήψιμη ανάγνωση T1 T2 Χ Υ 100 90 Read(Χ) Read(Χ) Χ Χ Ν Write(Χ) 70 Read(Υ) Υ Υ + Ν Write(Υ) 120 Read(Χ) 8

Χρονοδιάγραμμα/Χρονοπρόγραμμα Χρονοδιάγραμμα ή Χρονοπρόγραμμα (Schedule) είναι μια σειρά/ακολουθία ενεργειών που πραγματοποιούνται από μια ή περισσότερες δοσοληψίες. Σημαντικές ενέργειες: ανάγνωση, εγγραφή Όταν ένα στοιχείο της ΒΔ μεταφέρεται σε ένα buffer από την δοσοληψία Τ, μπορεί να αναγνωστεί ή να εγγραφεί στον συγκεκριμένο buffer όχι μόνο από την Τ αλλά και από άλλες δοσοληψίες. 9

Σειριακό χρονοδιάγραμμα Σειριακό (serial) λέγεται ένα χρονοδιάγραμμα αν αποτελείται από όλες τις ενέργειες μιας δοσοληψίας και στην συνέχεια από όλες μιας άλλης. Δεν επιτρέπεται η ανάμιξη ενεργειών. Ένα σειριακό χρονοδιάγραμμα διατηρεί την συνέπεια της ΒΔ. Συμβολισμός: (Τ1, Τ2) ή (Τ2, Τ1) Παράδειγμα: Constraint A=B (περιορισμός συνέπειας) T1: Read(A) T2: Read(A) A A+100 A A*2 Write(A) Write(A) Read(B) Read(B) B B+100 B B*2 Write(B) Write(B) 10

Σειριακό χρονοδιάγραμμα T1 Read(A); A A+100; Write(A); Read(B); B B+100; Write(B); T2 A B 25 25 125 125 Schedule Α Read(A); A A*2; Write(A); Read(B); B B*2; Write(B); 250 250 250 250 11

T1 Σειριακό χρονοδιάγραμμα T2 Read(A); A A*2; Write(A); Read(B); B B*2; Write(B); A B 25 25 50 50 Read(A); A A+100; Write(A); Read(B); B B+100; Write(B); Schedule Β 150 150 150 150 12

Σειριόμορφο χρονοδιάγραμμα Υπάρχουν άλλα χρονοδιαγράμματα που να εγγυώνται τη συνέπεια της ΒΔ; Ένα χρονοδιαγράμματα S είναι σειριόμορφο (serializable) αν υπάρχει σειριακό χρονοδιαγράμματα S τέτοιο ώστε, για κάθε αρχική κατάσταση της ΒΔ, η επίδραση του S και του S να είναι η ίδια. 13

Σειριόμορφο χρονοδιάγραμμα T1 Read(A); A A+100; Write(A); T2 Read(A); A A*2; Write(A); A B 25 25 125 250 Read(B); B B+100; Write(B); Schedule C Read(B); B B*2; Write(B); 125 250 250 250 14

Μη-Σειριόμορφο χρονοδιάγραμμα T1 Read(A); A A+100; Write(A); T2 Read(A); A A*2; Write(A); A B 25 25 125 250 Read(B); B B+100; Write(B); Schedule D Read(B); B B*2; Write(B); 50 150 250 150 15

Σειριόμορφο χρονοδιάγραμμα T1 T2 Read(A); A A+100; Write(A); Read(A); A A+200; Write(A); Οι λεπτομέρειες των δοσοληψιών έχουν σημασία! Αλλά δεν είναι ρεαλιστικό ο scheduler να ασχολείται με αυτές τις λεπτομέρειες. Read(B); B B+100; Write(B); Schedule E Read(B); B B+200; Write(B); A B 25 25 125 325 225 325 325 325 16

Transaction Scheduling Θέλουμε να επιτρέπουμε την εκτέλεση μόνο «καλών» χρονοδιαγραμμάτων ανεξάρτητα από αρχικές καταστάσεις σημασιολογία των δοσοληψιών Μετράει μόνο η σειρά των αναγνώσεων και εγγραφών Παράδειγμα: Δεδομένου ενός χρονοδιαγράμματος στην παρακάτω μορφή, προσδιόρισε αν πρέπει να επιτραπεί η εκτέλεση του χωρίς να προκαλεί προβλήματα ασυνέπειας στην ΒΔ. Sc = r1(a)w1(a)r2(a)w2(a)r1(b)w1(b)r2(b)w2(b) 17

Συγκρούσεις (Conflicts) Τα περισσότερα ζεύγη ενεργειών δεν συγκρούονται Δεν πρέπει να εναλλάξομε την σειρά των ενεργειών όταν: Δύο ενέργειες ανήκουν στην ίδια δοσοληψία, γιατί η σειρά των ενεργειών είναι καθορισμένη Δύο εγγραφές του ίδιου στοιχείου της ΒΔ από διαφορετικές δοσοληψίες συγκρούονται Μια ανάγνωση και μια εγγραφή του ίδιου στοιχείου της ΒΔ από διαφορετικές δοσοληψίες συγκρούονται Γενικά, μπορούμε να εναλλάξουμε (swap) δύο ενέργειες που εκτελούνται από διαφορετικές δοσοληψίες, εκτός αν: Αφορούν το ίδιο στοιχείο της ΒΔ Τουλάχιστον η μία ενέργεια να είναι εγγραφή 18

Συγκρούσεις (Conflicts) Ένα χρονοδιάγραμμα είναι συγκρουσιακώς σειριόμορφο (conflict-serializable) αν είναι συγκρουσιακώς ισοδύναμο (conflict-equivalent δηλ. το ένα μπορεί να μετατραπεί στο άλλο μέσω μιας ακολουθίας μη συγκρουσιακών εναλλαγών) με ένα σειριακό χρονοδιάγραμμα. Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B) Sc =r1(a)w1(a) r1(b)w1(b)r2(a)w2(a)r2(b)w2(b) T1 T2 Το Sc είναι συγκρουσιακώς σειριόμορφο? 19

Χρονοπρογραμματισμός Δοσοληψιών (Transaction Scheduling) Παράδειγμα: Υπάρχει ισοδύναμο σειριακό χρονοδιάγραμμα του Sd=r1(A)w1(A)r2(A)w2(A) r2(b)w2(b)r1(b)w1(b)? Πρέπει να γίνει είτε T1, T2 είτε T2, T1. Όμως για το Sd: Sd=r1(A)w1(A)r2(A)w2(A) r2(b)w2(b)r1(b)w1(b) Για το Sd δεν υπάρχουν εναλλαγές που να το μετατρέπουν σε ισοδύναμο σειριακό, επομένως το Sd είναι «κακό» 20

Βασικές έννοιες Δοσοληψία (Transaction): μια σειρά ενεργειών ri(x) και wi(x) Συγκρουόμενες ενέργειες (Conflicting actions): r1(a) w2(a) w1(a) w2(a) r1(a) w2(a) Χρονοπρόγραμμα (Schedule): αναπαριστά την χρονολογική σειρά εκτέλεσης των ενεργειών Σειριακό χρονοπρόγραμμα (Serial schedule): δεν επιτρέπεται διαπλοκή (interleaving) των δοσοληψιών

Γράφημα προήγησης (precedence graph) Για ένα χρονοδιάγραμμα S, ο γράφος προήγησης P(S) ορίζεται ως εξής: Κόμβοι (Nodes): οι δοσοληψίες στο S Ακμές (Arcs): προηγείται η Ti έναντι της Tj (Ti Tj) όταν pi(a), qj(a) είναι ενέργειες στο S pi(a) < S qj(a) και αφορούν το ίδιο στοιχείο Α Τουλάχιστον ένα από τα pi, qj είναι ενέργεια εγγραφής 22

Γράφημα προήγησης (precedence graph) Παράδειγμα1 S : r2(a);r1(b);w2(a);r3(a);w1(b);w3(a);r2(b);w2(b); Για τις ενέργειες που αφορούν το Α, Τ2(A) < S Τ3(A) 2 3 Για τις ενέργειες που αφορούν το Β, Τ1(Β) < S Τ2(Β) 1 2 Συνολικά: 1 2 3 23

Γράφημα προήγησης (precedence graph) Παράδειγμα2 S : r2(a);r1(b);w2(a);r2(b);r3(a);w1(b);w3(a);w2(b); Για τις ενέργειες που αφορούν το Α, Τ2(A) < S Τ3(A) 2 3 Για τις ενέργειες όμως που αφορούν το Β, διαπιστώνουμε ότι Τ1(Β) < S Τ2(Β) και Τ2(Β) < S Τ1(Β) Συνολικά: 1 2 3 24

Γράφημα προήγησης (precedence graph) Άσκηση: Βρείτε το P(S) για το S = w3(a) w2(c) r1(a) w1(b) r1(c) w2(a) r4(a) w4(d) Για να διαπιστώσουμε αν ένα χρονοδιάγραμμα είναι συγκρουσιακώς σειριόμορφο, κατασκευάζουμε το γράφημα προήγησης και εξετάζουμε αν περιέχει κύκλους. Αν ναι, τότε δεν είναι συγκρουσιακώς σειριόμορφο. 25

Γράφημα προήγησης (precedence graph) Lemma S1, S2 conflict equivalent P(S1)=P(S2) Proof: Assume P(S1) P(S2) Then, Ti: Ti Tj in S1 and not in S2 S1 = pi(a)... qj(a) pi, qj S2 = qj(a) pi(a)... conflict Hence, S1 and S2 cannot be conflict equivalent Note: P(S1)=P(S2) does not imply S1, S2 conflict equivalent Counterexample: S1=w1(A) r2(a) w2(b) r1(b) S2=r2(A) w1(a) r1(b) w2(b) 26

Γράφημα προήγησης (precedence graph) Theorem: P(S1) acyclic iff S1 conflict serializable Proof: (if) Assume S1 is conflict serializable Ss: Ss, S1 conflict equivalent P(Ss) = P(S1) P(S1) acyclic since P(Ss) is acyclic (only if) Assume P(S1) is acyclic Transform S1 as follows: 1. Take T1 to be transaction with no incoming arcs 2. Move all T1 actions to the front 3. We now have S1 = < T1 actions ><... rest...>; remove T1 and incident arcs 4. Repeat above steps to serialize rest! 27

Επιβολή σειριομορφίας Επιλογή 1: επιτρέπουμε κάθε χρονοπρόγραμμα και ελέγχουμε για κύκλους στο γράφο προήγησης (reactive) Επιλογή 2: αποτρέπουμε κύκλους στο γράφο προήγησης (proactive) Πρωτόκολλα φραγμών/κλειδωμάτων (Locking protocols) χρησιμοποιούνται για την υλοποίηση της επιλογής 2 New actions: lock (exclusive), unlock Scheduler maintains information about locks in a lock table Rule 1: well-formed transactions A transaction is well-formed when every operation on a database item X (read or write) is preceded by a lock request on X and followed by an unlock request on X Rule 2: legal schedule A schedule is legal if no lock request is granted to a transaction T j for a database item X when a transaction T i has already been granted the lock to X 28

Απλό πρωτόκολλο φραγμών Δύο νέες ενέργειες: lock (exclusive): li (Χ) unlock: ui (Χ) Ένα μόνο είδος κλειδιού Rule #1: Well-formed transactions Ti: li(χ) pi(χ) ui(χ)... Rule #2: Legal schedule S =.. li(χ)... ui(χ)... όχι lj(χ) T1 T2 scheduler lock table Περιέχει εγγραφές του τύπου: Lock(X, Ti) 29

Απλό πρωτόκολλο φραγμών Άσκηση: Ποια από τα παρακάτω χρονοπρογράμματα είναι legal? Ποιες δοσοληψίες είναι well-formed? S1 = l1(a)l1(b)r1(a)w1(b)l2(b)u1(a)u1(b)r2(b)w2(b)u2(b)l3(b)r3(b)u3(b) S2 = l1(a)r1(a)w1(b)u1(a)u1(b)l2(b)r2(b)w2(b)l3(b)r3(b)u3(b) u2(b)? S3 = l1(a)r1(a)u1(a)l1(b)w1(b)u1(b)l2(b)r2(b)w2(b)u2(b)l3(b)r3(b)u3(b) 30

Διφασική φραγή (2-Phase Lock) Rule #3: 2-Phase Locking (2PL) Σε κάθε δοσοληψία, όλες οι αιτήσεις για φραγές προηγούνται όλων των αιτήσεων για εκφραγές/ξεκλειδώματα. Ιδέα: Ti =. li(a)... ui(a)... no unlock no locks # locks held by T i time Το προηγούμενο παράδειγμα S3 συμμορφώνεται με το 2PL? Growing Phase Shrinking Phase 31

Διφασική φραγή (2-Phase Lock) Διαισθητικά, μπορούμε να θεωρήσουμε ότι κάθε δοσοληψία 2PL εκτελείτε εξ ολοκλήρου την στιγμή που υποβάλλει το πρώτο αίτημα για unlock (απελευθέρωση του πρώτου στοιχείου) Για κάθε χρονοπρόγραμμα S που αποτελείται από 2PL δοσοληψίες υπάρχει πάντοτε τουλάχιστον ένα συγκρουσιακώς ισοδύναμο σειριακό χρονοπρόγραμμα (conflict-equivalent serial schedule): αυτό στο οποίο οι δοσοληψίες εμφανίζονται με την ίδια σειρά που έχουν οι πρώτες εκφραγές (unlocks) που εκτελούν Απόδειξη: με επαγωγή ως προς το πλήθος n των δοσοληψιών στο legal schedule S Σημείωση: εναλλάσσουμε (swap) την σειρά μόνο των ενεργειών read και write των διαφόρων δοσοληψιών και αγνοούμε τα locks και unlocks. Μόλις διατάξουμε σειριακά τις ενέργειες τότε προσθέτουμε τα lock / unlock 32

Επαγωγή Διφασική φραγή (2-Phase Lock) Αν n=1 τότε το S είναι ήδη σειριακό Έστω ότι το S περιέχει n δοσοληψίες T1, T2,, Tn. Let Ti be the first transaction to unlock an item by op. Ui(X). Then, it is possible to move all read/write actions of Ti to the beginning of S without passing any conflicting action. Let Ti include an action Wi(Y). If there existed an action Wj(Y) in S that precedes Wi(Y), then Uj(Y) and Li(Y) must also appear between Wj(Y) and Wi(Y). We assumed that Ui(X) is the first unlock, hence it precedes Uj(Y). This means that Ui(X) must also appear before Li(Y). But then, Ti is not a 2PL transaction. 33

2PL και Deadlocks Το 2PL δεν λύνει το πρόβλημα πιθανών αδιεξόδων (deadlocks) Παράδειγμα: Θεωρούμε το παρακάτω S L1(A), R1(A), L2(B), R2(B), W1(A), W2(B), L1(B), L2(A) wait Καμία δεν μπορεί να προχωρήσει, και οι δύο θα περιμένουν για πάντα η μια την άλλη για να απελευθερώσουν διαφορετικά αντικείμενα 34

Πολλαπλοί τύποι φραγμών Πρόβλημα: Με το 2PL εφαρμόζουμε μια φραγή στο στοιχείο Χ ακόμα και αν θέλουμε απλώς να το διαβάσουμε. Βελτίωση την απόδοση του 2PL με δύο διαφορετικά είδη φραγμών: Κοινόχρηστος φραγμός ή φραγμός ανάγνωσης (shared lock) Αποκλειστικός φραγμός ή φραγμός εγγραφής (exclusive lock) Κοινόχρηστος φραγμός ενέργειες ανάγνωσης δεν συγκρούονται δεν χρειάζεται αποκλειστικός φραγμός για ανάγνωση Συμβολισμός: SLi(X): Η Ti αιτείται ένα κοινόχρηστο φραγμό για το X XLi(X): Η Ti αιτείται ένα αποκλειστικό φραγμό για το X Ui(X): Η Ti απελευθερώνει τον φραγμό για το X 35

Κοινόχρηστος φραγμός Μέχρι τώρα στο 2PL: S =...l1(a) r1(a) u1(a) l2(a) r2(a) u2(a) Τώρα: Do not conflict S =... ls1(a) r1(a) ls2(a) r2(a). u1(a) u2(a) ui(a): απελευθερώνει οποιοδήποτε φραγμό έχει κλειδώσει η Ti το A 36

Απαιτήσεις shared και exclusive locks Συνέπειας (Consistency) 2PL Πριν από κάθε ενέργεια Ri(X) πρέπει να προηγείται μια ενέργεια SLi(X) ή XLi(X) χωρίς παρεμβολή μιας ενέργειας Ui(X) Πριν από κάθε ενέργεια Wi(X) πρέπει να προηγείται μια ενέργεια XLi(X) χωρίς παρεμβολή μιας ενέργειας Ui(X) Όλα τα κλειδώματα πρέπει να ακολουθούνται από ένα ξεκλείδωμα του στοιχείου Σε κάθε 2PL δοσοληψία Ti, καμία ενέργεια SLi(X) ή XLi(X) δεν μπορεί να έπεται μιας ενέργειας Ui(Υ) για κανένα Υ 37

Απαιτήσεις shared και exclusive locks Επιτρεπτότητα (Legality) Ένα στοιχείο μπορεί είτε να έχει ένα exclusive lock από μια δοσοληψία είτε να έχει shared lock από πολλές δοσοληψίες, αλλά όχι και τα δύο: Αν εμφανίζεται ένα XLi(X) τότε δεν μπορεί να ακολουθεί ένα XLj(X) ή SLj(X) για j διαφορετικό του i, χωρίς παρεμβολή μιας ενέργειας Ui(X) Αν εμφανίζεται ένα SLi(X) τότε δεν μπορεί να ακολουθεί ένα XLj(X) για j διαφορετικό του i, χωρίς παρεμβολή μιας ενέργειας Ui(X) 38

Παράδειγμα Θεωρούμε τις παρακάτω δοσοληψίες T1: SL1(A), R1(A), XL1(B), R1(B), W1(B), U1(A), U1(B) T2: SL2(A), R2(A), SL2(B), R2(B), U2(A), U2(B) Μια επιτρεπτή συμπλεγμένη εκτέλεση των T1, T2 : T1 SL1(A); R1(A); XL1(B); wait XL1(B); R1(B); W1(B); U1(A), U1(B) T2 SL2(A); R2(A); SL2(B), R2(B); U2(A); U2(B); Παρατήρηση: Το διπλανό χρονοπρόγραμμα είναι συγκρουσιακώς σειριόμορφο γιατί υπάρχει ισοδύναμη σειριακή διάταξη (Τ2,Τ1) 39

Μήτρα/Πίνακας συμβατότητας (compatibility matrix) Όταν έχουμε πολλούς τύπους φραγμών, ο scheduler χρειάζεται μια πολιτική για το πότε μπορεί να ικανοποιήσει ένα αίτημα φραγής. Ένας βολικός τρόπος περιγραφής της διαχείρισης των φραγμών είναι η μήτρα συμβατότητας (για κάθε στοιχείο). φραγμός που κατέχεται S φραγμός που απαιτείται S True False X False False X Η στήλη για το S λέει ότι μπορούμε να δώσουμε ένα s-lock αν δεν υπάρχει x-lock. Η στήλη για το X λέει ότι μπορούμε να δώσουμε ένα x-lock αν δεν υπάρχουν οτιδήποτε άλλοι φραγμοί. 40

Αναβάθμιση φραγμών (upgrading locks) Η δοσοληψία που θέλει να διαβάσει και να γράψει ένα στοιχείο, μπορεί πρώτα να αποκτήσει ένα κοινόχρηστο φραγμό για ανάγνωση και μετά να τον αναβαθμίσει (upgrade) σε ένα αποκλειστικό φραγμό για εγγραφή Παράδειγμα: T1: SL1(A), R1(A), SL1(B), R1(B), XL1(B), W1(B), U1(A), U1(B) T2: SL2(A), R2(A), SL2(B), R2(B), U2(A), U2(B) Αν είχε ζητήσει εξ αρχής XL1(Β), τότε θα περίμενε και δεν θα μπορούσε ούτε καν να διαβάσει το Β. T1 SL1(A); R1(A); SL1(B); R1(B); XL1(B); wait XL1(B); W1(B); U1(A); U1(B); T2 SL2(A); R2(A); SL2(B); R2(B); U2(A); U2(B); 41

Αναβάθμιση φραγμών (upgrading locks) Η αναβάθμιση των φραγμών μπορεί να οδηγήσει σε αδιέξοδα (deadlocks) Παράδειγμα: T1 SL1(A); R1(A); XL1(A); wait T2 SL2(A); R2(A); XL2(A); wait 42

Ενημερώσιμοι φραγμοί (update locks) Μπορούμε να αποφύγουμε τα αδιέξοδα που προκαλούνται από την αναβάθμιση φραγμών χρησιμοποιώντας update locks: Ένα update lock ULi(X) επιτρέπει στην δοσοληψία Ti να διαβάσει το X αλλά όχι να γράψει το X Μόνο ένα update lock μπορεί αργότερα να αναβαθμιστεί σε ένα write lock (ένας φραγμός ανάγνωσης δεν μπορεί να αναβαθμιστεί) Μπορούμε να χορηγήσουμε ένα update lock στο X όταν υπάρχουν ήδη shared locks στο X Μόλις υπάρξει ένα update lock στο X, δεν επιτρέπεται η χορήγηση οποιοδήποτε άλλου είδους προσθέτων locks στο X (διαφορετικά μπορεί να μην καταφέρει ποτέ να αναβαθμίσει το lock σε exclusive γιατί υπάρχουν πάντοτε άλλοι φραγμοί) 43

Ενημερώσιμοι φραγμοί (update locks) Παράδειγμα: T1: UL1(A); R1(A); XL1(A); W1(A); U1(A); T2: UL2(A); R2(A); XL2(A); W2(A); U2(A); T1 T2 UL1(A); R1(A); XL1(A); W1(A); U1(A); UL2(A); wait UL2(A); R2(A); XL2(A); W2(A); U2(A); 44

Ενημερώσιμοι φραγμοί (update locks) Πίνακας συμβατότητας φραγμός που απαιτείται φραγμός που κατέχεται S X U S True False True X False False False U False False False 45

Φραγμοί αύξησης (increment locks) Η μόνη πράξη που εκτελούν πολλές δοσοληψίες είναι η αύξηση ή η μείωση των αποθηκευμένων τιμών π.χ., μεταφορά χρημάτων μεταξύ λογαριασμών, κρατήσεις θέσεων Η χρήσιμη ιδιότητα των ενεργειών αυτών είναι ότι μπορούν να αντιμετατεθούν μεταξύ τους αφού η σχετική τους σειρά δεν παίζει σημασία. Όμως, δεν μπορούν να αντιμετατεθούν με πράξεις που γράφουν ή διαβάζουν. Μια πράξη της μορφής INC(A,c), συμβολίζει την αύξηση του στοιχείου Α κατά μια σταθερά c Δηλαδή INC(A,c) σημαίνει: Read(A,t); t:=t+c; Write(A,t); Πράξεις αύξησης χρειάζονται και φραγμούς αύξησης: ILi(X) 46

Φραγμοί αύξησης (increment locks) Η ύπαρξη φραγμών αύξησης μας υποχρεώνει να κάνουμε τις εξής τροποποιήσεις: Μια συνεπής δοσοληψία μπορεί να κάνει μια ενέργεια αύξησης INCi(X) επί του Χ μόνο αν ήδη κατέχει ένα φραγμό αύξησης ILi(X) Σε ένα επιτρεπτό schedule, κάθε χρονική στιγμή οσεσδήποτε δοσοληψίες μπορούν να κατέχουν ένα φραγμό αύξησης επί του Χ. Αν μια δοσοληψία έχει ένα φραγμό αύξησης στο Χ, τότε καμία άλλη δοσοληψία δεν μπορεί να έχει ένα shared ή exclusive lock στο Χ την ίδια στιγμή. INCi(X) συγκρούεται με την Rj(X) και την Wj(X) για j διάφορο του i INCi(X) δεν συγκρούεται με την INCj(X) 47

Φραγμοί αύξησης (increment locks) Παράδειγμα: T1: SL1(A); R1(A); IL1(B); INC1(B); U1(A); U1(B); T2: SL2(A); R2(A); IL2(B); INC2(B); U2(A); U2(B); T1 T2 SL1(A); R1(A); IL1(B); INC1(B); U1(A); U1(B); SL2(A); R2(A); IL2(B); INC2(B); UL2(A); R2(A); 48

Φραγμοί αύξησης (increment locks) Πίνακας συμβατότητας φραγμός που απαιτείται φραγμός που κατέχεται S X I S True False False X False False False I False False True 49

Πίνακας φραγμών (lock table) Ο χρονοπρογραμματιστής διατηρεί ένα πίνακα φραγμών A...... Object: A Group mode: U Waiting: yes List: T1 S no T2 U no hash table Εξυπηρέτηση φραγμών σε αναμονή: με σειρά άφιξης ή πρώτα οι S ή πρώτα οι U T3 X yes σε άλλα της Τ3 50