עיבוד תנועות בסביבת sql transaction processing

66
1 תתתתת תתתתתת תתתתת תתתתתת תתתתתת תתתתתתSQL SQL Transaction Transaction Processing Processing

Upload: tariq

Post on 11-Jan-2016

44 views

Category:

Documents


7 download

DESCRIPTION

עיבוד תנועות בסביבת SQL Transaction Processing. עיבוד תנועות - מטרה. שמירה על אמינות ושלמות בסיס הנתונים בסביבה עתירת תנועות ומרובת משתמשים מערכת RDBMS צריכה להבטיח את הצלחת רצף פקודות העדכון ולא רק את הצלחת הפקודה הבודדת. דוגמא לביצוע תנועה. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: עיבוד תנועות בסביבת  SQL Transaction Processing

1

עיבוד תנועות בסביבתעיבוד תנועות בסביבתSQL Transaction SQL Transaction

ProcessingProcessing

Page 2: עיבוד תנועות בסביבת  SQL Transaction Processing

2

עיבוד תנועות - מטרהעיבוד תנועות - מטרה

שמירה על אמינות ושלמות בסיס הנתונים • בסביבה עתירת תנועות ומרובת משתמשים

צריכה להבטיח את הצלחת RDBMS מערכת• העדכון ולא רק את הצלחת פקודותפקודות רצףרצף

הפקודה הבודדתהפקודה הבודדת

Page 3: עיבוד תנועות בסביבת  SQL Transaction Processing

3

דוגמא לביצוע תנועהדוגמא לביצוע תנועה

-M לקורס210אירוע: רישום סטודנט שמספרו •2007לסמסטר קיץ 100

Page 4: עיבוד תנועות בסביבת  SQL Transaction Processing

4

דוגמא לביצוע תנועהדוגמא לביצוע תנועהGradesציונים

STUDENT_IDCOURSE_IDSEMESTERTERMGRADE

ציוןמועדסמסטרמס. קורסמס. סטודנט

105C-55SUM2007A70

210M-100AUT2008A90

105M-100SUM2007B50

105C-200AUT2008A85

210C-200AUT2008A80

210B-10WIN2008A50

105B-40WIN2008B70

245M-100AUT2008A80

245B-10AUT2008A70

200C-200AUT2008B50

200B-10AUT2008A65

245B-40WIN2007A95

200M-100SUM2007B90

310M-100SUM2007A100

Page 5: עיבוד תנועות בסביבת  SQL Transaction Processing

5

דוגמא לביצוע תנועהדוגמא לביצוע תנועה * האירוע מצריך: •

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

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

