חסכו ואמצו: Sparse Columns – מבט נוסף

יום שבת, ינואר 8, 2011

כתבתי פוסט ביקורתי בנושא לפני מספר ימים, וקיבלתי תגובות מחכימות ממיכאל זילברשטיין ורונן טל- שניהם בעלי נסיון בתחום, ומי אני שרק כתבתי פוסט שאתווכח איתם? הם צודקים: נכון שבטבלה בת עמודה אחת לא מרוויחים הרבה, אבל כשבודקים בטבלה מרובת עמודות - אז המצב שונה. ניצור שוב שתי טבלאות, הפעם בנות 100 עמדות Int, כשבראשונה הן Sparse ובשניה לא: Use tempdb; Go   If Object_Id('T1') Is Not Null Drop Table T1; If Object_Id('T2') Is...
אין תגובות

חסכו ואמצו: Sparse Columns

יום ראשון, דצמבר 26, 2010

Sparse Columns הוא בשורה שגרסת SQL 2008 הביאה עמה לפני כשנתיים: עמודות שרובן Nulls (כלומר- מאוכלסות בפועל במעט מאוד ערכים) יכולות להיות מוגדרות כ-Sparse Columns ואז הן תחסוכנה מקום שכן לא יוקצה שטח אחסון ל-Nulls אלא לערכים אמיתיים בלבד. נבדוק במה דברים אמורים- ניצור שתי טבלאות עם עמודת Int - בראשונה נגדיר אותה כ-Sparse ובשניה לא, לשתיהן נוסיף 100,000 שורות, ואולי אף נגזים ולעמודת ה-Sparse נכניס Nulls ולעמודה שאינה Sparse נכניס מספרים, ונבדוק כמה זה עולה לנו: Use tempdb; Go   ...
4 תגובות

שימוש ב-Sparse Columns וב-Column_Set

יום רביעי, אפריל 28, 2010

כאשר קולטים רשומות הכוללות Null – הם (ה-Nulls) תופסים מקום, בניגוד למה שאולי היינו מצפים. למשל בעמודות מסוג Varchar ששומרות רק את המחרוזת שקלטנו ללא מקומות פנויים לתווים המיותרים (אם נניח קלטנו מחרוזת באורך 10 תווים לשדה שיכול לקלוט עד 50 תווים) יש צורך לשמור בכל רשומה מידע לגבי אורך המחרוזת השמורה באותה עמודה. החל מגרסת SQL Server 2008 יש אפשרות להגדיר שדות כ-Sparse Columns ואז לא מבוזבז מקום כשיש Null, אלא רק כשאין ערך (כלומר- טוב להשתמש בהן כשברוב המקרים יש Null). פטנט זה מגיע יחד עם האופציה ליצור Column_Set שזו מעין עמודה מחושבת המציגה בתור Xml את כל שדות ה-Sparse: Create...
אין תגובות