none
Performance in SQL server 2014 standard edition RRS feed

  • שאלה

  • יש לי שאלה לגבי sql 2014.

    יש לי מחשב stand alone בעבודה שאינו מחובר לשום רשת. מותקן בו כרגע sql server 2012 express, ואני מעוניין להתקין בו גרסת sql server 2014 standard edition.

    ה- DBA שלי אמר לי שהיו מקרים שבהם התלוננו מחלקות בעבודה בשידרוג מ2012 ל-2014 שנפגעו אצלם הביצועים, כאשר ההתקנה היתה על server במחשב.

    אצלי ההתקנה אינה על server אלא על windows 7 הפניה ל-sql server היא ע"י יוזר יחיד.

    האם אתם מכיר בעיות performance בגרסת 2014 standard?

    • נערך על-ידי pituachMVP, Editor יום שישי 17 יולי 2020 21:24 ניקוי עיצוב בלבד
    יום שישי 17 יולי 2020 21:19

תשובות

  • אהלן דן, וברוך הבא לפורומים של פלטפורמות הנתונים של מיקרוסופט

    זה שאלה מאוד טובה ודיי נפוצה. אני אנסה לתת מענה קצרה בנקודות

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

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

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

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

    4. בכל מעבר בין סביבה אחת לסביבה אחרת אנחנו עלולים להרגיש ירידה בביצועים.

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

    >> ה- DBA שלי אמר לי שהיו מקרים שבהם התלוננו מחלקות בעבודה בשידרוג מ2012 ל-2014 שנפגעו אצלם הביצועים,

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

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

    בנוסף כפי שהזכרתי מעל, אנחנו יכולים לשלוט על תוכנית ההרצה באמצעות רמזים.

    >> כאשר ההתקנה היתה על server במחשב.

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

    >> האם אתם מכיר בעיות performance בגרסת 2014 standard?

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

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

    אני מקווה שעניתי על השאלה 😀


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

    • נערך על-ידי pituachMVP, Editor שבת 18 יולי 2020 00:13
    • סומן כתשובה על-ידי Dan kaga שבת 18 יולי 2020 15:18
    יום שישי 17 יולי 2020 21:48
    מנחה דיון
  • היי דן, כמעט שכחתי נקודה מאוד חשובה!

    בהודעה מעל התמקדתי בתשובות לשאלות והנושא של האם לעבור לגרסה חדשה יותר או לא.

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

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

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

    אני לא יכול לחשוב על שום ייתרון כמעט וישנם הרבה מאוד חסרונות.

    אם אתם צריכים לבצעי שדרוג גרסה של שרתי SQL מגרסת 2012 לגרסת 2014 או לכל גרסה אחרת אני כניראה הייתי ממליץ בחום לא לשדרג מכונה קיימת אלא להקים מכונה חדשה עם התקנה נקייה חדשה!

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

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

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

    4. שימוש במכונה חדשה מאפשר מעבר לגרסה החדשה ללא off time ז"א ללא זמן בו המערכת לא פעילה

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


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

    • סומן כתשובה על-ידי Dan kaga שבת 18 יולי 2020 15:18
    שבת 18 יולי 2020 08:31
    מנחה דיון

כל התגובות

  • אהלן דן, וברוך הבא לפורומים של פלטפורמות הנתונים של מיקרוסופט

    זה שאלה מאוד טובה ודיי נפוצה. אני אנסה לתת מענה קצרה בנקודות

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

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

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

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

    4. בכל מעבר בין סביבה אחת לסביבה אחרת אנחנו עלולים להרגיש ירידה בביצועים.

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

    >> ה- DBA שלי אמר לי שהיו מקרים שבהם התלוננו מחלקות בעבודה בשידרוג מ2012 ל-2014 שנפגעו אצלם הביצועים,

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

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

    בנוסף כפי שהזכרתי מעל, אנחנו יכולים לשלוט על תוכנית ההרצה באמצעות רמזים.

    >> כאשר ההתקנה היתה על server במחשב.

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

    >> האם אתם מכיר בעיות performance בגרסת 2014 standard?

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

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

    אני מקווה שעניתי על השאלה 😀


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

    • נערך על-ידי pituachMVP, Editor שבת 18 יולי 2020 00:13
    • סומן כתשובה על-ידי Dan kaga שבת 18 יולי 2020 15:18
    יום שישי 17 יולי 2020 21:48
    מנחה דיון
  • תודה רבה רונן על התשובה המפורטת!
    עזרת לי להבין את הנושא.
    יום שישי 17 יולי 2020 22:16
  • היי דן, כמעט שכחתי נקודה מאוד חשובה!

    בהודעה מעל התמקדתי בתשובות לשאלות והנושא של האם לעבור לגרסה חדשה יותר או לא.

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

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

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

    אני לא יכול לחשוב על שום ייתרון כמעט וישנם הרבה מאוד חסרונות.

    אם אתם צריכים לבצעי שדרוג גרסה של שרתי SQL מגרסת 2012 לגרסת 2014 או לכל גרסה אחרת אני כניראה הייתי ממליץ בחום לא לשדרג מכונה קיימת אלא להקים מכונה חדשה עם התקנה נקייה חדשה!

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

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

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

    4. שימוש במכונה חדשה מאפשר מעבר לגרסה החדשה ללא off time ז"א ללא זמן בו המערכת לא פעילה

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


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

    • סומן כתשובה על-ידי Dan kaga שבת 18 יולי 2020 15:18
    שבת 18 יולי 2020 08:31
    מנחה דיון
  • אכן בחרתי לבצע התקנה נקיה על סביבה משוכפלת ורק ברגע שהכל יעבוד הסביבה המשוכפלת תהפוך לסביבת Production בגרסת SQL החדשה.
    מסכים איתך בכל מה שכתבת,תודה רבה.
    שבת 18 יולי 2020 10:16
  • בכיף 👍

    שמח אם יכולתי לעזור 😀


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

    שבת 18 יולי 2020 13:44
    מנחה דיון