1 ניהול תנועות חלק 2 transaction management part 2

35
1 תתתתת תתתתתת תתת2 Transaction Management Part 2

Post on 21-Dec-2015

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 ניהול תנועות חלק 2 Transaction Management Part 2

1

ניהול תנועות2חלק

Transaction Management

Part 2

Page 2: 1 ניהול תנועות חלק 2 Transaction Management Part 2

2

" נעילות י ע מקבילות בקרת

Page 3: 1 ניהול תנועות חלק 2 Transaction Management Part 2

3

Lockingנעילות

המטרה היא להבטיח שנוצרים רק תיזמונים ברי-סדרתיות

דרך אחת לעשות זאת היא ע"י שימוש (locksבמנעולים )

לכל פריט יש שני סוגי מנעוליםS(, שמסומן ע"י sharedמנעול משותף )X(, שמסומן ע"י exclusiveמנעול בלעדי )

Page 4: 1 ניהול תנועות חלק 2 Transaction Management Part 2

4

? נועלים צורך לאיזה

צריך תחילה לנעול אותו Aכדי לקרוא פריט במנעול משותף

בעקרון אפשר לשחרר את המנעול אחרי הקריאה

צריך תחילה לנעול אותו Aכדי לכתוב פריט במנעול בלעדי

בעקרון אפשר לשחרר את המנעול אחרי הכתיבה

אם אחרי קריאה צריך לכתוב, אז עסקה יכולה לשדרג מנעול משותף למנעול בלעדי

הבקשות למנעולים מופנות למנהל הנעילות

Page 5: 1 ניהול תנועות חלק 2 Transaction Management Part 2

5

? לנעול מותר מתי

מספר עסקאות יכולות להחזיק בו-זמנית מנעול Aמשותף על פריט

Aבתנאי שאין אף עסקה שמחזיקה מנעול בלעדי על

רק עסקה אחת יכולה להחזיק מנעול בלעדי על Aפריט

ואז לאף עסקה אחרת אין מנעול משותף או בלעדי Aעל

מנהל הנעילות מוודא שהכללים נשמרים

Page 6: 1 ניהול תנועות חלק 2 Transaction Management Part 2

6

פאזות בשתי נעילות פרוטוקול

Two-Phase Locking )2PL(

Page 7: 1 ניהול תנועות חלק 2 Transaction Management Part 2

7

פרוטוקול נעילות בשתי פאזותTwo-Phase Locking )2PL(

לקבל חייבת עסקהפריט של קריאה לפני משותף מנעול

פריט של כתיבה לפני בלעדי מנעול

היא כלשהו מנעול משחררת שעסקה לאחרנוספים מנעולים לבקש יכולה לא

" פאזות " בשתי נעילות קרוי הפרוטוקול לכןמנעולים קבלת של פאזה תחילה

מנעולים שחרור של פאזה ולאחריה

Page 8: 1 ניהול תנועות חלק 2 Transaction Management Part 2

8

הוא2PLתזמון שמקיים בר-סדרתיות קונפליקטית

: תזמון שבו כל עסקה מקיימת משפט הנו בר-סדרתיות 2PLפרוטוקול

קונפליקטית ונניח 2PL תזמון שמקיים S: יהי הוכחה

שבגרף הקדימויות יש מעגלהמשך ההוכחה בשקפים הבאים

Page 9: 1 ניהול תנועות חלק 2 Transaction Management Part 2

9

פירושה:T2 ל- T1צלע מ-

אז פירוש הדבר שיש T1 → T2אם יש צלע פריט כלשהו כך שאחת משתי העסקאות

כותבת אותו )ולכן מחזיקה עליו מנעול בלעדי( והשניה קוראת או כותבת אותו, ולכן

גם היא מחזיקה עליו מנעול משחררת מנעול על פריט T1: מסקנה

מקבלת מנעול על אותו T2כלשהו לפני ש- פריט

Page 10: 1 ניהול תנועות חלק 2 Transaction Management Part 2

10

→ T1 → T2 → T3אם יש מסלול T4 -אז נובע ש

T1 -משחררת מנעול לפני ש T2מקבלת מנעול

T2 -משחררת מנעול לפני ש T3מקבלת מנעול

T3 -משחררת מנעול לפני ש T4מקבלת מנעול :ובאופן טרנזיטיבי

T1 -משחררת מנעול על פריט כלשהו לפני ש T4 )יתכן אבל לא מקבלת מנעול על פריט אחר

