נעילת טבלה על ידי פקודת Select

יום שלישי, ספטמבר 16, 2014

ניתן לנעול טבלה על ידי פקודת Select אם משתמשים ב-TabLockX, אך לא בכך אעסוק.לאחרונה נתקעה ריצה של פרוצדורה המעדכנת טבלה מסויימת, על ידי משתמש שהריץ פקודת Select תמימה מאותה טבלה, ללא שום Hint (כמו ה-TabLockX הנ”ל).כיצד זה יתכן? בואו נראה- ניצור טבלה להדגמה: Use tempdb;Go If Object_ID('T_Messages','U') Is Not Null Drop Table T_Messages;Go Select * Into T_Messages From sys.messages;Go לאחר מכן נריץ את השליפה הבאה שיוצרת מכפלה קרטזית של הטבלה עם עצמה, וכך מבטיחה שריצת ה-Select תרוץ הרבה זמן (לא הייתי מריץ את זה על ה-Prod אך איש הישר בעיניו יעשה): Select *From T_Messages T1Cross Join...
אין תגובות

נפח אחסון טבלאות

יום רביעי, ספטמבר 22, 2010

בפוסט זה אני עוסק בנפח טבלאות כפי שמחושב על ידי פרוצדורת המערכת SP_SpaceUsed, והשפעת פעולות הכנסת המידע ומחיקתו עליו. ניצור תשע טבלאות, נכניס לתוכן מספרים, נחשב את נפחן בעזרת SP_SpaceUsed, נרוקן אותן – בדרכים שונות, ושוב נחשב את נפחן בעזרת SP_SpaceUsed: T_1000_NoIndex -טבלת Heap בת 1000 שורות שתרוקן בעזרת פקודת Delete פשוטה T_1000_ClusteredIndex -טבלה בת 1000 שורות בעלת Clustered Index שתרוקן בעזרת פקודת Delete פשוטה T_1000_Index -טבלה בת 1000 שורות בעלת Index רגיל שתרוקן בעזרת פקודת Delete פשוטה T_1000000_NoIndex - טבלת Heap בת 1000000 שורות שתרוקן בעזרת פקודת Delete פשוטה T_1000000_ClusteredIndex - טבלה בת 1000000 שורות בעלת Clustered Index שתרוקן בעזרת פקודת Delete פשוטה T_1000000_Index - טבלה...

פקודת Truncate Table

יום שני, יולי 5, 2010

במערכת של אוראקל נדרשתי להפעיל פרוצדורה גנרית על טבלה שבניתי (הכוונה שהפרוצדורה מקבלת את שם הטבלה כפרמטר וכך אותה פרוצדורה יכולה לטפל בכל הטבלאות), אולם היא נכשלה מכיוון שלעמודת התאריך לא נתתי את השם הסטנדרטי שהפרוצדורה אמורה למצוא אלא את השם שציין הלקוח באפיון. לשנות את שם העמודה כעת עלול להוביל לתקלות ב-ERP שמעביר אליה וממנה נתונים ואולי גם בדוחות, וכדי לחסוך מעצמי את כל כאב הראש חשבתי להתחכם, ליצור View על הטבלה שבו השמות יהיו כנדרש, ולהפעיל את הפרוצדורה עליו: ניתן לבצע פקודות Select, Delete, Update, Insert על View כאשר הוא מוגדר כ-Select על טבלה ללא סיבוכים כמו Group...