
SET SINGLE_USER WITH ROLLBACK IMMEDIATE, ואחרי ההגדרה מחזירים את הגישה למשתמשים עם MULTI_USER.ALTER DATABASE Northwind SET ALLOW_SNAPSHOT_ISOLATION ONSET TRANSACTION ISOLATION LEVEL SNAPSHOTהטקסט המלא של הדקות הראשונות בהרצאה «snapshot» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
וגם אם כן לרמת הבידול הגבוהה ביותר שקיימת בתוך ה-Database זו ה-Snackshot, שהיא בעצם קובעת לי שכל הנתונים שייקראו במהלך אותה הטרנזקציה הם אלו הנתונים שהם נכונים לתחילתה של הטרנזקציה בזמן ההתחלה.
כל שאר הקונקשנים שיעדכנו נתונים אלו פותחים להם רואו וורג'ינינג חדש, נפרד, מקביל, על מנת לעדכן את הנתונים שם מבלי להפריע טרנזקציה אחת לחברתה.
איך אנחנו עושים זאת ואיך אנחנו עובדים במוד של סנפשוט, שימו לב, על מנת לעבוד במוד כזה אנחנו צריכים להגדיר הן הגדרה ברמה של הדאטאבס והן הגדרה ברמה של הטרנזקציה.
ברמת הדאטאבס אנחנו צריכים לעשות אלטר דאטאבס להדליק את ה-לאו סנפשוט מיזולייז'ן. כדי לעשות זאת ברמה של הדאטאבס אנחנו צריכים לסגור אישית את כל הקונקשנים.
Set single user with rollback immediately. סגרתי את כל הקונקשנים ואז אני יכול לפנות ולבצע את אלטר דאטאבס, לואו סנאפשוט איזוליישן תדליק לי את האפשרות לעבוד ברמת בידול של סנאפשוט.
נריץ גם את זאת. ואחר שביצענו זאת אנחנו כבר יכולים לאפשר למשתמשים נוספים להתחבר לתוך הדאטאבס מולטי יוזר. אלטר דאטאבס נור פרינסט מולטי יוזר F5 אנחנו מריצים ואנחנו כעת ערוכים לעבודה בסנאפשוט לבל.
אנחנו פותחים טרנזקציה מסמנים שהיא תהיה סנאפשוט בגין טרנזקשן ואנחנו שולפים נתונים את כל הרשומות בהן first name שווה nancy.
אנחנו מגלים שיש לי שלוש שורות כאלה בתוך הטבלה, ה-nodes שלהם קרקרק, ובמקביל נפתחת לה טרנזקציה אחרת. תוך כדי ביצועה של הטרנזקציה מתעצמו נפתחת טרנזקציה אחרת, שוב פעם מתחברת לתוך בסיס נתונים notewind, עושה קונקשן חדש, וזה מצליח, ומציינת שה-transaction
isolation level שלנו הוא snapshot, פותחת טרנזקציה ומעדכנת לנו נתון בתוך הטבלה עצמה. שימו לב להפתעתנו הרבה, האישור התקבל.
One rose affected, אין לנו כאן נעילות. אתה רוצה לעדכן לנתון? בבקשה, תעדכן. אתה רוצה לבצע לו גם קומיט? הקומיט מתקבל.
קומיט completed successfully. הכנסת כאן נתון חדש, עדכנת רשומה חדשה לעובדת מספר 1, זוהי ננסי, עדכנת לה בתוך נוטס סטרינג חדש.
האם הטרנזקציה שנמצאת מצד שמאל רואה נתונים אלו? הטרנזקציה שנמצאת מצד שמאל עדיין חיה בעולם שלפני העדכון של הטרנזקציה החדשה, עדיין חיה בעולם כפי שהוא היה נקבע בשורה מספר 292 בתחילתה של הטרנזקציה, ולכן כל שליפה חוזרת ונשנית של הנתונים הללו של עובדת ננסי עדיין מציג לינוט שווה 0.
היכן נשמר הנתון הזה? הוא הרובייר ג'יניק שלה, שמר לנו כאן את הנתון הזה בצד, אבל הוא לא מפריע לטרנזקציה אחרת. אני יכול להתחיל עוד טרנזקציה נוספת במהלך ביצוע של הטרנזקציה מצד שמאל, הפעם אני מכניס dirty reads כי אני מבצע עליהם rollback, וגם אותם אנחנו מריצים
וברור לנו שכשם שהקומיטים לא נכנסו, כך הרולבקים עצמם המידע המלוכלך לא נראה והטרנזקציה מצד שמאל חיה לה בעולם שלפני ביצוע העדכונים האחרונים, והיא לא רואה אותם, וגם כאשר היא מסתיימת היא עדיין לא רואה אותם,