הכרחי ששני המנעולים על אותו פריט(

Page 11: 1 ניהול תנועות חלק 2 Transaction Management Part 2

11

לפיכך, אם יש מעגל T1 → T2 → T3 → T4 → T1

נובע ש- אזT1 משחררת מנעול על פריט כלשהו לפני

פריט אחר מקבלת מנעול עלT1ש-

2PLאינה מקיימת פרוטוקול T1: מסקנהמכיוון שהגענו לסתירה, נובע שבגרף

הוא Sהקדימויות אין מעגל והתזמון בר-סדרתיות קונפליקטית

מ.ש.ל.

Page 12: 1 ניהול תנועות חלק 2 Transaction Management Part 2

12

המנעולים מנהלקיפאון במצבי וטיפול

Page 13: 1 ניהול תנועות חלק 2 Transaction Management Part 2

13

מנהל מנעוליםLock Manager

מנהל המנעולים מטפל בבקשות למנעולים ובשחרור מנעולים

עםAמחזיק טבלה שיש בה כניסה לכל פריט Aרשימת העסקאות שכרגע מחזיקות מנעול על

סוג המנעולAמצביע לתור של בקשות למנעולים על

קבלה של מנעול ושחרור של מנעול צריכות להתבצע כפעולות אטומיות

ניתן לשדרג מנעול משותף למנעול בלעדי

Page 14: 1 ניהול תנועות חלק 2 Transaction Management Part 2

14

מצב של קיפאוןDeadlock

מעגל קיים כאשר מתרחש קיפאון של מצב , מחכה במעגל עסקה שכל כך עסקאות של " הבאה העסקה י ע מוחזק שכרגע למנעול

במעגל: קיפאון במצבי לטפל דרכים שתי

קיפאון מצבי מניעתוביטולם קיפאון מצבי גילוי

Page 15: 1 ניהול תנועות חלק 2 Transaction Management Part 2

15

קיפאון מצב גילוי

waits-forבונים גרף של "מחכה ל-" )graph)

צומת לכל עסקה מחכה למנעול שכרגע T1 אם T2 ל- T1צלע מ-

T2מחזיקה

מפעם לפעם מנהל המנעולים בודק אם יש בגרף מעגל )שפירושו מצב של קיפאון(

אם יש מעגל, מבטלים את אחת העסקאות שנמצאת על המעגל, ומתחילים אותה מחדש

Page 16: 1 ניהול תנועות חלק 2 Transaction Management Part 2

16

מנעול : דוגמה מבקשת כשהיא נעצרת עסקה , נתקע התהליך וכל אחרת עסקה שמחזיקה

) אופקי ) הוא הזמן ציר מעגל כשנוצר

T1: S)A(, R)A(, S)B(T2: X)B(,W)B( X)C(T3: S)C(, R)C(

X)A(T4: X)B(

T1 T2

T4 T3

T1 T2

T4 T3

Page 17: 1 ניהול תנועות חלק 2 Transaction Management Part 2

17

קיפאון מצבי מניעת

)שמציינת חותמת זמן נותנים לכל עסקה את זמן ההתחלה של העסקה(

זמן מוקדם יותר עדיף על זמן מאוחר יותר מחזיקהT2 מחכה למנעול ש- T1נניח ש-

שתי דרכים לפיהן ניתן לפעול:Wait-Die

Wound-Wait

Page 18: 1 ניהול תנועות חלק 2 Transaction Management Part 2

18

מחכה למנעולT1 ,כאמור מחזיקהT2ש-

Wait-Die עסקה צעירה שמבקשת מנעול –עלולה להתבטל

מחכה לשחרור T1 עדיפות גבוהה יותר, אז T1אם ל- )כלומר, T1; אחרת מבטלים את T2המנעול ע"י ( ומתחילים אותה מחדשabortמבצעים לה

Wound-Wait עסקה צעירה שמחזיקה מנעול – עלולה להתבטל

; T2 עדיפות גבוהה יותר, אז מבטלים את T1אם ל- T2 מחכה ל- T1אחרת