• INSERT INTO GRADES )COURSE_ID,STUDENT_ID,SEMESTER,TERM(

• VALUES )‘M-100’,’210’,’SUM2007’,’A’( • H• UPDATE COURSES •SET CUR_ENROLL=CURR_ENROLL+1

• WHERE COURSE_ID=‘M-100’J

Page 6: עיבוד תנועות בסביבת  SQL Transaction Processing

6

דוגמא לביצוע תנועהדוגמא לביצוע תנועה

הפקודות חייב להתבצע כאילו הן 2רצף של •פקודה אחת

אחרת בסיס המתונים יהיה משובש ולא אמין•

Page 7: עיבוד תנועות בסביבת  SQL Transaction Processing

7

דוגמא נוספתדוגמא נוספת

: פקודה אחת תוך כדי ביצוע מספר שורותעדכון •עדכון כל הציונים )מתן בונוס( לכל הסטודנטים

19982007בסמסטר קיץ M-100 שלמדו בקורס

SUM2007

Page 8: עיבוד תנועות בסביבת  SQL Transaction Processing

8

הגדרת תנועההגדרת תנועה

Page 9: עיבוד תנועות בסביבת  SQL Transaction Processing

9

תכונות של תנועהתכונות של תנועה

* ( ACID תכונות )4כל תנועה חייבת לקיים •

בשלמותחייבת להתבצע תנועה ( - Atomicity )אטומיות עקביות *

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

התנועה מפירה זמנית את תקינות בסיס הנתוניםתנועות ( - Independency )תלות אי *

זו מזו תלוי בלתיחייבות להתבצע באופן ברגע שהתנועה הסתימה ( - Durability )נצחיות *

בבסיס הנתוניםלהירשם חייבים העדכוניםבהצלחה

Page 10: עיבוד תנועות בסביבת  SQL Transaction Processing

10

כפקודת כפקודת COMMITCOMMIT הפקודההפקודה SQLSQL

מאפשרת לתוכנית היישום: •שהתנועה RDBMS להודיע למערכת*

בהצלחההסתימה העדכון שהיו צריכות כל פקודות*

בוצעולהתבצע כחלק מהתנועה - תקין בסיס הנתונים - ומצב

Page 11: עיבוד תנועות בסביבת  SQL Transaction Processing

11

- דוגמא - דוגמאCOMMITCOMMIT הפקודההפקודה

• INSERT INTO GRADES • (COURSE_ID,STUDENT_ID,SEMESTER,TERM) • VALUES )‘M-100’,’210’,’SUM2007’,’A’( • H• UPDATE COURSES •SET CUR_ENROLL=CURR_ENROLL+1• WHERE COURSE_ID=‘M-100’J

• COMMITCOMMIT

Page 12: עיבוד תנועות בסביבת  SQL Transaction Processing

12

ROLLBACKROLLBACK הפקודההפקודהגלילה לאחור גלילה לאחור

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

מתחילת התנועהמתחילת התנועה

Page 13: עיבוד תנועות בסביבת  SQL Transaction Processing

13

- -ROLLBACKROLLBACK הפקודההפקודה

AUT2008

AUT2008

AUT2008

Page 14: עיבוד תנועות בסביבת  SQL Transaction Processing

14

Transaction Transaction - - מודל התנועותמודל התנועותModelModel

SQLSQL לפי תקןלפי תקןמזהה RDBMS מגדיר את האופן שבו מערכת•

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

Page 15: עיבוד תנועות בסביבת  SQL Transaction Processing

15

מודל התנועותמודל התנועות

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

COMMIT הפקודה

- או ע”י ביצוע הפקודהסיום תנועה תקיןסיום תנועה תקין•COMMIT או אם תוכנית היישום מסתימת

- או ע”י ביצוע הפקודהסיום תנועה לא תקיןסיום תנועה לא תקין•ROLLBACK או אם תוכנית היישום “עפה ”

Page 16: עיבוד תנועות בסביבת  SQL Transaction Processing

16

בדיקה מושהית של אילוציםבדיקה מושהית של אילוצים

מכילה פקודה המאפשרת לקבוע האם בדיקת SQL שפת•אילוץ )כגון: מספר מכסימלי של בחינות לסטודנט( תתבצע

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

לא תבצע RDBMS אם בדיקת האילוץ תיכשל מערכת•את התנועה כולה והיא תבוטל

SET CONSTRAINTS MAX_NUM_OF_EXAMS: דוגמא•DEFFEREDDEFFERED

Page 17: עיבוד תנועות בסביבת  SQL Transaction Processing

17

((LOG FILELOG FILE ) )יומן אירועים יומן אירועים

ROLLBACK- להפעיל את פקודת ההמנגנון המאפשר •יומן האירועים הינו

Page 18: עיבוד תנועות בסביבת  SQL Transaction Processing

18

יומן אירועיםיומן אירועיםהרשומה מכילה את הנתונים האלה: •

התנועה שם * בו בוצעה התנועה והתאריך הזמן *

ותחנת העבודה שממנו בוצעה המשתמש זיהוי * * התנועה

שבוצעה הפעולה

)ביטול, עדכון, הוספת, תחילת תנועה, סוף תנועה( שבה בוצעה הפעולה הטבלה שם *

( Before Values )לפני העדכון השורה תוכן *

* כולל מפתח השורה( After Values ) העדכוןלאחר השורה תוכן

Page 19: עיבוד תנועות בסביבת  SQL Transaction Processing

19

Backward RecoveryBackward Recovery תהליך שיחזור לאחור -תהליך שיחזור לאחור -

במקרה של ביצוע פקודתמופעל•ROLLBACK יומן האירועים יקרא * :

* מערכת כרונולוגי הפוךבסדר RDBMS תחזיר את בסיס הנתונים

שלפני העדכון למצבו

Page 20: עיבוד תנועות בסביבת  SQL Transaction Processing

20

RecoveryRecoveryתהליך שיחזור לפנים - תהליך שיחזור לפנים - ForwardForward

“שיחזור לפנים”יומן האירועים משמש גם ב- • של בסיס הנתונים במקרה של תקלה

ניתן להפעיל על קובץ הגיבוי האחרון את כל • (After Image” )השורות “שאחרי העדכון

סדר כרונולוגי שבו הם בוצעו לפי

Page 21: עיבוד תנועות בסביבת  SQL Transaction Processing

21

דוגמא של קטע מקובץ יומן אירועיםדוגמא של קטע מקובץ יומן אירועים

Tran-idDateTimeUser-idTerminalActionTable

Before Values

After Values

Grd-0112/02/200807:30:35DanTer-05Start   

Grd-0112/02/200807:31:01DanTer-05UpdateGrades……………………

Dpt-0812/02/200807:31:28RonTer-08Start   

Grd-0112/02/200807:32:02DanTer-05InsertGrades…………

Dpt-0812/02/200807:32:25RonTer-08DeleteDepartments…………

Grd-0112/02/200807:32:54DanTer-05Commit   

Dpt-0712/02/200807:33:10EyalTer-10Start   

Dpt-0812/02/200807:33:18RonTer-08Commit   

Dpt-0712/02/200807:33:34EyalTer-10InsertDepartments…………

Page 22: עיבוד תנועות בסביבת  SQL Transaction Processing

22

דוגמא של קטע מקובץ יומן אירועיםדוגמא של קטע מקובץ יומן אירועים

Dpt-07 הפעיל תנועה Eyal המשתמש• והספיק להוסיף שורה לטבלת 7:33:10בשעה

מחלקות

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

נצטרך לבטל את השורה Rollback כדי לבצע•מטבלת “מחלקות” שהמפתח שלה רשום ביומן

”Before Values “האירועים כחלק מעמודת “After

Page 23: עיבוד תנועות בסביבת  SQL Transaction Processing

23

””פרוטוקול “רישום מראשפרוטוקול “רישום מראש

קיים Write Ahead Log Protocol פרוטוקול• RDBMS- ברוב מערכות ה

מעדכנת RDBMS לפי פרוטוקול זה מערכת• ורק לאחר מכן את יומן האירועים את תחילה

בסיס הנתונים

Page 24: עיבוד תנועות בסביבת  SQL Transaction Processing

24

עדכון בו-זמני עדכון בו-זמני Concurrent UpdatesConcurrent Updates

בסיס לעדכן משתמשים או יותר מנסים 2מצב שבו •באותו זמןנתונים אחד

(Multi User Environment) בסביבה מרובת משתמשים• בזיכרוןהיישום משלו של תוכנית עותקכל משתמש מקבל

* שטחי זיכרון: 2העותק תופס • * פקודות התוכניתעבור שבו נרשמים המשתנים והנתונים שטח עבודהעבור

המעובדים

Page 25: עיבוד תנועות בסביבת  SQL Transaction Processing

25

רב-כניסות רב-כניסות ReentrantReentrant- - שיטת השיטת ה

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

כל משתמש

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

Page 26: עיבוד תנועות בסביבת  SQL Transaction Processing

26

MultitaskingMultitasking

מספר שיטת עבודה של מערכת הפעלה לפיה • על אותו מעבדבמקביל מתבצעות משימות

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

המעבד למשימה אחרת

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

Page 27: עיבוד תנועות בסביבת  SQL Transaction Processing

27

גישות בניהול תנועות

(Oracleגישת הנעילות )•

גישת הגירסאות•

Page 28: עיבוד תנועות בסביבת  SQL Transaction Processing

28

בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))

