Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

שימוש ב NOLCOK HINT

5 views
Skip to first unread message

?.@discussions.microsoft.com תמיר ט.

unread,
Aug 17, 2010, 5:03:04 AM8/17/10
to
יש לי ויכוח ארוך עם הCTO שלנו , בכל השאילתות שהאפליקצייה שלנו מייצרת קיים
NOLOCK , בעקבות ההדרכה האחרונה של עמי , התרעתי בפניו על השימוש ועל כך שייתכן
והאפילקצייה קוראת Dirty Pages שהשתנו במהלך הטרנזאקציה ( למרות שאצלנו לא
עובדים עם טרנזקציות ) , והוא מאידך מנופף לי במאמרים של מיקרוסופט על lock
esclation , שselect טיפה ארוך יכול להפוך מ row\page lock ל Table lock ומפה
נובע החשש שלו. המערכת שלנו היא מערכת קריטית שעובדת בתי חולים, על סמך נתונים
במערכת מתקבלות החלטות להמשך טיפול בחולים.
אני אשמח לקבל תשובה ברורה מאשר לינקים לKB או בלוגים שונים .
נ.ב.
מדובר על SQLServer2005
תודה.

Amir9

unread,
Aug 18, 2010, 10:30:03 AM8/18/10
to
הי תמיר,

שימוש ב- NOLOCK בהגדרה מוביל ל-Dirty Read ,כלומר סט של נתונים שמעודכנים
ובמקביל נשלפים יתכן ויהיו לא רלוונטים.
בנוסף, בשימוש ב- NOLOCK יתכן ותקבל ספירה כפולה בסיטואציות מסויימות.
כך שם יש משמעות קריטית לסכימות עליך להמנע מהשימוש ב- NOLOCK.
השימוש ב-NOLOCK פותר בעיות של גישות רבות בו זמנית אבל מבטל את הבידוד
הבסיסי של ה- Database בכך שרשומות שעודכנות ולא עברו COMMIT יחזרו על אף שלא
התבצע COMMIT.

אמיר

"תמיר ט.":

Assaf Shalem

unread,
Aug 18, 2010, 10:59:03 AM8/18/10
to
הי תמיר,
השימוש ב- NOLOCK יכול להועיל במקרה שיש לך קריאות רבות מטבלה שבעיקרון לא
עוברת עידכונים.
במקרה הנ"ל אתה מסתכן רק במקרה שרשומה שנכנסה ונקראה עברה Rollback אך אני
מאמין שתוכל לחיות עם זה.

במידה והטבלה מרכזית ויש בה הרבה הכנסות, עידכונים וקריאות אתה יכול לבדוק מה
התחומים שבהם המידה כבר סטטי ורק שם לקרוא עם NOLOCK ובשאר לקרוא רגיל.

תמיד יש סיכוי ל- Dirty Read בשימוש ב - Nolock אך אליך לנתח את הפעילות על
הטבלה ולמדוד את הסיכונים.

בכל מקרה לפני שאתה עובד עם NOLOCK תוודא שהפרוצדורות כתובות נכון ושיש שימוש
נכון באינדקסים, סטטיסטיקות מעודכנות, תראה עם אתה יכול להוריד Foreign Key ע"מ
לצמצם את הנעילות על טבלאות הקשר וכו...


"תמיר ט.":

0 new messages