Page 19: 1 ניהול תנועות חלק 2 Transaction Management Part 2

19

Wait-Die

עסקה ותיקה שצריכה מנעול מחכה לעסקה צעירה שמחזיקה מנעול זה

עסקה שהשיגה את כל המנעולים שהיא צריכה יכולה לסיים

עסקה צעירה עלולה להתבטל שוב ושוב אם בכל פעם שהיא צריכה מנעול, אזי

מנעול זה מוחזק ע"י עסקאות ותיקות יותר

Page 20: 1 ניהול תנועות חלק 2 Transaction Management Part 2

20

Wound-Wait

מחזיקה היא אם מתבטלת צעירה עסקהיותר ותיקה עסקה שצריכה מנעול

כבר היא אם גם להתבטל עלולה עסקהולכן ) צריכה שהיא המנעולים כל את השיגה

) לסיים יכולהמתעכבת אינה ותיקה עסקה

Page 21: 1 ניהול תנועות חלק 2 Transaction Management Part 2

21

הדרכים שתי לגבי סיכוםקיפאון מצבי למניעת

בכל אחת משתי הדרכים אין אפשרות לקיפאוןהעסקה הותיקה ביותר במערכת אינה מתבטלת

( פירושה שעסקה לא starvation)הרעבה מצליחה אף פעם להשיג את כל המנעולים שהיא

צריכה כלומר העסקה מתבטלת שוב ושוב ולכן אינה מסתיימת

כדי למנוע הרעבה, כשמתחילים עסקה מחדש, צריך להשאיר לה את חותמת הזמן שהייתה לה

קודם

Page 22: 1 ניהול תנועות חלק 2 Transaction Management Part 2

22

מנפילות התאוששות

זוהי רק הקדמה קצרה ואינטואיטיבית של המושגים

הבסיסיים

Page 23: 1 ניהול תנועות חלק 2 Transaction Management Part 2

23

כסף: העברת דוגמהלחשבון מחשבון

A, Bחשבונות בנק B ל- A ₪ מ- 100נעביר

התוכנית:

התוכנית נכונה, אבל מה קורה אם המחשב נופל אחרי ביצוע הפקודה הראשונה?

B ולא הוספנו ל- Aהורדנו כסף מ- התוכנית הסתיימה בצורה שגויה

A:=A-100

B:=B+100

Page 24: 1 ניהול תנועות חלק 2 Transaction Management Part 2

24

תוכנית של אטומי ביצוע

תוכנית הפועלת על מסד נתונים צריכה , כלומראטומילהתבצע באופן

התוכנית מתבצעת בשלמותה, אושאינה מתבצעת כלל

( commit)מבצעת מתחייבת תוכנית לאחר שביצעה את כל פעולותיה

אם התוכנית התחייבה, אז כל פעולותיה נשמרות

אחרת, שום פעולה שביצעה לא נשמרת במסד

Page 25: 1 ניהול תנועות חלק 2 Transaction Management Part 2

25

(Recoveryמנגנון התאוששות )

לכל מערכת מסד נתונים מנגנון התאוששות שאחראי על הדברים הבאים:

לבטל את כל הפעולות שעשתה התוכנית אם commit( לפני שביצעה abortהיא נפלה )

לוודא שכל הפעולות של התוכנית נשמרות commitבמסד אם התוכנית ביצעה

מאוחר יותר נסביר איך פועל מנגנון ההתאוששות

Page 26: 1 ניהול תנועות חלק 2 Transaction Management Part 2

26

התאוששות שמאפשר תזמון

Page 27: 1 ניהול תנועות חלק 2 Transaction Management Part 2

27

קריאה מלוכלכתDirty Read

A קוראת ערך של פריט T1נניח שעסקה T2שנכתב ע"י עסקה

מתבטלת, אזT2אם בהמשך עסקה ! )כי קראה ערך שלמעשה T1צריך לבטל גם את

אינו קיים((cascading abortsנוצר מפל הפלות )

( לפני שמספיקים commit התחייבה )עשתה T1אם לבטל אותה, אז התזמון אינו מאפשר התאוששות

(schedule is not recoverable כי אין דרך ,) ואין דרך לבטלה )כי ביטולה מחייב גם T2לסיים את

