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

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
1 ניהול תנועות חלק 3 Transaction Management Part 3.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
מתמטיקה בדידה תרגול 3.
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
R. Bar-Yehuda © 1 קומבינטוריקה למדעי - המחשב – הרצאה #14 Graph theory – תורת הגרפים Chapter 1: PATHS IN GRAPHS – 1. מסלולים.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
חישוב ואופטימיזציה של שאילתות חלק 1
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
טיפול בקיפאון בעיית הקיפאון הימנעות מקיפאון
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
1 מפרטים פורמאליים תרגול מספר 1 מהות הקורס:כח ביטוי. בעיות מעשיות (ולא הוכחות) מתרגל אחראי:שחר דג מתרגלת:אמיליה כץ אתר:
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
Remember Remember The 5 th of November. תרגול 2 קובץ סדרתי.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
– © Yohai Devir 2007 © Dima Elenbogen 2009 Technion - IIT Tutorial #7 Preventing combinatorial loops.
1 Formal Specifications for Complex Systems (236368) Tirgul Hazara.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
1 ניהול תנועות חלק 2 Transaction Management Part 2.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
מתמטיקה בדידה תרגול 2.
1 Spring Semester 2007, Dept. of Computer Science, Technion Internet Networking recitation #3 Internet Control Message Protocol (ICMP)
Lecture 13 Maximal Accurate Forests From Distance Matrix.
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מסדי נתונים תשס " ג 1 תכנון וכוונון מסד הנתונים (Tuning the Database) קורס מסדי נתונים.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Formal Specifications for Complex Systems (236368) Tutorial #1
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש
חיפוש לוקלי Local Search.
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
Marina Kogan Sadetsky –
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Computer Architecture and Assembly Language
Presentation transcript:

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

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

3 נעילות Locking המטרה היא להבטיח שנוצרים רק תיזמונים ברי - סדרתיות דרך אחת לעשות זאת היא ע " י שימוש במנעולים (locks) לכל פריט יש שני סוגי מנעולים מנעול משותף (shared), שמסומן ע"י S מנעול בלעדי (exclusive), שמסומן ע"י X

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

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

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

7 פרוטוקול נעילות בשתי פאזות Two-Phase Locking (2PL) עסקה חייבת לקבל מנעול משותף לפני קריאה של פריט מנעול בלעדי לפני כתיבה של פריט לאחר שעסקה משחררת מנעול כלשהו היא לא יכולה לבקש מנעולים נוספים לכן הפרוטוקול קרוי " נעילות בשתי פאזות " תחילה פאזה של קבלת מנעולים ולאחריה פאזה של שחרור מנעולים

8 תזמון שמקיים 2PL הוא בר - סדרתיות קונפליקטית משפט : תזמון שבו כל עסקה מקיימת פרוטוקול 2PL הנו בר - סדרתיות קונפליקטית הוכחה : יהי S תזמון שמקיים 2PL ונניח שבגרף הקדימויות יש מעגל המשך ההוכחה בשקפים הבאים

9 צלע מ - T 1 ל - T 2 פירושה : אם יש צלע T 1 → T 2 אז פירוש הדבר שיש פריט כלשהו כך שאחת משתי העסקאות כותבת אותו ( ולכן מחזיקה עליו מנעול בלעדי ) והשניה קוראת או כותבת אותו, ולכן גם היא מחזיקה עליו מנעול מסקנה : T 1 משחררת מנעול על פריט כלשהו לפני ש - T 2 מקבלת מנעול על אותו פריט

10 אם יש מסלול T 1 → T 2 → T 3 → T 4 אז נובע ש - T 1 משחררת מנעול לפני ש - T 2 מקבלת מנעול T 2 משחררת מנעול לפני ש - T 3 מקבלת מנעול T 3 משחררת מנעול לפני ש - T 4 מקבלת מנעול ובאופן טרנזיטיבי : T 1 משחררת מנעול על פריט כלשהו לפני ש- T 4 מקבלת מנעול על פריט אחר (יתכן אבל לא הכרחי ששני המנעולים על אותו פריט)

11 לפיכך, אם יש מעגל T 1 → T 2 → T 3 → T 4 → T 1 אז נובע ש - T 1 משחררת מנעול על פריט כלשהו לפני ש - T 1 מקבלת מנעול על פריט אחר מסקנה : T 1 אינה מקיימת פרוטוקול 2PL מכיוון שהגענו לסתירה, נובע שבגרף הקדימויות אין מעגל והתזמון S הוא בר - סדרתיות קונפליקטית מ. ש. ל.

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

