none
בעיית ביצועים אחרי מעבר מWindows2016+SQL Server 2014 ל Windows2019+SQL Server 2019 RRS feed

  • שאלה

  • שתי מכונות זהות בAWS (128GB זכרון, 16 מעבדים, SSD  מקומי) עברו למכונות זהות מבחינת משאבים עם מערכת הפעלה חדשה והתקנת SQL on premise ידנית – השדרוג בוצע על ידי מעבר למכונות חדשות ולא שדרוג in place.

    מאז השדרוג אנו חווים ירידה בביצועים של כ20% בהכל – מורגש במיוחד בתהליכי אגריגציה כבדים – מנוטר ע"י NewRelic ותהליכי ניטור פנימיים (log tables).

    כרגע הcompatibility  של הDB עדיין על 2014. ניסינו שינוי לתאימות של 2019 + optimizer fix שנראה שעזר מעט אבל לא מראה את הביצועים ב2014.

    אחרי השדרוג בוצע עדכון סטטיסטיקות וindex rebuild.

    האם הנושא מוכר? אשמח להצעות לתחקור ושיפור.

    תודה מראש!

    יום רביעי 16 ספטמבר 2020 09:55

תשובות

  • אהלן

    השדרוג בוצע על ידי מעבר למכונות חדשות ולא שדרוג in place.

    זה נשמע טוב ✔

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

    מאז השדרוג אנו חווים ירידה בביצועים של כ20% בהכל

    המילה "בהכל" מצביעה על כך שהבעיה כניראה לא קשורה בשדרוג הגרסה של השרת SQL, אבל אני רוצה להניח שהבעיה של ב"בהכל"

    את יכולה לפרט למה הכוונה ב"בהכל". האם הכוונה למסד נתונים מסוים, האם הכוונה ברמת השרת כל פעולה, או שאולי הכוונה לכל ההתנהלות של המכונה הוירטואלית?

    > מה השלב הבא?

    1. ניטור ביצועים של שאילתה מתחיל בדרך כלל בבדיקת והשוואה של תוכנית ההרצה (execution plan). את צריכה להשוות את תכוניות ההרצה לפני ואחרי השדרוג.

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

    2. סביבה זהה עדיין לא אומרת שאת משתמשת באותם הגדרות של הסביבה או של החיבור לסביבה. תוודאי את ההגדרות השימוש בחומרה מהצד של השרת.

    למשל ייתכן שהשרת מותקן על חומרה עם 1TB זיכרון, אבל הוא מוגדר בהגדרות של המקסימום זיכרון לא להשתמש יותר מ 1GB. בעוד בגרסה הקודמת הסביבה היתה רק עם 64GB אבל השרת השתמש ב 32GB.

    והמצב יכול להיות הפוך! אולי השרת משתמש ביותר מדי סכרון בסביבה החדשה בגלל הגדרות ברירת המחדל ולא נשאר זכרון למערכת ההפעלה. לכן מערכת ההפעלה יותר קובץ page file והיא עושה בו שימוש במקום בזכרון (ז"א המערכת משתמש בדיסק במקום זכרון ולכן הכל איטי).

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

    3. גם החיבור לשרת יכול להשפיע ואת צריכה להשוות את הפרמטרים של ה Session אשר מתחבר לשרת.

    הקישור הבא כולל רשימת פרמטרים והסבר קצרצר:
    https://www.mssqltips.com/sqlservertip/1415/determining-set-options-for-a-current-session-in-sql-server

    לסיכום:

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום חמישי 17 ספטמבר 2020 12:31
    מנחה דיון