נגרמת כתוצאה מעדכון בו-זמני•

סטודנטים מנסים להירשם באותו זמן 2דוגמא: •לאותו קורס

נתבונן במה שקורה עם טבלת “קורסים” • עמודות: 2שמכילה בין השאר

“מספר סטודנטים מכסימלי * “מספר סטודנטים *לקורס”

”שכבר נרשמו לקורס

Page 29: עיבוד תנועות בסביבת  SQL Transaction Processing

29

בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))

C-200 סטודנט א’ נרשם לקורס• ושולפת את שורת קורס Select תוכנית היישום מבצעת•

C-200 מבסיס הנתונים אל שטח העבודה שהוקצה’לסטודנט א

Page 30: עיבוד תנועות בסביבת  SQL Transaction Processing

30

בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))

סטודנט ב’ מבקש להירשם לאותו קורס•

Page 31: עיבוד תנועות בסביבת  SQL Transaction Processing

31

בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))

סטודנט א’ מאשר את ההרשמה•

תוכנית היישום:• את מונה “מספר הסטודנטים שכבר 1מגדילה ב- *

נרשמו” מעדכנת את בסיס הנתונים *

Commit מבצעת * ’משחררת את שטח העבודה של סטודנט א *

Page 32: עיבוד תנועות בסביבת  SQL Transaction Processing

