Skip to content
  • דף הבית
  • קורס SQL
  • דוא"ל

חודש: מרץ 2019

מה הבעייה עם nvarchar(max) או varchar(max)

10 במרץ 2019 by שחר גבירץ

כולנו (או לפחות, כל מי שיצר טבלה ב- DB) מכיר את הרגע שבו הוא מגיע לקבוע data type של עמודה טקסטואלית, בוחר varchar/nvarchar וצריך לקבוע את הגודל המקסימלי. האם לשים 10? 20? 100? הרי אף אחד לא יודע מה יילד יום. וכשלא יודעים מה יקרה – יש כאלה שפשוט בוחרים ללכת על המקסימום. וככה נולדות להן הרבה עמודות nvarchar(max) / varchar(max), כי הרי למה להגביל היום ולחטוף את השגיאה של string or binary data would be truncated מתישהו בעתיד?
דרך נוספת שבה עמודות כאלה נולדות – היא משימוש ב- Entity Framework Code First ושאר ה-ORM-ים. אם מגדירים string property במודל, ומייצרים ממנו באמצעות EF Code First טבלה, אז Entity Framework שואף לשמר את ההתנהגות של System.String, שאינו מוגבל באורכו, ולכן מגדיר את העמודה בתור nvarchar(max) (ניתן כמובן להשתמש ב- StringLengthAttribute כדי להגדיר אורך שונה, אבל זאת פעולה נוספת, שהרבה מפתחים לא עושים).… להמשך קריאה

Continue Reading

SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים

1 במרץ 2019 by שחר גבירץ

מזה מספר שנים, SQL Server מציע באופן מובנה יכולת של Data Compression. מדור ביכולת לדחיסת המידע בטבלאות ואינדקסים, בין אם “רגילים” (row store) או clustered / nonclusted columnstore indexes.
כאשר מדובר על דחיסה של אינדקסים “רגילים” – אנחנו יכולים לבחור בין דחיסה ברמת השורה – שהיא בעיקרה רלוונטית ל- fixed length data types, שהשמירה שלהם נעשית יותר יעילה במקום,  או ב- page level compression שמבצע בפועל row level compression של כלל השורות באותו ה- page, ומעל זה מוסיף רובד של prefix compression (שמקטין את הנפח במידה שיש ערכים מייצגים בעמודות, או לחלופין תחיליות משותפות) ו- dictionary compression (שמחליף ערכים חוזרים בהפנייה למילון שנשמר כחלק מה- metadata, ומקטין את הנפח במידה שיש חזרתיות גבוהה של ערכים ברמת ה- page).
בין אם משתמשים ב- row level compression או ב- page level compression, מופעלת גם היכולת של unicode compression שמקטינה את הנפח במידה שהעמודה מוגדרת בתור nvarchar או nchar, אולם בפועל עיקר הטקסט שבו נעשה שימוש לא באמת מתפרס על ה-2 בתים שמוקצים ב- UCS-2 לכל תו (כלומר, לאחר הדחיסה מתקבלת התנהגות שמזכירה יותר את UTF-16 במובן שלא נדרשים בפועל תמיד 2 בתים לכל תו, אלא ניתן להסתפק בתו בודד).… להמשך קריאה

Continue Reading

יצירת קשר

ליצירת קשר – מוזמנים לשלוח מייל ל- [email protected]

תגיות

DB DEV Elasticsearch ELK EntityFramework Kibana Logging Logstash RabbitMQ SQL SQL Server

פוסטים אחרונים

  • נושאים בביזור – Distributed Transaction באמצעות 2PC ו- 3PC
  • Entity Framework והטעויות שיגרמו לכם לבעיות ביצועים
  • מה הבעייה עם nvarchar(max) או varchar(max)
  • SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים
  • DbFunctions.TruncateTime ובעיית הביצועים המוחבאת

תגובות אחרונות

  • ענת דרום על SQL Server למפתחים: Transaction Isolation Level
  • שחר גבירץ על SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים
  • יעקב על SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים
  • שחר גבירץ על SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים
  • יעקב על SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים

ארכיונים

  • אפריל 2019
  • מרץ 2019
  • מרץ 2018
  • דצמבר 2017
  • נובמבר 2017
  • יולי 2017
  • יוני 2017
  • מאי 2017
  • מרץ 2017
  • דצמבר 2016
  • נובמבר 2016
  • אוקטובר 2016
  • נובמבר 2015
© 2023 שחר.נט | WordPress Theme by Superbthemes