none
בניינת אינדקס מחדש ו UPDATE STATISTICS RRS feed

  • שאלה

  • ביצעתי מספר שינוייים ב DB, כשהעיקרי בהם היה היה הסרה והוספה של NON CLUSTERED INDEX.

    לאחר מכן הרצתי

    UPDATE STATISTICS WITH FULLSCAN

    (על הטבלה שהינה בגודל 800 מיליון שורות),

    שרץ מעל ל 10 שעות והסוף לא נראה באופק.

    1)האם יש דרך להעריך מתי הפעולה תסתיים?

    2)האם FULL SCAN הוא מחוייב או שיכולתי לוותר על זה לאור בניית אינדקס חדש?

    תודה.

    יום חמישי 14 פברואר 2013 07:47

תשובות

  • Percentage of work completed for the following commands:
        ALTER INDEX REORGANIZE
        AUTO_SHRINK option with ALTER DATABASE
        BACKUP DATABASE
        DBCC CHECKDB
        DBCC CHECKFILEGROUP
        DBCC CHECKTABLE
        DBCC INDEXDEFRAG
        DBCC SHRINKDATABASE
        DBCC SHRINKFILE
        RECOVERY
        RESTORE DATABASE,
        ROLLBACK
        TDE ENCRYPTION
    Is not nullable.

    אולי זה עוזר: מתוך ה BOL של 2012 בקישור הבא

    http://msdn.microsoft.com/en-us/library/ms177648.aspx

    * הנה קישור בדיוק לנושא אינדקסים ובדיקה זו:

    http://bardevblog.wordpress.com/2012/10/24/sql-server-create-index-sys-dm_exec_requests-percent-completed/
    זה הסיכום שלו:
    The conclusion here is that for sys.dm_exec_requests, percent_complete is not provided for Create Index.  And I’m not sure if it ever was supported.

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


    signature

    • נערך על-ידי pituachMVP, Editor יום שישי 15 פברואר 2013 18:01
    • סומן כתשובה על-ידי pelegk1 יום שני 25 פברואר 2013 15:56
    יום שישי 15 פברואר 2013 17:53
    מנחה דיון
  • הי פלג,

    קודם כל, אני רוצה להוסיף לתשובה של מתן. גם אם אתה מזהה סטטיסטיקה ספציפית שאינה מעודכנת, אתה יכול לעדכן רק אותה ולא את כל הסטטיסטיקות בטבלה. ברוב המקרים עדכון סטטיסטיקה עם ה-Sample Rate הרגיל של SQL Server מספיק, ואין צורך לבצע Full Scan, אולם יש מקרים שבהם זה לא מספיק. בכל מקרה, לאחר בניה מחדש של אינדקס, אין שום סיבה בעולם לעדכן את הסטטיסטיקה שמקושרת לאינדקס הזה, מכיוון שהיא כבר מעודכנת עם Full Scan.

    לגבי השאלה הראשונה שלך, אתה יכול לעקוב אחרי התקדמות הפעולה באמצעות העמודה "percent_complete" שנמצאת ב-"sys.dm_exec_requests". אולם לא ברור באיזה מקרים אפשר לסמוך על העמודה הזאת ובאיזה לא. זה משתנה מפקודה לפקודה ומגירסא לגירסא. הנה, למשל, מה ש-Aaron Bertrand כתב על זה לפני כשנתיים. בתיעוד של SQL Server 2012, למשל, הפקודה UPDATE STATISTICS לא מופיעה ברשימת הפקודות שנתמכות ע"י "percent_complete". אבל שווה לנסות...

    בהצלחה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    • סומן כתשובה על-ידי Eran Sharvit יום שני 25 פברואר 2013 15:54
    יום שישי 15 פברואר 2013 05:43
    מנחה דיון
  • היי פלג,

    קשה לי להגיד לגבי השאלה הראשונה.

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

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


    My Blog

    • סומן כתשובה על-ידי Eran Sharvit יום שני 25 פברואר 2013 15:54
    יום חמישי 14 פברואר 2013 08:39

כל התגובות

  • היי פלג,

    קשה לי להגיד לגבי השאלה הראשונה.

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

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


    My Blog

    • סומן כתשובה על-ידי Eran Sharvit יום שני 25 פברואר 2013 15:54
    יום חמישי 14 פברואר 2013 08:39
  • הי פלג,

    קודם כל, אני רוצה להוסיף לתשובה של מתן. גם אם אתה מזהה סטטיסטיקה ספציפית שאינה מעודכנת, אתה יכול לעדכן רק אותה ולא את כל הסטטיסטיקות בטבלה. ברוב המקרים עדכון סטטיסטיקה עם ה-Sample Rate הרגיל של SQL Server מספיק, ואין צורך לבצע Full Scan, אולם יש מקרים שבהם זה לא מספיק. בכל מקרה, לאחר בניה מחדש של אינדקס, אין שום סיבה בעולם לעדכן את הסטטיסטיקה שמקושרת לאינדקס הזה, מכיוון שהיא כבר מעודכנת עם Full Scan.

    לגבי השאלה הראשונה שלך, אתה יכול לעקוב אחרי התקדמות הפעולה באמצעות העמודה "percent_complete" שנמצאת ב-"sys.dm_exec_requests". אולם לא ברור באיזה מקרים אפשר לסמוך על העמודה הזאת ובאיזה לא. זה משתנה מפקודה לפקודה ומגירסא לגירסא. הנה, למשל, מה ש-Aaron Bertrand כתב על זה לפני כשנתיים. בתיעוד של SQL Server 2012, למשל, הפקודה UPDATE STATISTICS לא מופיעה ברשימת הפקודות שנתמכות ע"י "percent_complete". אבל שווה לנסות...

    בהצלחה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    • סומן כתשובה על-ידי Eran Sharvit יום שני 25 פברואר 2013 15:54
    יום שישי 15 פברואר 2013 05:43
    מנחה דיון
  • Percentage of work completed for the following commands:
        ALTER INDEX REORGANIZE
        AUTO_SHRINK option with ALTER DATABASE
        BACKUP DATABASE
        DBCC CHECKDB
        DBCC CHECKFILEGROUP
        DBCC CHECKTABLE
        DBCC INDEXDEFRAG
        DBCC SHRINKDATABASE
        DBCC SHRINKFILE
        RECOVERY
        RESTORE DATABASE,
        ROLLBACK
        TDE ENCRYPTION
    Is not nullable.

    אולי זה עוזר: מתוך ה BOL של 2012 בקישור הבא

    http://msdn.microsoft.com/en-us/library/ms177648.aspx

    * הנה קישור בדיוק לנושא אינדקסים ובדיקה זו:

    http://bardevblog.wordpress.com/2012/10/24/sql-server-create-index-sys-dm_exec_requests-percent-completed/
    זה הסיכום שלו:
    The conclusion here is that for sys.dm_exec_requests, percent_complete is not provided for Create Index.  And I’m not sure if it ever was supported.

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


    signature

    • נערך על-ידי pituachMVP, Editor יום שישי 15 פברואר 2013 18:01
    • סומן כתשובה על-ידי pelegk1 יום שני 25 פברואר 2013 15:56
    יום שישי 15 פברואר 2013 17:53
    מנחה דיון
  • הי pelegk1,

    האם קיבלת מענה לשאלתך?

    אם כן, אנא סמן את התגובות הרלוונטיות כתשובות,

    אם לא, נשמח לדעת איך עוד אפשר לעזור...

    תודה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    יום שישי 22 פברואר 2013 07:45
    מנחה דיון
  • תודה לכולם על התשובות.

    חג שמח

    יום ראשון 24 פברואר 2013 07:32