סוגי נעילות: Shared Lock, Update Lock, Exclusive Lock

26/07/2013

Exclusive Lock – נעילה בזמן עדכון טבלה. העדכון נועל אותה, וכל שאר היישומים אינם יכולים לגשת אליה עד שהעדכון יסתיים. Shared Lock – נעילה לזמן קצר ביותר במהלך ביצוע ה-Select שנועד למצוא אילו שורות לשנות. למשל- שתי פקודות Update נשלחות בו זמנית, שתיהן מפעילות Shared Lock על הטבלה, ומחפשות את השורות הרלוונטיות. כל אחת מהן מונעת מזולתה לעדכן את הטבלה.לא ניתן לעדכן בשלב זה (כשהאחת מחפשת ונועלת- השניה לא יכולה לעדכן), אך כן ניתן לחפש (כשהאחת מחפשת ונועלת- גם השניה יכולה לחפש ולנעול). Update Lock – כאשר שתי פקודות ניגשות לטבלה בו זמנית – שתיהן מפעילות עליה...
אין תגובות

CTE רקורסיבי ופונקציות החלון

22/07/2013

CTE רקורסיבי הוא הכלי החביב עלי ביותר מתוך כל מה ש-SQL Server וחבורתו מציעים לנו: לא High Availability, לא File Stream, לא Variable Tables, ואפילו לא Service Broker. יתכן שאם תופיע מודעת דרושים בה נדרש מומחה ל-CTE רקורסיבי שיכתוב רקורסיות מהבוקר עד הערב – אני אתקשר ואשאל בנימוס כמה הם רוצים שאשלם להם כל חודש תמורת הזכות.. למרבה הצער השימוש בהם אינו נפוץ, הם מתאימים לבעיות מאוד ספציפיות, ועיקר שמושן הוא באתגרים טכניים שאני מאוד מחבב; אך כמו כל מיני חידות הגיון בסגנון של איך להעביר זאב, כבשה ואבטיח בסירה מבלי שהכבשה תתנגוס באבטיח ומבלי שהזאב...
אין תגובות

Database Diagrams

19/07/2013

את דרכי בתחום בסיסי הנתונים התחלתי ב-MS Access לפני קרוב ל-20 שנה. כשהתקדמתי כעבור מספר שנים ל-SQL Server – עברתי "הלם תרבות" לאחר שגיליתי שנדרשת עבודה הרבה יותר מקצועית ושליטה בכתיבת SQL: באקסס יש הרבה אשפים שמאפשרים לעשות כמעט הכל ללא כתיבת קוד SQL, ויתר על כן – ממשק ה-SQL שם הוא כה לא נוח שגם מי ששולט היטב ב-SQL יתקשה להסתדר איתו. מה רבה הייתה הפתעתי כשגיליתי שיש אנשי SQL Server שכותבים משפטי Select – כולל Joins, Group By, Where וכו' – כפי שאני כותב את הפוסט הזה.. כמובן שכיום גם אני עושה...
אין תגובות

האח הגדול עינו פקוחה (6) – מי שינה את הנתונים בטבלה? Change Data Capture

16/07/2013

לפני כשלוש שנים פרסמתי את הפוסט האח הגדול עינו פקוחה (5) – מי שינה את הנתונים בטבלה? בו הצעתי דרך לבניית טבלת מעקב אחר שינויים בטבלה וטריגר שיעדכן אותה, וכך נוכל לדעת מי שינה את נתוני הטבלה, מתי, ומה. בפוסט ההוא המצאתי את הגלגל מחדש מכיוון שקיים כבר כלי יעודי לשם כך בשם Change Data Capture, ובקיצור – CDC (זה לא אמור להיות Changed Data Capture? לכידת מידע שהשתנה..), שעושה זאת בערך: לא בדיוק, לא הכל, אבל מה שיש יכול לחסוך טירחה מאיתנו ומאמץ מהמחשב מכיוון שמדובר באופציה שאינה עושה שימוש בטריגרים אלא "מאזינה" ללוג. מנגד-...
אין תגובות

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

10/07/2013

בשלוש דרכים אישה נקנית – כך פסקו חז"ל, אך מה בדבר נסיעה במונית שירות? מדי יום אני נוסע הלוך ושוב, מחיר הנסיעה הסטנדרטי הוא 6 ₪, חלק מהנוסעים משלמים בשני מטבעות – של 5 ₪ ושל 1 ₪, אחרים בשישה מטבעות של 1 ₪, ויש כמובן עוד אפשרויות. ננסה למצוא את כולן: Declare @N Int=600; With Mt As (Select 10 V Union All Select 50 V Union All Select 100 V Union All ...
אין תגובות

Union לעומת Or

06/07/2013

מה יותר טוב – Union או Or? רגע, איזו מין שאלה זו? Union זה Union ו-Or זה Or.. מה הקשר? הקשר הוא שבמקום לכתוב תנאי Or אפשר לכאורה לבצע Union בין השורות שעונות על התנאי הראשון והשורות שעונות על התנאי השני. לא ככה? אה.. יש בזה משהו, אבל זה לא עובד הפוך: אם נעשה Union בין שתי טבלאות שונות, לא נוכל להמיר אותו ב-Or. כשחושבים על זה – זה נשמע נכון, אבל בכל זאת- מה קורה כשכן? בואו ננסה, וניצור קודם כל טבלה מתאימה: ...
אין תגובות

התכבדתי בתואר MVP

04/07/2013

השבוע הגיעה אלי הבשורה המשמחת ממיקרוסופט שקיבלתי תואר MVP למהלך השנה הבאה. בוודאי ששמחתי- לא בכל יום אני זוכה בכבוד כזה, ועד כדי כך הגיעו הדברים שלראשונה בתולדות הבלוג אני מרשה לעצמי לפרסם פוסט שאינו טכני אלא עוסק בי: לא פרסמתי פוסט חגיגי כשהבלוג נפתח וגם לא כשחגגתי שנה או פוסט מספר 100 וכו', אך הפעם השעה כשרה לכך. נו טוב- למי כבר אני יכול לרוץ ולספר אם לא לכם? אישתי לא הבינה מה זה אומר בדיוק (MVP זה כמו BMW?) וביקשה שאשלח לה מייל עם הפירוש המדוייק של ראשי התיבות, החבר'ה גיחכו ושאלו...
תגיות: , , ,
6 תגובות