13 מנהל מנעולים Lock Manager מנהל המנעולים מטפל בבקשות למנעולים ובשחרור מנעולים מחזיק טבלה שיש בה כניסה לכל פריט A עם רשימת העסקאות שכרגע מחזיקות מנעול על A סוג המנעול מצביע לתור של בקשות למנעולים על A קבלה של מנעול ושחרור של מנעול צריכות להתבצע כפעולות אטומיות ניתן לשדרג מנעול משותף למנעול בלעדי

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

15 גילוי מצב קיפאון בונים גרף של " מחכה ל -" (waits-for graph) צומת לכל עסקה צלע מ- T 1 ל- T 2 אם T 1 מחכה למנעול שכרגע T 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) T1T2 T4T4T3 T1T2 T4T3

17 מניעת מצבי קיפאון נותנים לכל עסקה חותמת זמן ( שמציינת את זמן ההתחלה של העסקה ) זמן מוקדם יותר עדיף על זמן מאוחר יותר נניח ש - T 1 מחכה למנעול ש - T 2 מחזיקה שתי דרכים לפיהן ניתן לפעול : Wait-Die Wound-Wait

18 כאמור, T 1 מחכה למנעול ש - T 2 מחזיקה Wait-Die – עסקה צעירה שמבקשת מנעול עלולה להתבטל אם ל- T 1 עדיפות גבוהה יותר, אז T 1 מחכה לשחרור המנעול ע"י T 2 ; אחרת מבטלים את T 1 (כלומר, מבצעים לה abort) ומתחילים אותה מחדש Wound-Wait – עסקה צעירה שמחזיקה מנעול עלולה להתבטל אם ל- T 1 עדיפות גבוהה יותר, אז מבטלים את T 2 ; אחרת T 1 מחכה ל- T 2

19 Wait-Die עסקה ותיקה שצריכה מנעול מחכה לעסקה צעירה שמחזיקה מנעול זה עסקה שהשיגה את כל המנעולים שהיא צריכה יכולה לסיים עסקה צעירה עלולה להתבטל שוב ושוב אם בכל פעם שהיא צריכה מנעול, אזי מנעול זה מוחזק ע " י עסקאות ותיקות יותר

20 Wound-Wait עסקה צעירה מתבטלת אם היא מחזיקה מנעול שצריכה עסקה ותיקה יותר עסקה עלולה להתבטל גם אם היא כבר השיגה את כל המנעולים שהיא צריכה ( ולכן יכולה לסיים ) עסקה ותיקה אינה מתעכבת

21 סיכום לגבי שתי הדרכים למניעת מצבי קיפאון בכל אחת משתי הדרכים אין אפשרות לקיפאון העסקה הותיקה ביותר במערכת אינה מתבטלת הרעבה (starvation) פירושה שעסקה לא מצליחה אף פעם להשיג את כל המנעולים שהיא צריכה כלומר העסקה מתבטלת שוב ושוב ולכן אינה מסתיימת כדי למנוע הרעבה, כשמתחילים עסקה מחדש, צריך להשאיר לה את חותמת הזמן שהייתה לה קודם

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

23 דוגמה : העברת כסף מחשבון לחשבון חשבונות בנק A, B נעביר 100 ₪ מ - A ל - B התוכנית : התוכנית נכונה, אבל מה קורה אם המחשב נופל אחרי ביצוע הפקודה הראשונה ? הורדנו כסף מ- A ולא הוספנו ל- B התוכנית הסתיימה בצורה שגויה A:=A-100 B:=B+100

24 ביצוע אטומי של תוכנית תוכנית הפועלת על מסד נתונים צריכה להתבצע באופן אטומי, כלומר התוכנית מתבצעת בשלמותה, או שאינה מתבצעת כלל תוכנית מתחייבת ( מבצעת commit) לאחר שביצעה את כל פעולותיה אם התוכנית התחייבה, אז כל פעולותיה נשמרות אחרת, שום פעולה שביצעה לא נשמרת במסד