32

בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))

סטודנט ב’ מאשר אף הוא את ההרשמה•

Page 33: עיבוד תנועות בסביבת  SQL Transaction Processing

33

בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))

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

שבזיכרון מבלי להתייחס לעובדה שהנתונים עומדים להתעדכן בינתיים ע”י

משתמש אחר

Page 34: עיבוד תנועות בסביבת  SQL Transaction Processing

34

בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך ((Uncommitted UpdateUncommitted Update ) )עדכון עדכון

הבעיה נוצרת כאשר תוכנית יישום •אחת )תוכנית ב’( נמצאת בתהליך

עדכון שורה שעודכנה קודם לכן ע”י תוכנית יישום אחרת )תוכנית א’(

ואח”כ Commit שעדיין לא ביצעה ’יבוצע גלילה לאחור של תוכנית א

Page 35: עיבוד תנועות בסביבת  SQL Transaction Processing

35

עדכון רשומה שנמצאת בתהליך עדכון רשומה שנמצאת בתהליך בעייתבעייתעדכון - דוגמאעדכון - דוגמא

תוכניות יישום שונות: 2מופעלות • אחת - לעדכון המספר המכסימלי של *

( 95 ל- 85סטודנטים לקורס )מ- השניה - רישום לקורס*

Page 36: עיבוד תנועות בסביבת  SQL Transaction Processing

36

בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאעדכון - דוגמא

Page 37: עיבוד תנועות בסביבת  SQL Transaction Processing

37

בעיית עדכון רשומה שנמצאת בתהליך עדכון - בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאדוגמא

Page 38: עיבוד תנועות בסביבת  SQL Transaction Processing

38

בעיית עדכון רשומה שנמצאת בתהליך עדכון - בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאדוגמא

Page 39: עיבוד תנועות בסביבת  SQL Transaction Processing

39

בעיית ניתוח נתונים לא עקביבעיית ניתוח נתונים לא עקביInconsistent AnalysisInconsistent Analysis

תוכנית א’ מפיקה דו”ח המציג את מספר הסטודנטים •שנרשמו בפועל לפי קורס

תוכנית זו מתחילה לעבוד ולשלוף נתונים מבסיס הנתונים•תוך כדי העבודה מתחילה לפעול תוכנית ב’ לרישום •

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

כאשר תוכנית א’ מסיימת לעבוד היא מציגה נתונים •שכבר אינם נכונים מאחר ותוך כדי פעולתה בסיס

הנתונים התעדכן

Page 40: עיבוד תנועות בסביבת  SQL Transaction Processing

40

((LockingLocking ) )מנגנון הנעילות מנגנון הנעילות

( - Lock )הגדרת נעילה• של אובייקט בבסיס סימוןפעולה המבצעת

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

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

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

Page 41: עיבוד תנועות בסביבת  SQL Transaction Processing

41

Locking Locking ) )רמת הנעילה רמת הנעילה GranularityGranularity))

תחום בסיס הנתונים •שכפוף להוראת

הנעילה

Page 42: עיבוד תנועות בסביבת  SQL Transaction Processing

42

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

