QDS_LOADDB-מה זה אומר ומה אפשר לעשות

אחד הפיצ’רים שהושקו ב- SQL Server 2016 היה ה- Query Store. אם עוד לא יצא לכם להכיר אותו, ממליץ לקרוא עליו קצת פה. בגדול, מדובר בכלי שמאפשר להוציא insights טובים יותר בסוגיות שמעסיקות DBA-ים. בין היתר, זיהוי של שאילתות מעמיסות, זיהוי רגרסיות בריצת שאילתות וטיפול נוח בזה ועוד.
החל מ- SQL Server 2017, המנגנון של ה- Query Store גם משמש את פיצ’ר ה- Automatic Tuning של שאילתות, שמאפשר להגדיר את ה- flag של “FORCE_LAST_GOOD_PLAN” שעוזר (פוטנציאלית) למנוע רגרסיות שנובעות מבחירת execution plan פחות טוב מ-execution plan שנעשה בו שימוש בעבר.

אבל, לפעמים אנחנו מגלים את העלויות הנסתרות של דברים טובים. הרבה פעמים זה גם קורה בזמן לא מאד נוח….
תופעה שנתקלתי בה – בזמן ביצוע Failover ל- AlwaysOn Availability Group שכולל מס’ דטאבייסים, לאחר שמרבית ה- DB-ים סיימו לעבור recovery בשרת שאליו בוצע ה- failover, לא ניתן היה לעבוד כלל עם אחד מה- DB-ים שהיו ב-AG.… להמשך קריאה

SQL Server: הצגת טכניקות שונות למעקב אחרי שינויים בטבלאות

מפתחים ו-DBA-ים רבים נדרשים בשלב זה או אחר להתמודד עם הדרישה הבאה: יש אפליקציה כלשהי שצריכה לקבל איזשהו feed על נתונים חדשים או נתונים שהתעדכנו עבור איזשהו צורך (אפליקציה שממתינה למידע חדש, תהליך ETL וכו’ ורוצות לקבל “דלתאות” של מה שקרה), כאשר המקור לנתונים הללו זאת איזושהי אפליקציה אחרת – שהיא בעצמה מעדכנת אותם ב- SQL Server.
בד”כ בשלב הזה הרבה פעמים הולכים לפי ההיגיון הבא – אם המידע בסופו של דבר נמצא ומאוכסן ב- SQL Server, למה שלא נשתמש בו גם בתור דרך “להפיץ” את המידע לאפליקציות ולתהליכים אחרים? המידע נכנס ל-DB, ואפליקציות אחרות שמעוניינות במידע פשוט ישלפו אותו ויעבדו עליו.

ההיגיון מאחורי התפיסה הזאת ברור – “האמת” נמצאת ב- DB ומתעדכנת תמיד מול ה- DB. אם נוודא שאפליקציות אחרות יוזנו בעדכונים, נוכל לוודא שהם תמיד יהיו מודעים לאותה “האמת” שב-DB שלנו.… להמשך קריאה

קורס SQL בסיסי–חינם ביוטיוב

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

בקורס אני מתחיל החל מהבסיס, ומתקדם בהדרגה. כל ההרצאות כוללות הדגמות רבות, כאשר בנוסף להדגמות לכל הרצאה יש גם תרגיל (שמורכב ממספר שאלות המתבססות על החומר של ההרצאה, ומאפשרות לתרגל כתיבת שאילתות) ופתב”ס שמכיל את הפיתרון שלי, עם הסברים.

מרבית הקורס מתנהל מול דטאבייס ספיציפי להדגמות, כך שעם הזמן (בעיקר אם פותרים את התרגילים) מבינים את הסכימה שלו, לומדים איך למצוא כל דבר ואיך לכתוב את השליפות, ועוברים תהליך דומה לתהליך הלמידה שעוברים כשמתחילים לעבוד באופן שוטף מול דטאבייס מסויים ביום-יום.… להמשך קריאה

SQL Server: גיבויים, שחזורים–ומה עושים כשה-DB נעשה גדול

אחד הנושאים הכי חשובים שיש זה גיבוי ושחזור הנתונים. אני משוכנע שלא צריך להסביר לאף אחד , בין אם הוא DBA ביום-יום ובין אם לא – את החשיבות שבתוכנית גיבוי ושחזור סדורה, שבמסגרתה ברור איך משתחזרים, מה מאבדים (אם בכלל) בזמן שחזור ובין היתר – מה עושים אם זה לא עובד.  יש לא מעט מסמכי Best Practice של איך להגדיר תוכנית גיבוי ושחזור טובה, איך להאיץ את מהירות הגיבוי (ומהירות השחזור) – ובאופן כללי, ממש לא חסר חומר בנושא הזה. 
בפוסט הזה אני רוצה להתמקד על תת-בעייה – איך מגבים DB גדול, כאשר  אני בעיקר אתמקד בשיטות שהמטרה שלהם היא לאפשר שחזור מהיר.

Back to Basics – גיבויים ושחזורים

לפני שנמשיך, בואו נדבר קצת על גיבויים ושחזורים וניישר קו סביב כמה דברים.… להמשך קריאה

שימוש ב- AlwaysOn להרמת Readable Secondary–איך זה יכול להשתבש ומה אפשר לעשות

לאורך השנים, עבר SQL Server לא מעט שלבים באבולוציה של פתרונות שהמטרה שלהם לתת HA/DR מסוגים שונים. בשנים האחרונות, אחד הפתרונות המרכזיים שבו עושים שימוש הוא AlwaysOn. אחד הדברים החזקים ב- AlwaysOn הוא הגמישות שלו וההתאמה שלו למגוון (יחסית רחב) של תרחישים.
אחד הדברים המעניינים שזה מאפשר, הוא הרמת read-only replica. הרעיון הוא replica מעודכנת, שמקבלת את כל המידע ומשמשת בד”כ לשליפות שונות – כאשר אפשר למשל להריץ עליה תהליכי reporting, לעשות בה שימוש לשאילתות ad-hoc וכו’ – מבלי להפריע לאפליקציה המרכזית.

או לפחות, זה הרושם שעלול להתקבל אם רק קוראים על הנושא ברפרוף. המטרה שלי בפוסט הזה היא לא להסביר מה זה AlwaysOn ואיך להגדיר אותו – אלא להתייחס למס’ נקודות שצריך לקחת בחשבון של השפעות שיכולות להיגרם כתוצאה מהגדרת ה- AlwaysOn על הזמינות של ה- Primary.… להמשך קריאה