-
נושאים בביזור – Distributed Transaction באמצעות 2PC ו- 3PC
אחד ה- primitives העיקריים בעבודה עם DB-ים רלציוניים (ולא רק) זאת הטרנזקציה. טרנזקציה, היא אוסף של פעולות שמובטח לנו שכולן הצליחו להתבצע, או לחלופין שאף אחת מהן לא התבצעה. בואו נניח כעת שאנחנו רוצים לעשות טרנזקציה, שמערבת מס’ רכיבים, שכל אחד מהם בנפרד יודע לעשות טרנזקציה, ואנחנו רוצים לעשות טרנזקציה שכוללת פעולות מול כל אחד…
-
Entity Framework והטעויות שיגרמו לכם לבעיות ביצועים
בעשור האחרון, מרבית הפיתוח מול הדטאבייסים עושה שימוש ב- ORM-ים כאלה ואחרים. אחד ה- ORM-ים הפופולריים בעולם הדוטנט, הוא Entity Framework. בפוסט הזה, אסקור טעויות נפוצות שמשליכות על ביצועים של עבודה מול ה- DB בעבודה עם ORM-ים באופן כללי, ובפרט בעבודה עם Entity Framework. כלל הדוגמאות בפוסט מבוססות על ה- DB של Stack Overflow, בגרסה…
-
מה הבעייה עם nvarchar(max) או varchar(max)
כולנו (או לפחות, כל מי שיצר טבלה ב- DB) מכיר את הרגע שבו הוא מגיע לקבוע data type של עמודה טקסטואלית, בוחר varchar/nvarchar וצריך לקבוע את הגודל המקסימלי. האם לשים 10? 20? 100? הרי אף אחד לא יודע מה יילד יום. וכשלא יודעים מה יקרה – יש כאלה שפשוט בוחרים ללכת על המקסימום. וככה נולדות…
-
SQL Server: שימוש בפונקציות COMPRESS ו- DECOMPRESS לטובת דחיסת נתונים
מזה מספר שנים, SQL Server מציע באופן מובנה יכולת של Data Compression. מדור ביכולת לדחיסת המידע בטבלאות ואינדקסים, בין אם “רגילים” (row store) או clustered / nonclusted columnstore indexes. כאשר מדובר על דחיסה של אינדקסים “רגילים” – אנחנו יכולים לבחור בין דחיסה ברמת השורה – שהיא בעיקרה רלוונטית ל- fixed length data types, שהשמירה שלהם…
-
DbFunctions.TruncateTime ובעיית הביצועים המוחבאת
לאחרונה נתקלתי בבעיית ביצועים בעת עבודה עם Entity Framework שנגרמה כתוצאה משימוש במתודה DbFunctions.TruncateTime. לטובת הדוגמא, בואו נסתכל על טבלה בשם Posts במבנה כמו בתמונה מצד שמאל. הטבלה מכילהה מס’ עמודות, ובין היתר עמודת CreationDate מסוג datetime (או datetime2, פחות רלוונטי למקרה שלנו) שכוללת התאריך והזמן של יצירת רשומה.נניח גם שהעמודה הזאת היא ה-…
-
QDS_LOADDB-מה זה אומר ומה אפשר לעשות
אחד הפיצ’רים שהושקו ב- SQL Server 2016 היה ה- Query Store. אם עוד לא יצא לכם להכיר אותו, ממליץ לקרוא עליו קצת פה. בגדול, מדובר בכלי שמאפשר להוציא insights טובים יותר בסוגיות שמעסיקות DBA-ים. בין היתר, זיהוי של שאילתות מעמיסות, זיהוי רגרסיות בריצת שאילתות וטיפול נוח בזה ועוד.החל מ- SQL Server 2017, המנגנון של ה-…
-
SQL Server: הצגת טכניקות שונות למעקב אחרי שינויים בטבלאות
מפתחים ו-DBA-ים רבים נדרשים בשלב זה או אחר להתמודד עם הדרישה הבאה: יש אפליקציה כלשהי שצריכה לקבל איזשהו feed על נתונים חדשים או נתונים שהתעדכנו עבור איזשהו צורך (אפליקציה שממתינה למידע חדש, תהליך ETL וכו’ ורוצות לקבל “דלתאות” של מה שקרה), כאשר המקור לנתונים הללו זאת איזושהי אפליקציה אחרת – שהיא בעצמה מעדכנת אותם ב-…
-
קורס SQL בסיסי–חינם ביוטיוב
בתקופה האחרונה הקלטתי קורס SQL בעברית, שמורכב מ-10 הרצאות מוקלטות שהמטרה שלהן ללמד איך כותבים שאילתות SQL בסיסיות, כאשר הדגש העיקרי זה על שליפת מידע. איך בהינתן דטאבייס, ובהינתן זה שמבינים מה רוצים להשיג – מגיעים למצב שיודעים להביע את זה ב-SQL וכותבים שאילתת SQL שמחזירה את התוצאה הרצוייה. בקורס אני מתחיל החל מהבסיס, ומתקדם…
-
SQL Server: גיבויים, שחזורים–ומה עושים כשה-DB נעשה גדול
אחד הנושאים הכי חשובים שיש זה גיבוי ושחזור הנתונים. אני משוכנע שלא צריך להסביר לאף אחד , בין אם הוא DBA ביום-יום ובין אם לא – את החשיבות שבתוכנית גיבוי ושחזור סדורה, שבמסגרתה ברור איך משתחזרים, מה מאבדים (אם בכלל) בזמן שחזור ובין היתר – מה עושים אם זה לא עובד. יש לא מעט מסמכי…
-
שימוש ב- AlwaysOn להרמת Readable Secondary–איך זה יכול להשתבש ומה אפשר לעשות
לאורך השנים, עבר SQL Server לא מעט שלבים באבולוציה של פתרונות שהמטרה שלהם לתת HA/DR מסוגים שונים. בשנים האחרונות, אחד הפתרונות המרכזיים שבו עושים שימוש הוא AlwaysOn. אחד הדברים החזקים ב- AlwaysOn הוא הגמישות שלו וההתאמה שלו למגוון (יחסית רחב) של תרחישים. אחד הדברים המעניינים שזה מאפשר, הוא הרמת read-only replica. הרעיון הוא replica מעודכנת,…