( ( Column Level LockingColumn Level Locking ) )עמודה בתוך שורהעמודה בתוך שורה•מונעת גישה מתוכניות אחרות המבקשות --

לעדכן אותה עמודה באותו שורה

לא מונעת גישה של תוכניות אחרות לאותה •שורה כדי לעדכן עמודות אחרות

אינן RDBMS בגלל המורכבות - רוב מערכות•תומכות בנעילה ברמה זו

Page 43: עיבוד תנועות בסביבת  SQL Transaction Processing

43

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

( - Row Level Locking )שורה•תבצע נעילה של כל RDBMS מערכת *

השורה מבלי להתייחס אילו עמודות בשורה רוב המערכות *מתעדכנות

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

פעולות קלט/פלט ( - Page Level Locking )דף•( Page )מתבצעות תמיד ברמה של דף פיסי

שיכול להכיל שורה אחת או יותר

Page 44: עיבוד תנועות בסביבת  SQL Transaction Processing

44

רמות הנעילה האפשריותרמות הנעילה האפשריות( - Table Level Locking )טבלה•

תבצע נעילה של כל הטבלה RDBMS מערכת * מבלי להתייחס אילו שורות ואילו עמודות בטבלה

מתעדכנות קלה למימוש אולם מקטינה את כמות העבודה *

* במקביל

אינה מתאימה לסביבה מרובת-משתמשים

( Data Base Level Locking )בסיס הנתונים•קלה ביותר לשימוש * מיושמת במצבים נדירים*

Page 45: עיבוד תנועות בסביבת  SQL Transaction Processing

45

((Lock TypeLock Type ) )סוגי הנעילות סוגי הנעילות

אף( - Exclusive Lock )נעילה בלבדית• את לקרוא או לעדכן אינה מורשיתתוכנית יישום אחרת

הנתונים

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

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

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

”את הנעילה מ- “שיתופית” ל- “בלבדית

Page 46: עיבוד תנועות בסביבת  SQL Transaction Processing

46

טבלת החלטות לקבלת נעילותטבלת החלטות לקבלת נעילות

Page 47: עיבוד תנועות בסביבת  SQL Transaction Processing

47

Consistent read

(Starvationאם נוצר מצב של "הרעבה" )•

בלבד לבצע קריאה"הרעבה" – יישום מבקש •נעולה למשך זמן רבלרשומה

Consistent Readפיתרון – •

)לפני מגירסה קודמתקריאה של רשומה •העדכון(

מצריך ניהול גירסאות•

Page 48: עיבוד תנועות בסביבת  SQL Transaction Processing

48

טבלת החלטות לקבלת נעילותטבלת החלטות לקבלת נעילות

קרא מגירסה קודמת

בצע נעילת כתיבה

Page 49: עיבוד תנועות בסביבת  SQL Transaction Processing

49

((DeadlockDeadlock ) )נעילה ללא מוצא נעילה ללא מוצא

של המתנה לשורהנצחינצחימצב •

תוכניות יישום )או יותר( נועלות 2מצב שבו •אובייקט שהתוכנית השניה מבקשת להשתמש

בו

Page 50: עיבוד תנועות בסביבת  SQL Transaction Processing

50

נעילה ללא מוצא - דוגמאנעילה ללא מוצא - דוגמא שורות שונות אולם 2 תוכניות יישום המעדכנות 2•

*: בסדר הפוךומבצעת לשורה A שורה’ מתחילה לפעול ושולפת תוכנית א

)כתיבה( לקראת עדכוןנעילת בלבדית מתחילה לפעול תוכנית ב’ *

)כתיבה(נעילה בלבדיתומבצעת לה B שורהושולפת מבקשת לקרא את תוכנית א’ *

מכיוון ששורה זו כבר נעולה בלבדית נעילהולבצע לה B שורה

התוכנית מוכנסת למצב המתנה A ’ מבקשת לקרא את שורהב תוכנית *

מכיוון ששורה זו כבר נעולה נעילה בלבדיתולבצע לה התוכנית מוכנסת למצב המתנה

Page 51: עיבוד תנועות בסביבת  SQL Transaction Processing

51

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

- ביצוע כל הנעילות לפני עדכוןביצוע כל הנעילות לפני עדכון• על כל השורות להכריז מראשלהכריז מראש כל תוכנית צריכה *

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

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

קשה ליישם כי בד”כ תוכנית *מחדש אינה יודעת יישום

את כל השורות שתרצה לעדכן מראש

Page 52: עיבוד תנועות בסביבת  SQL Transaction Processing

52

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

איתור מצב נעילה ללא מוצא -איתור מצב נעילה ללא מוצא -• Time )זמן המתנהקובעת RDBMS מערכת*

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

