الفهارس هي كائنات من ملفات قاعدة بيانات MS SQL. تعمل هذه الكائنات المخططة مثل جدول محتويات قاعدة البيانات. تُستخدم هذه الفهارس لتحسين عمليات استرجاع البيانات على جدول قاعدة بيانات MS SQL.
ومع مرور الوقت، يمكن أن يتعرض الجدول للتجزئة بسبب عمليات INSERT
وUPDATE
المستمرة. أيضًا، مثل الكائنات الأخرى، فإن الفهارس معرضة أيضًا للفساد. إذا تعرضت الفهارس للفساد، يمكنك تلقي أخطاء مثل:
Table error: table 'Items' (ID 1954106002). Data row does not have a matching index row in the index 'IX_Advertise_BrandCopy_Price_Stock' (ID 69). Possible missing or invalid keys for the index row matching:
Msg 8955, Level 16, State 1, Line 1
Data row (1:11226494:9) identified by (Id = 11078215) with index values 'AdvertiseFlag = 1 and BrandCopyParentId = 0 and NSFPPrice = 137.50 and NSFPQtyInStock = 0 and Id = 11078215'.
Msg 8951, Level 16, State 1, Line 1
لحل الأخطاء المرتبطة بالفساد في الفهارس أو عندما يرتفع مستوى التجزئة في الفهارس، يمكنك إعادة بناء الفهارس أو إعادة تنظيمها. في هذه المقالة، سنناقش كيفية إعادة تنظيم وإعادة بناء الفهارس في MS SQL Server. سنذكر أيضًا أداة متقدمة لإصلاح قاعدة بيانات MS SQL يمكنها استعادة الفهارس وكائنات أخرى من ملفات قاعدة بيانات SQL الفاسدة بسرعة وبدقة كاملة.
تحقق من نسبة التجزئة للفهارس
قبل إعادة تنظيم الفهارس، تحتاج إلى معرفة نسبة التجزئة. يمكنك استخدام الأمر أدناه للتحقق من نسبة تجزئة الفهرس:
SELECT
OBJECT_NAME(object_id) tableName12,
index_id,
index_type_desc,
avg_fragmentation_in_percent,
page_count
FROM
sys.dm_db_index_physical_stats (
DB_ID('Adventureworks2019'),
OBJECT_ID('[Person].[Person]'),
NULL, NULL, 'DETAILED'
);
إعادة تنظيم الفهارس في SQL Server
إذا كان مستوى التجزئة للفهرس بين 10 و30، يُوصى بإعادة تنظيم الفهرس. يمكنك استخدام الكود التالي في T-SQL لإعادة تنظيم الفهرس:
ALTER INDEX [PK_Person_BusinessEntityID] ON [Person].[Person]
REORGANIZE;
بالإمكان استخدام SQL Server Management Studio (SSMS) لإعادة تنظيم الفهارس. اتبع الخطوات التالية:
- في SSMS، قم بالاتصال بمثيل الـ SQL Server الخاص بك.
- في مستكشف الكائنات، قم بتوسيع قاعدة البيانات.
- قم بتوسيع مجلد الجداول ثم مجلد الفهارس.
- انقر بزر الماوس الأيمن على الفهرس الذي تحتاج إلى إعادة تنظيمه، ثم انقر على إعادة تنظيم.
إعادة بناء الفهارس في MS SQL
إذا كان التشتت أعلى، فيمكنك إعادة بناء الفهارس. بإمكانك استخدام أمر DBCC DBREINDEX
لإعادة بناء فهرس. إليك كيفية تنفيذ هذا الأمر:
DBCC DBREINDEX
(
table_name
[ , index_name [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
هذا الأمر لا يدعم الفهارس المكانية وفهارس عمود التخزين المحسن للذاكرة.
بالإمكان أيضًا استخدام أمر ALTER INDEX
:
ALTER INDEX [PK_Person_BusinessEntityID] ON [Person].[Person]
REBUILD;
بالإمكان أيضًا إعادة بناء الفهارس باستخدام واجهة المستخدم الرسومية في SSMS. فيما يلي الخطوات:
- في SSMS، في مستكشف الكائنات، قم بتوسيع قاعدة البيانات التي تحتوي على الجدول الذي تحتاج إلى إعادة بناء فهرس عليه.
- قم بتوسيع مجلد الجداول ثم الجدول الذي تحتاج إلى إعادة بناء فهرس عليه.
- قم بتوسيع مجلد الفهارس، انقر بزر الماوس الأيمن على الفهرس الذي تحتاج إلى إعادة بنائه، واختر إعادة بناء.
إصلاح قاعدة بيانات SQL Server
إذا لم ينجح إعادة تنظيم أو إعادة بناء الفهارس، يمكنك تجربة أمر DBCC CHECKDB
مع الخيار REPAIR_ALLOW_DATA_LOSS
لإصلاح قاعدة البيانات. إليك كيفية استخدام هذا الأمر:
أولاً، قم بتغيير وضع قاعدة البيانات إلى SINGLE_USER
باستخدام الأمر التالي:
ALTER DATABASE BusinessEntity SET SINGLE_USER
ثم، قم بتشغيل أمر DBCC CHECKDB
كما هو موضح أدناه لإصلاح قاعدة البيانات:
DBCC CHECKDB (N ’BusinessEntity’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS;
GO
بعد الإصلاح، قم بضبط وضع قاعدة البيانات إلى MULTI_USER
عن طريق تنفيذ الأمر التالي:
ALTER DATABASE BusinessEntity SET MULTI_USER
يمكن أن يساعد أمر DBCC CHECKDB
المذكور أعلاه في حل جميع الأخطاء المتعلقة بالفساد في الفهارس. يمكنه إصلاح كل من الفهارس المتجمعة وغير المتجمعة في قواعد بيانات SQL. ومع ذلك، لا يضمن استعادة البيانات بالكامل وقد يؤدي إلى فقدان بيانات. لتجنب فقدان البيانات، يمكنك استخدام أدوات إصلاح MS SQL المهنية. إنها مصممة بخوارزميات متقدمة لاستعادة جميع الكائنات، بما في ذلك الفهارس المتجمعة وغير المتجمعة، الإجراءات المخزنة، المشغلات، إلخ، من قاعدة البيانات التالفة.
الاستنتاج
يمكنك تقليل تشتت الفهارس عن طريق إعادة تنظيم أو إعادة بناء الفهرس. في هذه المقالة، شرحنا كيفية التحقق من نسبة التشتت في الفهارس وكيفية إعادة بناء الفهارس.
Source:
https://dzone.com/articles/reorganize-and-rebuild-indexes-in-ms-sql