SELECT בלי נעילות
אני, יודע היטב Tsql, בכל הקשור לאיחזור נתונים וניתוחם. אבל אין לי מושג באשר לניהול DB, ונעילות וכו'.
ולכן, נעת לעת, אני מעולל תקלות חמורות.
הנה סיפור מהיום:
כתבתי פרוצדורה, עם SELECT פשוט:
SELECT * FROM Table1
WHERE pk IN (SELECT COlumn1 FROM Table2)
הפרוצדורה רצה בעבר, בלי תקלות מיוחדות, למרות שהיא היתה די איטית, בגלל בעיות אינדקסים וכו'.
היום, הפרוצדורה היתה איטית במיוחד, אז הרצתי אותה והלכתי לעיסוקים אחרים.
ותהי מהומת אלוקים...
הפרוצדורה נעלה את הטבלה Table1, שהיא ליבת המערכת, והשרת הושבת לדקות ארוכות, עד שעצרתי את הפרוצדורה.
אז למדתי בדרך הקשה, כמה דברים:
א. כל SELECT נועל את הטבלה, ומונע הכנסת רשומות ועדכון.
ב. אסור להריץ שאילתה וללכת.
שאלתי:
האם ניתן למנוע מקרים דומים? האם אני יכול להגדיר שהSELECT ירוץ בלי לנעול את הטבלה?
תודה רבה מכל הלב
אני, יודע היטב Tsql, בכל הקשור לאיחזור נתונים וניתוחם. אבל אין לי מושג באשר לניהול DB, ונעילות וכו'.
ולכן, נעת לעת, אני מעולל תקלות חמורות.
הנה סיפור מהיום:
כתבתי פרוצדורה, עם SELECT פשוט:
SELECT * FROM Table1
WHERE pk IN (SELECT COlumn1 FROM Table2)
הפרוצדורה רצה בעבר, בלי תקלות מיוחדות, למרות שהיא היתה די איטית, בגלל בעיות אינדקסים וכו'.
היום, הפרוצדורה היתה איטית במיוחד, אז הרצתי אותה והלכתי לעיסוקים אחרים.
ותהי מהומת אלוקים...
הפרוצדורה נעלה את הטבלה Table1, שהיא ליבת המערכת, והשרת הושבת לדקות ארוכות, עד שעצרתי את הפרוצדורה.
אז למדתי בדרך הקשה, כמה דברים:
א. כל SELECT נועל את הטבלה, ומונע הכנסת רשומות ועדכון.
ב. אסור להריץ שאילתה וללכת.
שאלתי:
האם ניתן למנוע מקרים דומים? האם אני יכול להגדיר שהSELECT ירוץ בלי לנעול את הטבלה?
תודה רבה מכל הלב