וביטול כל העדכונים Rollback כדי ביצוע פעולהשהתוכנית כבר ביצעה

לבחירת התוכנית הקריטריוןהקריטריון * התנועה האחרונהשפעולתה תופסק: -

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

Page 53: עיבוד תנועות בסביבת  SQL Transaction Processing

53

בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאעדכון - דוגמא

-C קוראת שורה של קורס TR1 תוכנית יישום•מטבלת “קורסים” ומעדכנת אותה 200

קוראת את השורה של TR2 תוכנית יישום• מטבלת “מחלקות”, קוראת את CS מחלקת

מטבלת “קורסים” C-200 השורה של קורס CS ולבסוף מעדכנת את השורה של מחלקת

”בטבלת “מחלקות

Page 54: עיבוד תנועות בסביבת  SQL Transaction Processing

54

בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאעדכון - דוגמא

•TR1•SELECT )C-200( COURSES •UPDATE )C-200( COURSES •TR2•SELECT )CS( DEPARTMENTS

•SELECT )C-200( COURSES • UPDATE )CS( DEPARTMENTS

Page 55: עיבוד תנועות בסביבת  SQL Transaction Processing

55

RDBMSRDBMS דוגמא לניהול נעילות ע”י מערכת דוגמא לניהול נעילות ע”י מערכת

Page 56: עיבוד תנועות בסביבת  SQL Transaction Processing

56

RDBMSRDBMS דוגמא לניהול נעילות ע”י מערכת דוגמא לניהול נעילות ע”י מערכת

Page 57: עיבוד תנועות בסביבת  SQL Transaction Processing

57

גירסאותגירסאות

מתוצרת Framework – Hibernetמערכת •Apache

סביבה מונחית עצמים•

JAVAשפת •

Oracleבסיס נתונים •

מנהל את העבודה Framework ה- •( SELECT, UPDATEעם הנתונים )

Page 58: עיבוד תנועות בסביבת  SQL Transaction Processing

58

גירסאות – מספר עדכני ו-מספר שוטף "מספר גרסה"לכל שורה בטבלה נשמר •יישום המבקש לעדכן שורה בטבלה – קורא •

(Frameworkשורה מהדיסק )בעזרת ה- 1מעלה ב- ( Frameworkהיישום )בעזרת ה- •

את ה- "מספר הגרסה" של שורת הטבלה שלו שומר את השורה בשטח העבודההיישום •

עם "מספר הגירסה" – RAM ב- "מספר גירסה של היישום"

Page 59: עיבוד תנועות בסביבת  SQL Transaction Processing

59

גירסאות – עדכון שורה

רשומה הוא מבצע מבקש לעדכןכאשר יישום •פקודה:

•PDATE…WHERE "מספר גרסה של היישום" ="מספר הגירסה )של שורת •

הטבלה("

אם השוויון אינו מתקיים היישום מתחיל מחדש• - Commit ונרשמה פקודת אם השוויון מתקיים•

העדכון יתבצע

Page 60: עיבוד תנועות בסביבת  SQL Transaction Processing

60

סטודנטים לאותו קורס סטודנטים לאותו קורס22 יישומים מבקשים לרשום יישומים מבקשים לרשום 22דוגמא: דוגמא: - בעיית העדכון האבוד- בעיית העדכון האבוד

C-200 = 5מספר גירסה של שורת קורס: •

רשומה לכן הוא קורא רוצה לעדכןיישום א' •ומעלה את המספר רשומת הקורס מהדיסק

שלו מצויה עותק RAM כך שב- 6 ל- הגרסה6הרשומה עם גירסה

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

שלו מצויה עותק RAM כך שב- 7הגרסה ל- 7הרשומה עם גירסה

Page 61: עיבוד תנועות בסביבת  SQL Transaction Processing

61

סטודנטים לאותו 2 יישומים מבקשים לרשום 2דוגמא: קורס

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

ואילו "מספר הגירסה" של השורה 6 )היישום יתחיל 7הינו

להתבצע מחדש(

אשר UPDATEהיישום השני מבצע פקודת • 7 שלו הינה RAMכי מספר הגירסה ב- תתבצע

ל- "מספר הגירסה" של הזהההשורה

Page 62: עיבוד תנועות בסביבת  SQL Transaction Processing

62

בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך ((Uncommitted UpdateUncommitted Update ) )עדכון עדכון

C-200 = 5מספר גירסה של שורת קורס: • ל- 85יישום א' רוצה לעדכן רשומה )מספר נרשמים מכסימלי מ- •

מהדיסק ומעלה את המספר קורא רשומת הקורס( הוא 95 שלו מצויה עותק הרשומה RAM כך שב- 6הגרסה ל- 6עם גירסה

כי מספר לכאורה תתבצע אשר UPDATEהיישום מבצע פקודת • זהה ל- "מספר הגירסה" של השורהRAMהגרסה ב-

עדיין כתיבה לא תתבצע כי אז COMMITולא בוצע ואולם מאחר •COMMIT) יחכה עד לפקודת ה- RDBMSעל הדיסק ממש )

רשומה )מספר נרשמים עד כה מ- אותהיישום ב' רוצה לעדכן • )ללא שינויים של קורא רשומה מהדיסק( לכן הוא 39 ל- 38

