עיבוד תנועות בסביבת sql transaction processing
DESCRIPTION
עיבוד תנועות בסביבת SQL Transaction Processing. עיבוד תנועות - מטרה. שמירה על אמינות ושלמות בסיס הנתונים בסביבה עתירת תנועות ומרובת משתמשים מערכת RDBMS צריכה להבטיח את הצלחת רצף פקודות העדכון ולא רק את הצלחת הפקודה הבודדת. דוגמא לביצוע תנועה. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/1.jpg)
1
עיבוד תנועות בסביבתעיבוד תנועות בסביבתSQL Transaction SQL Transaction
ProcessingProcessing
![Page 2: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/2.jpg)
2
עיבוד תנועות - מטרהעיבוד תנועות - מטרה
שמירה על אמינות ושלמות בסיס הנתונים • בסביבה עתירת תנועות ומרובת משתמשים
צריכה להבטיח את הצלחת RDBMS מערכת• העדכון ולא רק את הצלחת פקודותפקודות רצףרצף
הפקודה הבודדתהפקודה הבודדת
![Page 3: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/3.jpg)
3
דוגמא לביצוע תנועהדוגמא לביצוע תנועה
-M לקורס210אירוע: רישום סטודנט שמספרו •2007לסמסטר קיץ 100
![Page 4: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/6.jpg)
6
דוגמא לביצוע תנועהדוגמא לביצוע תנועה
הפקודות חייב להתבצע כאילו הן 2רצף של •פקודה אחת
אחרת בסיס המתונים יהיה משובש ולא אמין•
![Page 7: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/7.jpg)
7
דוגמא נוספתדוגמא נוספת
: פקודה אחת תוך כדי ביצוע מספר שורותעדכון •עדכון כל הציונים )מתן בונוס( לכל הסטודנטים
19982007בסמסטר קיץ M-100 שלמדו בקורס
SUM2007
![Page 8: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/8.jpg)
8
הגדרת תנועההגדרת תנועה
![Page 9: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/9.jpg)
9
תכונות של תנועהתכונות של תנועה
* ( ACID תכונות )4כל תנועה חייבת לקיים •
בשלמותחייבת להתבצע תנועה ( - Atomicity )אטומיות עקביות *
(Consistency - ) תנועה חייבת להעביר את בסיס הנתונים אפילו שתוך כדי פעולתה אחר תקין למצב אחד תקיןממצב
התנועה מפירה זמנית את תקינות בסיס הנתוניםתנועות ( - Independency )תלות אי *
זו מזו תלוי בלתיחייבות להתבצע באופן ברגע שהתנועה הסתימה ( - Durability )נצחיות *
בבסיס הנתוניםלהירשם חייבים העדכוניםבהצלחה
![Page 10: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/10.jpg)
10
כפקודת כפקודת COMMITCOMMIT הפקודההפקודה SQLSQL
מאפשרת לתוכנית היישום: •שהתנועה RDBMS להודיע למערכת*
בהצלחההסתימה העדכון שהיו צריכות כל פקודות*
בוצעולהתבצע כחלק מהתנועה - תקין בסיס הנתונים - ומצב
![Page 11: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/12.jpg)
12
ROLLBACKROLLBACK הפקודההפקודהגלילה לאחור גלילה לאחור
מאפשרת לתוכנית היישום לבקש מבסיס •את כל העדכונים שבוצעו לבטל לבטל הנתונים
מתחילת התנועהמתחילת התנועה
![Page 13: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/13.jpg)
13
- -ROLLBACKROLLBACK הפקודההפקודה
AUT2008
AUT2008
AUT2008
![Page 14: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/14.jpg)
14
Transaction Transaction - - מודל התנועותמודל התנועותModelModel
SQLSQL לפי תקןלפי תקןמזהה RDBMS מגדיר את האופן שבו מערכת•
את תחילת התנועה, את סיומה המוצלח או את כשלון ביצוע התנועה
![Page 15: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/15.jpg)
15
מודל התנועותמודל התנועות
- פקודת העדכון הראשונה תחילת תנועהתחילת תנועה•בתוכנית או פקודת העדכון הראשונה לאחר
COMMIT הפקודה
- או ע”י ביצוע הפקודהסיום תנועה תקיןסיום תנועה תקין•COMMIT או אם תוכנית היישום מסתימת
- או ע”י ביצוע הפקודהסיום תנועה לא תקיןסיום תנועה לא תקין•ROLLBACK או אם תוכנית היישום “עפה ”
![Page 16: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/16.jpg)
16
בדיקה מושהית של אילוציםבדיקה מושהית של אילוצים
מכילה פקודה המאפשרת לקבוע האם בדיקת SQL שפת•אילוץ )כגון: מספר מכסימלי של בחינות לסטודנט( תתבצע
מיד לאחר כל פקודת עדכון של טבלה )ברירת מחדל( או להשהות הבדיקה לאחר סיום מוצלח של התנועה
לא תבצע RDBMS אם בדיקת האילוץ תיכשל מערכת•את התנועה כולה והיא תבוטל
SET CONSTRAINTS MAX_NUM_OF_EXAMS: דוגמא•DEFFEREDDEFFERED
![Page 17: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/17.jpg)
17
((LOG FILELOG FILE ) )יומן אירועים יומן אירועים
ROLLBACK- להפעיל את פקודת ההמנגנון המאפשר •יומן האירועים הינו
![Page 18: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/18.jpg)
18
יומן אירועיםיומן אירועיםהרשומה מכילה את הנתונים האלה: •
התנועה שם * בו בוצעה התנועה והתאריך הזמן *
ותחנת העבודה שממנו בוצעה המשתמש זיהוי * * התנועה
שבוצעה הפעולה
)ביטול, עדכון, הוספת, תחילת תנועה, סוף תנועה( שבה בוצעה הפעולה הטבלה שם *
( Before Values )לפני העדכון השורה תוכן *
* כולל מפתח השורה( After Values ) העדכוןלאחר השורה תוכן
![Page 19: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/19.jpg)
19
Backward RecoveryBackward Recovery תהליך שיחזור לאחור -תהליך שיחזור לאחור -
במקרה של ביצוע פקודתמופעל•ROLLBACK יומן האירועים יקרא * :
* מערכת כרונולוגי הפוךבסדר RDBMS תחזיר את בסיס הנתונים
שלפני העדכון למצבו
![Page 20: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/20.jpg)
20
RecoveryRecoveryתהליך שיחזור לפנים - תהליך שיחזור לפנים - ForwardForward
“שיחזור לפנים”יומן האירועים משמש גם ב- • של בסיס הנתונים במקרה של תקלה
ניתן להפעיל על קובץ הגיבוי האחרון את כל • (After Image” )השורות “שאחרי העדכון
סדר כרונולוגי שבו הם בוצעו לפי
![Page 21: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/22.jpg)
22
דוגמא של קטע מקובץ יומן אירועיםדוגמא של קטע מקובץ יומן אירועים
Dpt-07 הפעיל תנועה Eyal המשתמש• והספיק להוסיף שורה לטבלת 7:33:10בשעה
מחלקות
התנועה לא הספיקה להסתיים מכיוון שלא •ביומן האירועים Commit נרשמה רשומת
נצטרך לבטל את השורה Rollback כדי לבצע•מטבלת “מחלקות” שהמפתח שלה רשום ביומן
”Before Values “האירועים כחלק מעמודת “After
![Page 23: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/23.jpg)
23
””פרוטוקול “רישום מראשפרוטוקול “רישום מראש
קיים Write Ahead Log Protocol פרוטוקול• RDBMS- ברוב מערכות ה
מעדכנת RDBMS לפי פרוטוקול זה מערכת• ורק לאחר מכן את יומן האירועים את תחילה
בסיס הנתונים
![Page 24: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/24.jpg)
24
עדכון בו-זמני עדכון בו-זמני Concurrent UpdatesConcurrent Updates
בסיס לעדכן משתמשים או יותר מנסים 2מצב שבו •באותו זמןנתונים אחד
(Multi User Environment) בסביבה מרובת משתמשים• בזיכרוןהיישום משלו של תוכנית עותקכל משתמש מקבל
* שטחי זיכרון: 2העותק תופס • * פקודות התוכניתעבור שבו נרשמים המשתנים והנתונים שטח עבודהעבור
המעובדים
![Page 25: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/25.jpg)
25
רב-כניסות רב-כניסות ReentrantReentrant- - שיטת השיטת ה
של תוכנית עותק אחדאפשרות אחרת - רק • נפרד עבור מראה מקוםהיישום נשמר יחד עם
כל משתמש
שטחי עבודה נפרדיםכל משתמש מקבל •
![Page 26: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/26.jpg)
26
MultitaskingMultitasking
מספר שיטת עבודה של מערכת הפעלה לפיה • על אותו מעבדבמקביל מתבצעות משימות
לפרק לכל משימה המעבדהמערכת מקצה את • מסוים, מפסיקה את ביצוע המשימה ומקצה זמן
המעבד למשימה אחרת
המצביע על מראה מקוםמראה מקוםזה מתבצע בעזרת •הפקודה האחרונה שבוצעה בכל משימה
![Page 27: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/27.jpg)
27
גישות בניהול תנועות
(Oracleגישת הנעילות )•
גישת הגירסאות•
![Page 28: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/28.jpg)
28
בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))
נגרמת כתוצאה מעדכון בו-זמני•
סטודנטים מנסים להירשם באותו זמן 2דוגמא: •לאותו קורס
נתבונן במה שקורה עם טבלת “קורסים” • עמודות: 2שמכילה בין השאר
“מספר סטודנטים מכסימלי * “מספר סטודנטים *לקורס”
”שכבר נרשמו לקורס
![Page 29: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/29.jpg)
29
בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))
C-200 סטודנט א’ נרשם לקורס• ושולפת את שורת קורס Select תוכנית היישום מבצעת•
C-200 מבסיס הנתונים אל שטח העבודה שהוקצה’לסטודנט א
![Page 30: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/30.jpg)
30
בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))
סטודנט ב’ מבקש להירשם לאותו קורס•
![Page 31: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/31.jpg)
31
בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))
סטודנט א’ מאשר את ההרשמה•
תוכנית היישום:• את מונה “מספר הסטודנטים שכבר 1מגדילה ב- *
נרשמו” מעדכנת את בסיס הנתונים *
Commit מבצעת * ’משחררת את שטח העבודה של סטודנט א *
![Page 32: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/32.jpg)
32
בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))
סטודנט ב’ מאשר אף הוא את ההרשמה•
![Page 33: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/33.jpg)
33
בעיית “העדכון האבוד" בעיית “העדכון האבוד" ( ( Lost UpdateLost Update))
הבעיה - כל משתמש קרא את אותם •נתונים מבסיס הנתונים לשטחי העבודה
שבזיכרון מבלי להתייחס לעובדה שהנתונים עומדים להתעדכן בינתיים ע”י
משתמש אחר
![Page 34: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/34.jpg)
34
בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך ((Uncommitted UpdateUncommitted Update ) )עדכון עדכון
הבעיה נוצרת כאשר תוכנית יישום •אחת )תוכנית ב’( נמצאת בתהליך
עדכון שורה שעודכנה קודם לכן ע”י תוכנית יישום אחרת )תוכנית א’(
ואח”כ Commit שעדיין לא ביצעה ’יבוצע גלילה לאחור של תוכנית א
![Page 35: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/35.jpg)
35
עדכון רשומה שנמצאת בתהליך עדכון רשומה שנמצאת בתהליך בעייתבעייתעדכון - דוגמאעדכון - דוגמא
תוכניות יישום שונות: 2מופעלות • אחת - לעדכון המספר המכסימלי של *
( 95 ל- 85סטודנטים לקורס )מ- השניה - רישום לקורס*
![Page 36: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/36.jpg)
36
בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאעדכון - דוגמא
![Page 37: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/37.jpg)
37
בעיית עדכון רשומה שנמצאת בתהליך עדכון - בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאדוגמא
![Page 38: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/38.jpg)
38
בעיית עדכון רשומה שנמצאת בתהליך עדכון - בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאדוגמא
![Page 39: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/39.jpg)
39
בעיית ניתוח נתונים לא עקביבעיית ניתוח נתונים לא עקביInconsistent AnalysisInconsistent Analysis
תוכנית א’ מפיקה דו”ח המציג את מספר הסטודנטים •שנרשמו בפועל לפי קורס
תוכנית זו מתחילה לעבוד ולשלוף נתונים מבסיס הנתונים•תוך כדי העבודה מתחילה לפעול תוכנית ב’ לרישום •
סטודנטים לקורס ומעדכנת את נתוני אחד הקורסים ’שכבר נקראו ע”י תוכנית א
כאשר תוכנית א’ מסיימת לעבוד היא מציגה נתונים •שכבר אינם נכונים מאחר ותוך כדי פעולתה בסיס
הנתונים התעדכן
![Page 40: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/40.jpg)
40
((LockingLocking ) )מנגנון הנעילות מנגנון הנעילות
( - Lock )הגדרת נעילה• של אובייקט בבסיס סימוןפעולה המבצעת
הנתונים )שורה, טבלה..( כדי להצביע על כך ולכן עדכון של בתהליך כרגע נמצאשהאובייקט
הוא חסום לגישה ע”י משתמשים נוספיםכאשר תוכנית מבקשת לנעול אובייקט נעול היא •
התוכניות הממתינות לאובייקט זה עד לתורתכנס הנעילה את תשחרר לה הקודמתאשר התוכנית
![Page 41: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/41.jpg)
41
Locking Locking ) )רמת הנעילה רמת הנעילה GranularityGranularity))
תחום בסיס הנתונים •שכפוף להוראת
הנעילה
![Page 42: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/42.jpg)
42
רמות הנעילה האפשריותרמות הנעילה האפשריות
( ( Column Level LockingColumn Level Locking ) )עמודה בתוך שורהעמודה בתוך שורה•מונעת גישה מתוכניות אחרות המבקשות --
לעדכן אותה עמודה באותו שורה
לא מונעת גישה של תוכניות אחרות לאותה •שורה כדי לעדכן עמודות אחרות
אינן RDBMS בגלל המורכבות - רוב מערכות•תומכות בנעילה ברמה זו
![Page 43: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/43.jpg)
43
רמות הנעילה האפשריותרמות הנעילה האפשריות
( - Row Level Locking )שורה•תבצע נעילה של כל RDBMS מערכת *
השורה מבלי להתייחס אילו עמודות בשורה רוב המערכות *מתעדכנות
המסחריות תומכות בשיטת נעילה זו
פעולות קלט/פלט ( - Page Level Locking )דף•( Page )מתבצעות תמיד ברמה של דף פיסי
שיכול להכיל שורה אחת או יותר
![Page 44: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/44.jpg)
44
רמות הנעילה האפשריותרמות הנעילה האפשריות( - Table Level Locking )טבלה•
תבצע נעילה של כל הטבלה RDBMS מערכת * מבלי להתייחס אילו שורות ואילו עמודות בטבלה
מתעדכנות קלה למימוש אולם מקטינה את כמות העבודה *
* במקביל
אינה מתאימה לסביבה מרובת-משתמשים
( Data Base Level Locking )בסיס הנתונים•קלה ביותר לשימוש * מיושמת במצבים נדירים*
![Page 45: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/45.jpg)
45
((Lock TypeLock Type ) )סוגי הנעילות סוגי הנעילות
אף( - Exclusive Lock )נעילה בלבדית• את לקרוא או לעדכן אינה מורשיתתוכנית יישום אחרת
הנתונים
( -Shared Lock )נעילה שיתופית•תוכנית יישום המבקשת לקרוא שורה מסוימת מחזיקה *
מתירהאותה בסטטוס של “נעילה שיתופית” ובכך אותהלא לעדכן אותה שורה אך לקרוא אחרותלתוכניות
ברגע * שהתוכנית מבקשת לעדכן את השורה היא צריכה להעביר
”את הנעילה מ- “שיתופית” ל- “בלבדית
![Page 46: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/46.jpg)
46
טבלת החלטות לקבלת נעילותטבלת החלטות לקבלת נעילות
![Page 47: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/47.jpg)
47
Consistent read
(Starvationאם נוצר מצב של "הרעבה" )•
בלבד לבצע קריאה"הרעבה" – יישום מבקש •נעולה למשך זמן רבלרשומה
Consistent Readפיתרון – •
)לפני מגירסה קודמתקריאה של רשומה •העדכון(
מצריך ניהול גירסאות•
![Page 48: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/48.jpg)
48
טבלת החלטות לקבלת נעילותטבלת החלטות לקבלת נעילות
קרא מגירסה קודמת
בצע נעילת כתיבה
![Page 49: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/49.jpg)
49
((DeadlockDeadlock ) )נעילה ללא מוצא נעילה ללא מוצא
של המתנה לשורהנצחינצחימצב •
תוכניות יישום )או יותר( נועלות 2מצב שבו •אובייקט שהתוכנית השניה מבקשת להשתמש
בו
![Page 50: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/50.jpg)
50
נעילה ללא מוצא - דוגמאנעילה ללא מוצא - דוגמא שורות שונות אולם 2 תוכניות יישום המעדכנות 2•
*: בסדר הפוךומבצעת לשורה A שורה’ מתחילה לפעול ושולפת תוכנית א
)כתיבה( לקראת עדכוןנעילת בלבדית מתחילה לפעול תוכנית ב’ *
)כתיבה(נעילה בלבדיתומבצעת לה B שורהושולפת מבקשת לקרא את תוכנית א’ *
מכיוון ששורה זו כבר נעולה בלבדית נעילהולבצע לה B שורה
התוכנית מוכנסת למצב המתנה A ’ מבקשת לקרא את שורהב תוכנית *
מכיוון ששורה זו כבר נעולה נעילה בלבדיתולבצע לה התוכנית מוכנסת למצב המתנה
![Page 51: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/51.jpg)
51
היחלצות ממצב של נעילה ללא היחלצות ממצב של נעילה ללא מוצאמוצא
- ביצוע כל הנעילות לפני עדכוןביצוע כל הנעילות לפני עדכון• על כל השורות להכריז מראשלהכריז מראש כל תוכנית צריכה *
שהיא מבקשת לנעול מתחילה לבצע את הנעילות RDBMS מערכת*
משחררים אם שורה מסוימת כבר נעולה * את כל השורות שכבר ננעלו והתהליך מתחיל
קשה ליישם כי בד”כ תוכנית *מחדש אינה יודעת יישום
את כל השורות שתרצה לעדכן מראש
![Page 52: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/52.jpg)
52
היחלצות ממצב של נעילה ללא היחלצות ממצב של נעילה ללא מוצאמוצא
איתור מצב נעילה ללא מוצא -איתור מצב נעילה ללא מוצא -• Time )זמן המתנהקובעת RDBMS מערכת*
Out) כך שאם תוכנית יישום ממתינה מעבר לותופסק פעולתה של תוכנית יישום כל שהיא תוך
וביטול כל העדכונים Rollback כדי ביצוע פעולהשהתוכנית כבר ביצעה
לבחירת התוכנית הקריטריוןהקריטריון * התנועה האחרונהשפעולתה תופסק: -
שהתחילה לפעול - התנועה הכי מעט עדכוניםשהספיקה לבצע
![Page 53: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/53.jpg)
53
בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך עדכון - דוגמאעדכון - דוגמא
-C קוראת שורה של קורס TR1 תוכנית יישום•מטבלת “קורסים” ומעדכנת אותה 200
קוראת את השורה של TR2 תוכנית יישום• מטבלת “מחלקות”, קוראת את CS מחלקת
מטבלת “קורסים” C-200 השורה של קורס CS ולבסוף מעדכנת את השורה של מחלקת
”בטבלת “מחלקות
![Page 54: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/54.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/55.jpg)
55
RDBMSRDBMS דוגמא לניהול נעילות ע”י מערכת דוגמא לניהול נעילות ע”י מערכת
![Page 56: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/56.jpg)
56
RDBMSRDBMS דוגמא לניהול נעילות ע”י מערכת דוגמא לניהול נעילות ע”י מערכת
![Page 57: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/57.jpg)
57
גירסאותגירסאות
מתוצרת Framework – Hibernetמערכת •Apache
סביבה מונחית עצמים•
JAVAשפת •
Oracleבסיס נתונים •
מנהל את העבודה Framework ה- •( SELECT, UPDATEעם הנתונים )
![Page 58: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/58.jpg)
58
גירסאות – מספר עדכני ו-מספר שוטף "מספר גרסה"לכל שורה בטבלה נשמר •יישום המבקש לעדכן שורה בטבלה – קורא •
(Frameworkשורה מהדיסק )בעזרת ה- 1מעלה ב- ( Frameworkהיישום )בעזרת ה- •
את ה- "מספר הגרסה" של שורת הטבלה שלו שומר את השורה בשטח העבודההיישום •
עם "מספר הגירסה" – RAM ב- "מספר גירסה של היישום"
![Page 59: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/59.jpg)
59
גירסאות – עדכון שורה
רשומה הוא מבצע מבקש לעדכןכאשר יישום •פקודה:
•PDATE…WHERE "מספר גרסה של היישום" ="מספר הגירסה )של שורת •
הטבלה("
אם השוויון אינו מתקיים היישום מתחיל מחדש• - Commit ונרשמה פקודת אם השוויון מתקיים•
העדכון יתבצע
![Page 60: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/60.jpg)
60
סטודנטים לאותו קורס סטודנטים לאותו קורס22 יישומים מבקשים לרשום יישומים מבקשים לרשום 22דוגמא: דוגמא: - בעיית העדכון האבוד- בעיית העדכון האבוד
C-200 = 5מספר גירסה של שורת קורס: •
רשומה לכן הוא קורא רוצה לעדכןיישום א' •ומעלה את המספר רשומת הקורס מהדיסק
שלו מצויה עותק RAM כך שב- 6 ל- הגרסה6הרשומה עם גירסה
רשומה לכן הוא אותהיישום ב' רוצה לעדכן •מעלה את מספר קורא אותה רשומה מהדיסק
שלו מצויה עותק RAM כך שב- 7הגרסה ל- 7הרשומה עם גירסה
![Page 61: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/61.jpg)
61
סטודנטים לאותו 2 יישומים מבקשים לרשום 2דוגמא: קורס
אשר UPDATEהיישום הראשון מבצע פקודת • שלו הינה RAM תתבצע כי מספר הגרסה ב- לא
ואילו "מספר הגירסה" של השורה 6 )היישום יתחיל 7הינו
להתבצע מחדש(
אשר UPDATEהיישום השני מבצע פקודת • 7 שלו הינה RAMכי מספר הגירסה ב- תתבצע
ל- "מספר הגירסה" של הזהההשורה
![Page 62: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/62.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/63.jpg)
63
בעיית עדכון רשומה שנמצאת בתהליך בעיית עדכון רשומה שנמצאת בתהליך ((Uncommitted UpdateUncommitted Update ) )עדכון עדכון
ROLLBACKהיישום הראשון מבצע פקודת • ה- מוחק את שורת הטבלה מזיכרוןאשר בעצם
RAMשל היישום ולא מהדיסק
אשר UPDATEהיישום השני מבצע פקודת • 7 שלו הינה RAM כי מספר הגירסה ב- תתבצע
הזהה ל- "מספר הגירסה" של השורה
![Page 64: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/64.jpg)
64
תנועה עם מספר עדכונים
לדוגמא: רישום סטודנט לקורס• "מספר סטודנטים שנרשמו עד כה"כולל עדכון •
הוספת שורה בטבלת "ציונים" וכן ל עדכון ועדכון - לכ כי אז COMMITברגע שנרשמה פקודת •
בין מספר הגירסה של שורת הטבלה מתבצעת השוואה * עם מספר
הגרסה של היישום יתבצע העדכון פיזית בדיסק * אם קיים שוויון
ימחקו כל אחרת * של היישום RAM מזיכרון ה- העדכונים
* היישום יתחיל להתבצע מחדש
![Page 65: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/65.jpg)
65
תרגיליםתרגילים
סיבות מדוע תנועה עלולה להסתיים 2 מנה לפחות 1.•
. 2 בכישלון הסבר את החשיבות של קובץ יומן האירועים ואיזה
. 3 שירותים הוא מספק חווה דעתך על אורך התקופה שבה כדאי לשמור
יומן אירועים . הסבר מהו “שיחזור לאחור” ומהו “שיחזור לפנים” 4
ומתי נדרש כל אחד מהם
![Page 66: עיבוד תנועות בסביבת SQL Transaction Processing](https://reader036.vdocuments.net/reader036/viewer/2022062304/56814299550346895daecd05/html5/thumbnails/66.jpg)
66
תרגיליםתרגילים
נתון מצב הנעילות הבא: 4 • R3, R2, R1: משתמש דן נעל את האובייקטים*
וממתין
R4 לאובייקט וממתין R6, R5, R4 משתמש רון נעל את האובייקטים *
R8 לאובייקט וממתין לאובייקט R9, R8: משתמש אייל נעל אובייקטים *
R10 * R2 וממתין ל R11, R10 משתמש צבי נעל אובייקטים
כיצד בא לביטוי העובדה שזהו מצב של הראה * נעילה ללא מוצא