Χρονοπρόγραμμα: Διαφορά μεταξύ των αναθεωρήσεων
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Χωρίς σύνοψη επεξεργασίας |
μ Ρομπότ: Τροποποίηση: en:Schedule (computer science); διακοσμητικές αλλαγές |
||
Γραμμή 1:
Στους τομείς των [[Βάση δεδομένων|Βάσεων Δεδομένων]] (ΒΔ) και την '''Επεξεργασία Συναλλαγών''' (διαχείριση συναλλαγών) ένα χρονοπρόγράμμα ενός συστήματος είναι ένα αφηρημένο μοντέλο που περιγράφει την εκτέλεση [[συναλλαγή (Βάσεις δεδομένων)|συναλλαγών]] που τρέχουν στο σύστημα. Συχνά είναι μια λίστα από ενέργειες οι οποίες αναπαρίστανται με χρονική σειρά και εκτελούνται από ένα σύνολο συναλλαγών οι οποίες με την σειρά τους εκτελούνται όλες μαζί στο σύστημα. Παραδείγματα αυτών των ενεργειών είναι τα read, write, abort , commit, αίτηση κλειδώματος, κλείδωμα κοκ. Δεν λαμβάνουν μέρος όλα τα είδη ενεργειών των συναλλαγών σε ένα χρονοπρόγραμμα και μόνο προεπιλεγμένα είδη ενεργειών συμπεριλαμβάνονται, που χρειάζονται για να περιγράψουν συγκεκριμένα φαινόμενα. Χρονοπρογράμματα και ιδιότητες χρονοπρογραμμάτων είναι απαραίτητα στοιχεία για τον [[Έλεγχος Ταυτοχρονισμού|έλεγχο ταυτοχρονισμού]] σε μια ΒΔ.
== Περιγραφή ενός Χρονοπρογράμματος ==
Το παρακάτω είναι ένα παράδειγμα χρονοπρογράμματος:
Γραμμή 24:
Συνήθως για την αιτιολόγηση του ελέγχου ταυτοχρονισμού στις ΒΔ, μία ενέργεια χαρακτηρίζεται σαν ατομική όταν προκύπτει σε μια χρονική στιγμή (χωρίς διάρκεια). Όταν αυτό δεν είναι ικανοποιητικό, χρονικά σημεία αρχής και τέλους και πιθανότητα άλλα σημεία γεγονότων προσδιορίζονται (σπανίως βέβαια). Οι ενέργειες που εκτελούνται έχουν πάντα συγκεκριμένο χρόνο εκτέλεσης (πχ ακριβής χρόνος μέχρι την ολοκλήρωση τους), όμως για την αιτιολόγηση του ελέγχου ταυτοχρονισμού μόνο η χρονική προτεραιότητα έχει σημασία. Επιπρόσθετα σε πολλές περιπτώσεις οι πριν/μετά σχέσεις μεταξύ δυο ενεργειών δεν έχουν σημασία και δεν ορίζονται, αφού ορίζονται για άλλους συνδυασμούς ενεργειών.
Γενικά οι ενέργειες των συναλλαγών σε ένα χρονοπρόγραμμα μπορούν να περιπλέκουν
Η χρονική σειρά μεταξύ δυο ενεργειών μπορεί να αναπαρασταθεί από ένα ζεύγος αυτών των ενεργειών (π.χ. η ύπαρξη ενός ζεύγους (OP1,OP2) σημαίνει ότι η OP1 είναι πάντα πριν από την ενέργεια OP2), και ένα χρονοπρόγραμμα είναι ένα σύνολο τέτοιων ορισμένων ζευγών.
== Τύποι χρονοπρογραμμάτων ==
=== Σειριακά ===
Οι συναλλαγές εκτελούνται μη περιπλεγμένα (βλέπε παράδειγμα παρακάτω), δηλαδή σειριακό χρονοπρόγραμμα είναι ένα χρονοπρόγραμμα στο οποίο καμία συναλλαγή δεν αρχίζει πριν τελειώσει μια συναλλαγή η οποία ήδη τρέχει.
=== Σειριοποιήσιμο ===
Ένα χρονοπρόγραμμα που είναι ισοδύναμο (ως προς το αποτέλεσμα) με ένα σειριακό χρονοπρόγραμμα όχι την ιδιότητα σειριοποιησιμότητας.
Γραμμή 54:
Com. & Com. & Com. \end{bmatrix}</math>
==== Συγκρούσεις ====
Δύο οι περισσότερες ενέργειες καταλήγουν σε σύγκρουση αν:
Γραμμή 69:
* T1:R(X), T2:W(Y), T3:R(X)
==== Ισοδύναμα Συγκρούσεων ====
Τα χρονοπρογράμματα S1, S2 μπορούμε να πούμε ότι είναι ισοδύναμα συγκρούσεων αν ισχύουν τα ακόλουθα:
Γραμμή 76:
# Η σειρά συγκρουόμενων ενεργειών στα χρονοπρογράμματα S1 και S2 είναι ίδια .
==== Σειριοποιησιμότητα Συγκρούσεων ====
Ένα χρονοπρόγραμμα είναι σειριοποιήσιμο συγκρούσεων όταν το χρονοπρόγραμμα είναι ισοδύναμο συγκρούσεων με ένα ή περισσότερα σειριακά χρονοπρογράμματα.
Μια αλλά εκδοχή
:<math>G = \begin{bmatrix}
Γραμμή 92:
&\end{bmatrix}</math>
Το οποίο είναι ισοδύναμο συγκρούσεων με
==== Ισοδυναμία Όψεως ====
Δυο χρονοπρογράμματα S1, S2 είναι ισοδύναμα όψεως όταν ισχύουν οι ακόλουθες συνθήκες:
Γραμμή 102:
# Αν η πράξη W<sub>i</sub>(Y) στο S1 είναι η τελευταία πράξη που τροποποιεί το Y τότε πρέπει να ισχύει η ίδια συνθήκη και στο S2.
==== Σειριοποιησιμότητα Όψεως ====
Ένα χρονοπρόγραμμα είναι σειριοποιήσιμο όψεως αν είναι ισοδύναμο όψεως με μερικά σειριακά χρονοπρογράμματα. Εξ’ ορισμού όλα τα σειριοποιήσιμα συγκρούσεως είναι σειριοποιήσιμα όψεως.
Γραμμή 128:
Το παραπάνω παράδειγμα δεν είναι σειριοποιήσιμο συγκρούσεων αλλά είναι σειριοποιήσιμο όψεως μια και είναι σειριακό χρονοπρόγραμμα ισοδύναμο όψεως <T1, T2, T3>.
==== Ανακτησιμότητα ====
Οι συναλλαγές κάνουν commit μόνο αφού όλες οι συναλλαγές οι οποίες έχουν αλλάξει έχουν διαβάσει το commit.
Γραμμή 151:
&\end{bmatrix}</math>
Αυτά τα χρονοπρογράμματα είναι ανακτήσιμα. Το F είναι ανακτήσιμο επειδή η Τ1 κάνει commit
==== Μη – ανακτήσιμο ====
Αν μια συναλλαγή Τ1 κάνει abort και η συναλλαγή Τ2 που βασίζεται πάνω στην Τ1 κάνει commit τότε έχουμε ένα μη ανακτήσιμο χρονοπρόγραμμα.
Γραμμή 169:
Σε αυτό το παράδειγμα το G χρονοπρόγραμμα είναι μη – ανακτήσιμο επειδή η Τ2 διάβασε την Τ1 η οποία δεν έγινε commit και έτσι έχουμε μια εσφαλμένη Τ2 αφού μετά μαθαίνουμε ότι η Τ1 έχει γίνει abort.
==== Αποφυγή διαδοχικών abort (rollbacks) ====
Ένα abort σε μια συναλλαγή μπορεί να οδηγήσει σε πολλά περισσότερα. Μια στρατηγική για να αποφευχθεί αυτό είναι να μην επιτρέπεται από μια συναλλαγή να διαβάζει συναλλαγές οι οποίες δεν έχουν γίνει commit από το ίδιο χρονοπρόγραμμα.
Γραμμή 193:
&\end{bmatrix}</math>
Σε αυτό το παράδειγμα παρόλο που η F2 είναι ανακτήσιμη δεν μπορεί να αποφύγει τα διαδοχικά aborts. Μπορούμε να δούμε αν κάνει abort η Τ1 τότε και η Τ2 θα πρέπει να γίνει abort
Το παρακάτω είναι ένα ανακτήσιμο χρονοπρόγραμμα το οποίο αποφεύγει διαδοχικά abort. Όμως χάνεται το γράψιμο της Τ1.
Γραμμή 209:
Η τεχνική αποφυγής διαδοχικών abort αλλά όχι απαραίτητη για χρονοπρογράμματα έτσι ώστε να είναι ανακτήσιμα.
==== Strict ====
Ένα χρονοπρόγραμμα είναι strict, έχει την ιδιότητα strictness, αν για οποιαδήποτε από τις δυο συναλλαγές Τ1, Τ2 αν μια ενέργεια διαβάσματος της Τ1 οδηγήσει σε σύγκρουση με την Τ2 (είτε με διάβασμα είτε με γράψιμο),
Οποιοδήποτε strict χρονοπρόγραμμα είναι μη – διαδοχικών abort, αλλά όχι το αντίθετο. Η ιδιότητα αυτή είναι αποτελεσματική στην ανακτησιμότητα και αποτρέπει αποτυχίες στην βάση δεδομένων.
== Ιεραρχία μεταξύ σειριοποιήσιμο κλάσεων ==
Οι παρακάτω διάταξη υποκλάσεων δείχνει την ιεραρχία μεταξύ σειριοποιήσιμο κλάσεων.
* Serial
* Serial
Το διάγραμμα Venn επεξηγεί τις παραπάνω διατάξεις γραφικά.
Γραμμή 227:
[[Αρχείο:Venn diagram.jpg]]
== Αναφορές ==
* [[Phil Bernstein|Philip A. Bernstein]], Vassos Hadzilacos, Nathan Goodman: [http://research.microsoft.com/en-us/people/philbe/ccontrol.aspx
* [[Gerhard Weikum]], Gottfried Vossen: [http://www.elsevier.com/wps/find/bookdescription.cws_home/677937/description#description
[[Κατηγορία:Βάσεις δεδομένων]]▼
[[de:Historie (Transaktionsverarbeitung)]]
[[
[[he:תזמון]]
[[ja:スケジュール (コンピュータ科学)]]
[[ko:스케줄 (컴퓨터 과학)]]
▲[[Κατηγορία:Βάσεις δεδομένων]]
|