RAM כך שב- 7יישום א'( מעלה את מספר הגרסה ל- 7שלו מצויה עותק הרשומה עם גירסה

Page 63: עיבוד תנועות בסביבת  SQL Transaction Processing

63

בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך ((Uncommitted UpdateUncommitted Update ) )עדכון עדכון

ROLLBACKהיישום הראשון מבצע פקודת • ה- מוחק את שורת הטבלה מזיכרוןאשר בעצם

RAMשל היישום ולא מהדיסק

אשר UPDATEהיישום השני מבצע פקודת • 7 שלו הינה RAM כי מספר הגירסה ב- תתבצע

הזהה ל- "מספר הגירסה" של השורה

Page 64: עיבוד תנועות בסביבת  SQL Transaction Processing

64

תנועה עם מספר עדכונים

לדוגמא: רישום סטודנט לקורס• "מספר סטודנטים שנרשמו עד כה"כולל עדכון •

הוספת שורה בטבלת "ציונים" וכן ל עדכון ועדכון - לכ כי אז COMMITברגע שנרשמה פקודת •

בין מספר הגירסה של שורת הטבלה מתבצעת השוואה * עם מספר

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

ימחקו כל אחרת * של היישום RAM מזיכרון ה- העדכונים

* היישום יתחיל להתבצע מחדש

Page 65: עיבוד תנועות בסביבת  SQL Transaction Processing

65

תרגיליםתרגילים

סיבות מדוע תנועה עלולה להסתיים 2 מנה לפחות 1.•

. 2 בכישלון הסבר את החשיבות של קובץ יומן האירועים ואיזה

. 3 שירותים הוא מספק חווה דעתך על אורך התקופה שבה כדאי לשמור

יומן אירועים . הסבר מהו “שיחזור לאחור” ומהו “שיחזור לפנים” 4

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

Page 66: עיבוד תנועות בסביבת  SQL Transaction Processing

66

תרגיליםתרגילים

נתון מצב הנעילות הבא: 4 • R3, R2, R1: משתמש דן נעל את האובייקטים*

וממתין

R4 לאובייקט וממתין R6, R5, R4 משתמש רון נעל את האובייקטים *

R8 לאובייקט וממתין לאובייקט R9, R8: משתמש אייל נעל אובייקטים *

R10 * R2 וממתין ל R11, R10 משתמש צבי נעל אובייקטים

כיצד בא לביטוי העובדה שזהו מצב של הראה * נעילה ללא מוצא