משיב מוביל
reorgenize index vs rebuild index

שאלה
-
היי,
לגבי ההמלצה של מייקרוסופט במקרה של פרגמנטציה גבוהה מ40 % לעשות
REBUILD לאינדקס,
האם נכונה המסקנה הבאה:
reorgenize לאינדקס שהפרגמנטציה שלו מעל 40%
1) לא יעיל? 2) לוקח הרבה זמן? 3) בגלל שהוא מסדר רק את leaf level הוא לא מספיק יעיל.אפקטיבי ?
אצלי אני עושה REORGENIZE לטלבאות גדולות מעל 50giga :
1) לוקח זמן אבל לא משאבים ( לא נועל לי טבלאות וכדומה)
2) ולאחר בדיקה של פרגמנטציה sys.dm_db_index_physical_stats האינדקסים אכן ללא פרגמנטציה.
אז למה לי בכלל לעשות REBUILD ( זה גם עולה כסף :)) בטוח שאני מפספס פה משהו :)
תודה רבה שרון
תשובות
-
הי שרון,
כשהפרגמנטציה גבוהה, פעולת Reorganize לוקחת הרבה זמן וגם הרבה משאבים. זה נכון, שיש לך הרבה פחות נעילות, אבל הפעולה עדיין לוקחת הרבה משאבים מהמחשב. מעל רמת פרגמנטציה מסוימת, יותר יעיל לבצע Rebuild מאשר Reorganize במונחים של זמן וניצול משאבים.
חוץ מזה, פעולת Rebuild מחזירה את הדפים באינדקס ל-Fill Factor המקורי, בעוד פעולת Reorganize לא עושה את זה.
חוץ מזה, במקרים מסוימים כדאי לבנות את האינדקס מחדש בכל פעם ב-Filegroup אחר, על מנת לקבל הקצאה פיזית רציפה בדיסק. את זה אי אפשר לעשות באמצעות פעולת Reorganize.
מקווה שעזרתי...
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il
- סומן כתשובה על-ידי sharonof יום ראשון 07 יולי 2013 08:38
-
לחיזוק/תוספת/הבהרה
לגבי שינוי הקובץ:
ALTER INDEX cannot be used to repartition an index or move it to a different filegroup. This statement cannot be used to modify the index definition, such as adding or deleting columns or changing the column order. Use CREATE INDEX with the DROP_EXISTING clause to perform these operations.
Rebuild בונה את האינדקס מחדש. הוא בפועל מבצע DROP ויצירה מחדש ולכן הוא גם מסדר את ה PAGE-ים מחדש. הוא מאפשר גם לעבור לקובץ חדש. זה אומר שאתה תקבל אינדקס חדש, עם דפי איחוי רציפים בתוכם ואם אפשר מבחינת הדיסק גם בינהם.
Reorganize רק מארגן את הנתונים מחדש. זה defrag לאינדקסים. למשל לא יעביר נתונים בין דפים אלא רק יסדר את הנתונים בדף. אם הדפים לא רציפים, הם נשארים כמו בעבר. רק את התוכן שלהם משנים.
http://msdn.microsoft.com/en-us/library/ms189858(v=sql.105).aspx
מייקרוסופט ממליצים שאם יש עד 30% אז לבצע REORGANIZE
אבל אם יש מעל 30% אז כבר לבצע בנייה מחדש Rebuild* יש השלכות שמחכות מעבר הפינה וצריך לקחת בחשבון כמו נעילות שונות...
Index Rebuild : This process drops the existing Index and Recreates the index. USE AdventureWorks; GO ALTER INDEX ALL ON Production.Product REBUILD GO Index Reorganize : This process physically reorganizes the leaf nodes of the index. USE AdventureWorks; GO ALTER INDEX ALL ON Production.Product REORGANIZE GO
- נערך על-ידי pituachMVP, Moderator יום רביעי 03 יולי 2013 17:22
- סומן כתשובה על-ידי sharonof יום ראשון 07 יולי 2013 08:38
-
כל התגובות
-
-
הי שרון,
כשהפרגמנטציה גבוהה, פעולת Reorganize לוקחת הרבה זמן וגם הרבה משאבים. זה נכון, שיש לך הרבה פחות נעילות, אבל הפעולה עדיין לוקחת הרבה משאבים מהמחשב. מעל רמת פרגמנטציה מסוימת, יותר יעיל לבצע Rebuild מאשר Reorganize במונחים של זמן וניצול משאבים.
חוץ מזה, פעולת Rebuild מחזירה את הדפים באינדקס ל-Fill Factor המקורי, בעוד פעולת Reorganize לא עושה את זה.
חוץ מזה, במקרים מסוימים כדאי לבנות את האינדקס מחדש בכל פעם ב-Filegroup אחר, על מנת לקבל הקצאה פיזית רציפה בדיסק. את זה אי אפשר לעשות באמצעות פעולת Reorganize.
מקווה שעזרתי...
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il
- סומן כתשובה על-ידי sharonof יום ראשון 07 יולי 2013 08:38
-
לחיזוק/תוספת/הבהרה
לגבי שינוי הקובץ:
ALTER INDEX cannot be used to repartition an index or move it to a different filegroup. This statement cannot be used to modify the index definition, such as adding or deleting columns or changing the column order. Use CREATE INDEX with the DROP_EXISTING clause to perform these operations.
Rebuild בונה את האינדקס מחדש. הוא בפועל מבצע DROP ויצירה מחדש ולכן הוא גם מסדר את ה PAGE-ים מחדש. הוא מאפשר גם לעבור לקובץ חדש. זה אומר שאתה תקבל אינדקס חדש, עם דפי איחוי רציפים בתוכם ואם אפשר מבחינת הדיסק גם בינהם.
Reorganize רק מארגן את הנתונים מחדש. זה defrag לאינדקסים. למשל לא יעביר נתונים בין דפים אלא רק יסדר את הנתונים בדף. אם הדפים לא רציפים, הם נשארים כמו בעבר. רק את התוכן שלהם משנים.
http://msdn.microsoft.com/en-us/library/ms189858(v=sql.105).aspx
מייקרוסופט ממליצים שאם יש עד 30% אז לבצע REORGANIZE
אבל אם יש מעל 30% אז כבר לבצע בנייה מחדש Rebuild* יש השלכות שמחכות מעבר הפינה וצריך לקחת בחשבון כמו נעילות שונות...
Index Rebuild : This process drops the existing Index and Recreates the index. USE AdventureWorks; GO ALTER INDEX ALL ON Production.Product REBUILD GO Index Reorganize : This process physically reorganizes the leaf nodes of the index. USE AdventureWorks; GO ALTER INDEX ALL ON Production.Product REORGANIZE GO
- נערך על-ידי pituachMVP, Moderator יום רביעי 03 יולי 2013 17:22
- סומן כתשובה על-ידי sharonof יום ראשון 07 יולי 2013 08:38
-
-