(T1את הביטול של

Page 28: 1 ניהול תנועות חלק 2 Transaction Management Part 2

28

תזמון שמאפשר התאוששות(Recoverable Schedule)

תזמון מאפשר התאוששות אם עסקה מתחייבת רק אחרי )ובתנאי ש-( כל העסקאות שאת ערכיהן היא קראה

התחייבובפועל מקפידים על דרישה מחמירה יותר

עסקה רשאית לקרוא רק ערכים שנכתבו ע"י עסקאות שכבר התחייבו

תזמון שמקיים תנאי זה מאפשר התאוששות ( recoverableומונע מפל הפלות )

Page 29: 1 ניהול תנועות חלק 2 Transaction Management Part 2

29

מחמיר2PLפרוטוקול Strict 2PL

הרגיל ובתוספת הדרישה הבאה2PLכמו עסקה משחררת את המנעולים שהיא מחזיקה

רק אחרי שהתחייבה

הפרוטוקול המחמיר מונע מפל הפלות ומאפשר התאוששות, כאשר צריך לבטל

עסקה כלשהי

Page 30: 1 ניהול תנועות חלק 2 Transaction Management Part 2

30

הפאנטומים בעיית

Page 31: 1 ניהול תנועות חלק 2 Transaction Management Part 2

31

: דינמי במסד עסקאותהפאנטומים בעיית

EMPS)Name,Dept,Age(T1 אמורה למצוא את העובד המבוגר

EE וב- CSביותר ב- T2 -מוסיפה עובד חדש ל CS שהוא

את העובד EEהמבוגר ביותר, ומוחקת מ- המבוגר ביותר

Page 32: 1 ניהול תנועות חלק 2 Transaction Management Part 2

32

2PLתזמון אפשרי שמקיים

T1 נועלת את כל הרשומות של CS ומוצאת את (71העובד המבוגר ביותר )שגילו

T2 -מוסיפה עובד ל CS 75 שגילו מחזיקה מנעולים על כל T1אפשר לעשות זאת בזמן ש-

שקיימות כרגע במסדCSהרשומות של

T2 נועלת את כל הרשומות של EE -ומוחקת מ EE (80את העובד המבוגר ביותר )שגילו

T2 משחררת את כל המנעולים שהיא מחזיקה

T1 נועלת את כל הרשומות של EE ומוצאת העובד (63המבוגר ביותר )שגילו

T1 פועלת ראשונה על CS ושניה על EE -ו T2 בדיוק להפך

Page 33: 1 ניהול תנועות חלק 2 Transaction Management Part 2

33

שקול סדרתי תזמון אין

רצה ראשונה, אז היא צריכה T1אם EE ל- 80 וגיל CS ל- 71להחזיר גיל

רצה שניה, אז היא צריכה להחזיר T1 אם EE ל- 63 וגיל CS ל- 75גיל

מחזיקה T1הבעיה נוצרה מכיוון ש- , CSמנעולים על הרשומות שהן כרגע ב-

CSאבל לא על הרשומות שמתווספות ל- תוך כדי פעולתה

Page 34: 1 ניהול תנועות חלק 2 Transaction Management Part 2

34

מסקנה

בר-סדרתיות קונפליקטית מבטיחה בר-סדרתיות רק אם קבוצת הפריטים

שפועלים עליה הנה קבועה

Page 35: 1 ניהול תנועות חלק 2 Transaction Management Part 2

35

פתרון אפשרי: נעילת פרדיקטיםPredicate Locking

עסקה צריכה לקבל מנעול על כל הרשומות שמקיימות תנאי )פרדיקט( מסוים, למשל

AGE > 50 או DEPT = CS

אם אין נעילת פרדיקטים במקרה הכללי )זה תהליך יקר(,אז קל יותר לנעול את כל הרשומות שמקיימות את התנאי

DEPT = CS אם יש אינדקס על DEPT נועלים את כל הבלוקים שבהם נמצאים )או צריכים

DEPT=CSלהימצא( נתוני הכניסה עבור אם אין אינדקס, צריך מנגנון שמוודא שלא מתווספות רשומות

שמקיימות EMPS, כאשר עסקה נועלת רשומות של EMPSל- DEPT = CSאת התנאי