כיצד לארגן מחדש ולבנות אינדקסים ב-MS SQL?

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

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

Plain Text

 

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

בדיקת אחוז הפציעה של אינדקסים

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

SQL

 

ארגון מחדש של אינדקסים בשרת SQL

אם רמת הפציעה של האינדקס היא בין 10 ל-30, מומלץ לארגן מחדש את האינדקס. ניתן להשתמש בקוד הבא ב-T-SQL כדי לארגן מחדש את האינדקס:

SQL

 

באפשרותך גם להשתמש ב־SQL Server Management Studio (SSMS) כדי לארגן מחדש את האינדקסים. עקוב אחר השלבים הבאים:

  • ב־SSMS, התחבר למופע של ה־SQL Server שלך.
  • ב־Object Explorer, הרחב את מסד הנתונים.
  • הרחב את תיקיית הטבלאות ואז את תיקיית האינדקסים.
  • לחץ ימני על האינדקס שברצונך לארגן מחדש, ואז לחץ על Reorganize.

בניית אינדקסים ב־MS SQL

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

SQL

 

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

בנוסף, באפשרותך להשתמש בפקודת ALTER INDEX:

SQL

 

באפשרותך גם לבנות מחדש את האינדקסים באמצעות ממשק המשתמש הגרפי ב־SSMS. הנה השלבים:

  • ב־SSMS, ב־Object Explorer, הרחב את מסד הנתונים שמכיל את הטבלה שעליה ברצונך לבנות מחדש אינדקס.
  • הרחב את תיקיית ה־Tables ואז את הטבלה שעליה ברצונך לבנות מחדש אינדקס.
  • הרחב את תיקיית ה־Indexes , לחץ ימני על האינדקס שברצונך לבנות מחדש, ובחר Rebuild.

תקן את מסד הנתונים של SQL Server

אם אריכת סידור או שיקום האינדקסים אינם עובדים, אז ניתן לנסות את הפקודה DBCC CHECKDB עם האפשרות REPAIR_ALLOW_DATA_LOSS כדי לתקן את בסיס הנתונים. כך נראה שימוש בפקודה זו:

ראשית, שנה את מצב בסיס הנתונים ל- SINGLE_USER באמצעות הפקודה שלמטה:

SQL

 

לאחר מכן, הריץ את הפקודה DBCC CHECKDB כפי שמוצג לתיקון הבסיס שלך:

SQL

 

לאחר התיקון, הגדר את מצב בסיס הנתונים ל- MULTI_USER על ידי ביצוע הפקודה הבאה:

SQL

 

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

מסקנה

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

Source:
https://dzone.com/articles/reorganize-and-rebuild-indexes-in-ms-sql