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

Post on 11-Jan-2016

44 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

1

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

ProcessingProcessing

2

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

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

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

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

3

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

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

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

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

6

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

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

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

7

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

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

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

SUM2007

8

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

9

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

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

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

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

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

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

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

10

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

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

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

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

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

12

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

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

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

13

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

AUT2008

AUT2008

AUT2008

14

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

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

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

15

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

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

COMMIT הפקודה

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

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

16

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

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

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

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

SET CONSTRAINTS MAX_NUM_OF_EXAMS: דוגמא•DEFFEREDDEFFERED

17

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

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

18

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

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

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

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

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

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

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

19

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

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

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

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

20

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

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

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

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

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…………

22

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

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

מחלקות

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

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

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

23

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

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

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

בסיס הנתונים

24

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

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

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

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

המעובדים

25

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

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

כל משתמש

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

26

MultitaskingMultitasking

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

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

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

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

27

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

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

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

28

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

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

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

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

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

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

29

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

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

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

30

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

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

31

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

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

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

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

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

32

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

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

33

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

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

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

משתמש אחר

34

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

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

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

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

35

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

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

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

36

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

37

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

38

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

39

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

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

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

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

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

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

40

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

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

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

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

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

41

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

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

הנעילה

42

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

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

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

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

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

43

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

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

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

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

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

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

44

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

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

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

* במקביל

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

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

45

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

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

הנתונים

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

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

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

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

46

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

47

Consistent read

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

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

Consistent Readפיתרון – •

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

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

48

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

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

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

49

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

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

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

בו

50

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

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

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

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

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

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

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

51

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

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

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

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

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

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

52

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

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

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

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

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

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

53

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

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

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

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

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

54

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

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

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

55

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

56

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

57

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

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

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

JAVAשפת •

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

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

58

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

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

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

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

59

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

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

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

הטבלה("

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

העדכון יתבצע

60

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

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

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

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

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

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

61

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

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

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

להתבצע מחדש(

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

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

62

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

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

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

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

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

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

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

63

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

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

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

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

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

64

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

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

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

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

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

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

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

65

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

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

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

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

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

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

66

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

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

וממתין

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

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

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

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

top related