25 מנגנון התאוששות (Recovery) לכל מערכת מסד נתונים מנגנון התאוששות שאחראי על הדברים הבאים : לבטל את כל הפעולות שעשתה התוכנית אם היא נפלה (abort) לפני שביצעה commit לוודא שכל הפעולות של התוכנית נשמרות במסד אם התוכנית ביצעה commit מאוחר יותר נסביר איך פועל מנגנון ההתאוששות

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

27 קריאה מלוכלכת Dirty Read נניח שעסקה T 1 קוראת ערך של פריט A שנכתב ע " י עסקה T 2 אם בהמשך עסקה T 2 מתבטלת, אז צריך לבטל גם את T 1 ! (כי קראה ערך שלמעשה אינו קיים) נוצר מפל הפלות (cascading aborts) אם T 1 התחייבה (עשתה commit) לפני שמספיקים לבטל אותה, אז התזמון אינו מאפשר התאוששות (schedule is not recoverable), כי אין דרך לסיים את T 2 ואין דרך לבטלה (כי ביטולה מחייב גם את הביטול של T 1 )

28 תזמון שמאפשר התאוששות (Recoverable Schedule) תזמון מאפשר התאוששות אם עסקה מתחייבת רק אחרי ( ובתנאי ש -) כל העסקאות שאת ערכיהן היא קראה התחייבו בפועל מקפידים על דרישה מחמירה יותר עסקה רשאית לקרוא רק ערכים שנכתבו ע"י עסקאות שכבר התחייבו תזמון שמקיים תנאי זה מאפשר התאוששות (recoverable) ומונע מפל הפלות

29 פרוטוקול 2PL מחמיר Strict 2PL כמו 2PL הרגיל ובתוספת הדרישה הבאה עסקה משחררת את המנעולים שהיא מחזיקה רק אחרי שהתחייבה הפרוטוקול המחמיר מונע מפל הפלות ומאפשר התאוששות, כאשר צריך לבטל עסקה כלשהי

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

31 עסקאות במסד דינמי : בעיית הפאנטומים EMPS(Name,Dept,Age) T 1 אמורה למצוא את העובד המבוגר ביותר ב - CS וב - EE T 2 מוסיפה עובד חדש ל - CS שהוא המבוגר ביותר, ומוחקת מ - EE את העובד המבוגר ביותר

32 תזמון אפשרי שמקיים 2PL T 1 נועלת את כל הרשומות של CS ומוצאת את העובד המבוגר ביותר ( שגילו 71) T 2 מוסיפה עובד ל - CS שגילו 75 אפשר לעשות זאת בזמן ש- T 1 מחזיקה מנעולים על כל הרשומות של CS שקיימות כרגע במסד T 2 נועלת את כל הרשומות של EE ומוחקת מ - EE את העובד המבוגר ביותר ( שגילו 80) T 2 משחררת את כל המנעולים שהיא מחזיקה T 1 נועלת את כל הרשומות של EE ומוצאת העובד המבוגר ביותר ( שגילו 63) T 1 פועלת ראשונה על CS ושניה על EE ו- T 2 בדיוק להפך

33 אין תזמון סדרתי שקול אם T 1 רצה ראשונה, אז היא צריכה להחזיר גיל 71 ל - CS וגיל 80 ל - EE אם T 1 רצה שניה, אז היא צריכה להחזיר גיל 75 ל - CS וגיל 63 ל - EE הבעיה נוצרה מכיוון ש - T 1 מחזיקה מנעולים על הרשומות שהן כרגע ב - CS, אבל לא על הרשומות שמתווספות ל - CS תוך כדי פעולתה

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

35 פתרון אפשרי : נעילת פרדיקטים Predicate Locking עסקה צריכה לקבל מנעול על כל הרשומות שמקיימות תנאי ( פרדיקט ) מסוים, למשל AGE > 50 או DEPT = CS אם אין נעילת פרדיקטים במקרה הכללי ( זה תהליך יקר ), אז קל יותר לנעול את כל הרשומות שמקיימות את התנאי DEPT = CS אם יש אינדקס על DEPT  נועלים את כל הבלוקים שבהם נמצאים (או צריכים להימצא) נתוני הכניסה עבור DEPT=CS אם אין אינדקס, צריך מנגנון שמוודא שלא מתווספות רשומות ל- EMPS, כאשר עסקה נועלת רשומות של EMPS שמקיימות את התנאי DEPT = CS