كيفية اكتشاف وقياس تجزئة الفهرس في SQL Server؟

نشرت: 2023-06-15

اليوم ، سنستكشف جانبًا رائعًا من SQL Server ( wiki ) ، وهو نظام يستخدم لإدارة قواعد البيانات. موضوعنا لهذا اليوم هو "تجزئة الفهرس في SQL Server". سوف نتعلم كيفية اكتشافه وقياسه. لا تقلق ، فالأمر ليس معقدًا كما قد يبدو!

دعنا نفكر في قائمة الأغاني المفضلة لديك. يتم ترتيب الأغاني بترتيب معين حتى تتمكن من الاستمتاع بها بالطريقة التي تريدها بالضبط. ولكن ماذا لو ، بمرور الوقت ، تم حذف بعض الأغاني وإضافة أغانٍ جديدة ونقل البعض الآخر؟ يتم تعطيل ترتيب قائمة التشغيل الخاصة بك ، أليس كذلك؟ هذا مشابه لما يحدث في قاعدة البيانات عندما نتحدث عن تجزئة الفهرس.

في قاعدة البيانات ، يتم تنظيم البيانات بطريقة معينة لجعل الوصول إليها سريعًا وسهلاً. ولكن عند إضافة البيانات أو تحديثها أو إزالتها ، يمكن أن يتعطل هذا الطلب ، مما يؤدي إلى ما نسميه "تجزئة الفهرس". يمكن أن يؤدي ذلك إلى إبطاء قاعدة البيانات ، تمامًا مثل الطريقة التي تؤدي بها قائمة التشغيل العشوائية إلى تعطيل تجربة الاستماع لديك.

في هذه المقالة ، سوف نتعلم كيفية اكتشاف وقت حدوث هذا "الخلط" وكيفية قياس كيفية "خلط" البيانات. إنه مثل كونك DJ ولكن لقواعد البيانات! لذا ، استعد لتدوير الطوابق ، ودعنا نبدأ!

عرض جدول المحتويات
  • فهم تجزئة الفهرس
  • كشف تجزئة الفهرس
  • قياس تجزئة المؤشر
  • تفسير النتائج
  • خاتمة

فهم تجزئة الفهرس

حسنًا ، دعنا نتعمق قليلاً في ماهية تجزئة الفهرس حقًا. تذكر مثال قائمة التشغيل لدينا؟ تمامًا مثل الأغاني الموجودة في قائمة التشغيل ، يتم تخزين البيانات في قاعدة البيانات بترتيب معين. يتم الحفاظ على هذا الترتيب باستخدام شيء يسمى "الفهرس" ، والذي يشبه الخريطة أو الدليل إلى مكان تخزين كل شيء.

الآن ، نظرًا لأننا نضيف أغانٍ (أو بيانات) جديدة ، أو نزيل بعضها ، أو ننقلها من مكان لآخر ، فإن قائمة التشغيل (أو الفهرس) الخاصة بنا يمكن أن يتم خلطها أو تجزئتها. في مصطلحات قاعدة البيانات ، نسمي هذا "تجزئة الفهرس".

هناك نوعان من التجزئة: داخلي وخارجي.

  • يحدث التجزئة الداخلية عندما تكون هناك مساحة فارغة داخل صفحات البيانات ، مثل وجود مسارات فارغة في قائمة التشغيل الخاصة بنا.
  • من ناحية أخرى ، يحدث التجزئة الخارجية عندما لا يتطابق الترتيب المنطقي للصفحات مع ترتيبها المادي ، كما هو الحال عندما لا تكون أغانينا بالترتيب الذي نريده.

الآن ، لماذا يجب أن نهتم بتجزئة الفهرس؟ حسنًا ، عندما يتم تجزئة الفهرس ، يتعين على SQL Server أن يعمل بجدية أكبر للعثور على البيانات التي يحتاجها. يشبه الأمر محاولة الاستماع إلى قائمة تشغيل مختلطة بترتيب معين - يتطلب الأمر مزيدًا من الجهد ، أليس كذلك؟ وبالمثل ، يمكن للفهرس المجزأ أن يبطئ أداء قاعدة البيانات ، مما يجعل استرداد البيانات أبطأ وأقل كفاءة.

في الأقسام التالية ، سنتعلم كيفية اكتشاف هذا التجزئة وما يمكننا فعله لإصلاحه. يشبه تعلم كيفية تنظيم قوائم التشغيل الخاصة بنا حتى نتمكن من الاستمتاع بموسيقانا بالطريقة التي نريدها! لذا ، دعنا ننتقل إلى الجزء التالي من رحلتنا.

موصى به لك: حقن SQL: هل لا يزال يمثل تهديدًا؟ كيف يمكنك تجنب ذلك؟

كشف تجزئة الفهرس

الآن بعد أن فهمنا ما هو تجزئة الفهرس ، فلنتحدث عن كيفية اكتشافه. يوفر لنا SQL Server بعض الأدوات والأوامر المفيدة للقيام بذلك. يشبه امتلاك تطبيق خاص يخبرنا عندما يتم خلط قائمة التشغيل لدينا وتحتاج إلى إعادة التنظيم.

الأداة الأساسية التي نستخدمها في SQL Server هي وظيفة نظام تسمى sys.dm_db_index_physical_stats . حقير من الفم ، أليس كذلك؟ لكن لا تقلق ، فالأمر ليس معقدًا كما يبدو. هذه الوظيفة تشبه المحقق الذي يمكنه فحص قاعدة البيانات الخاصة بنا وإخبارنا بمدى تجزئة فهارسنا. إليك كيف نستخدمها:

1. اختيار قاعدة البيانات والجدول:

أولاً ، نخبر الوظيفة التي قاعدة البيانات والجدول الذي نريد فحصه. يشبه اختيار قائمة التشغيل التي نريد التحقق منها.

2. تشغيل الوظيفة:

ثم نقوم بتشغيل الوظيفة. يتم ذلك عن طريق تنفيذ أمر SQL يبدو كالتالي:

 SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(N'YourDatabaseName'), OBJECT_ID(N'YourTableName'), NULL, NULL, 'DETAILED');

في هذا الأمر ، استبدل "YourDatabaseName" و "YourTableName" باسم قاعدة البيانات والجدول.

3. قراءة النتائج:

ستعيد الوظيفة الكثير من المعلومات ، لكن الشيء الرئيسي الذي نهتم به هو قيمة تسمى avg_fragmentation_in_percent . هذا يخبرنا عن مدى تجزئة فهرسنا ، كنسبة مئوية. إنه مثل إخبارنا بمدى خلط قائمة التشغيل لدينا.

لغة قاعدة بيانات SQL

قياس تجزئة المؤشر

مثلما نقيس طولنا أو وزننا ، يمكننا أيضًا قياس مقدار تجزئة مؤشراتنا. في SQL Server ، نستخدم بعض المقاييس الأساسية للقيام بذلك. فكر في الأمر على أنه قياس مدى تعطل قائمة التشغيل الخاصة بنا. إليك كيف نفعل ذلك:

فهم المقاييس:

المقياس الرئيسي الذي نستخدمه يسمى avg_fragmentation_in_percent . يخبرنا هذا النسبة المئوية للتجزئة المنطقية (الصفحات خارج الترتيب) في الفهرس. يبدو الأمر أشبه بإخبارنا عن النسبة المئوية لقائمة التشغيل التي تم خلطها عشوائيًا.

مقياس مهم آخر هو page_count . يخبرنا هذا العدد الإجمالي لصفحات الفهرس أو البيانات في الفهرس. فكر في الأمر على أنه العدد الإجمالي للأغاني في قائمة التشغيل الخاصة بنا.

تشغيل الأمر:

نقيس تجزئة الفهرس عن طريق تشغيل وظيفة sys.dm_db_index_physical_stats ، تمامًا كما فعلنا لاكتشاف التجزئة. لكن هذه المرة ، نولي اهتمامًا لقيم avg_fragmentation_in_percent و page_count .

ها هو الأمر مرة أخرى:

 SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(N'YourDatabaseName'), OBJECT_ID(N'YourTableName'), NULL, NULL, 'DETAILED');

تذكر استبدال "YourDatabaseName" و "YourTableName" باسم قاعدة البيانات والجدول. فيما يلي مثال لما قد تراه ، مع عدد قليل من الأعمدة للتبسيط:

فهرس التجزئة-SQL-server-database-table

في هذا الجدول المبسط:

  • object_id هو معرف الجدول.
  • index_id هو معرف الفهرس.
  • يصف index_type_desc نوع الفهرس (على سبيل المثال ، "CLUSTERED INDEX").
  • avg_fragmentation_in_percent هو متوسط ​​تجزئة الفهرس ، بالنسبة المئوية.
  • fragment_count هو عدد الأجزاء (مجموعات الصفحات المتجاورة) في الفهرس.
  • page_count هو العدد الإجمالي للصفحات في الفهرس.

يمنحك هذا الجدول عرضًا واضحًا لحالة تجزئة الفهرس.

تفسير النتائج:

إذا كانت قيمة avg_fragmentation_in_percent أقل من 5٪ ، فإن فهرسنا في حالة جيدة جدًا - مثل قائمة التشغيل التي تم خلطها قليلاً. إذا كانت النسبة بين 5٪ و 30٪ ، فقد يستخدم فهرسنا بعض إعادة التنظيم. وإذا كانت النسبة تزيد عن 30٪ ، فقد نحتاج إلى إعادة بناء فهرسنا بالكامل - مثل إعادة ترتيب قائمة التشغيل الخاصة بنا من الصفر.

تخبرنا قيمة page_count عن حجم فهرسنا (أو قائمة التشغيل). إذا كان عددًا صغيرًا ، فقد لا داعي للقلق كثيرًا بشأن التجزئة. ولكن إذا كان عددًا كبيرًا ، يمكن أن يؤدي التجزئة حقًا إلى إبطاء الأمور ، ويجب علينا بالتأكيد اتخاذ خطوات لإصلاحه.

تفسير النتائج

تذكر أننا ننظر إلى جدول يخبرنا عن حالة الفهارس الخاصة بنا ، مثل تقرير الفحص الصحي لقاعدة البيانات الخاصة بنا.

1. فهم مستوى التجزئة

العمود avg_fragmentation_in_percent يشبه نبضات فهرسنا. يخبرنا كيف أن فهرسنا مجزأ أو غير منظم. الرقم المنخفض ، مثل 0 أو 1 في المائة ، يعني أن فهرسنا في حالة جيدة - إنه منظم مثل مكتبة يتم الاحتفاظ بها جيدًا. لكن العدد الكبير ، مثل 60 أو 70 بالمائة ، يعني أن فهرسنا مجزأ تمامًا - إنه أشبه بغرفة فوضوية أكثر من مكتبة مرتبة.

2. عدد الأجزاء وعدد الصفحات

يعطينا أعمدة fragment_count و page_count مزيدًا من التفاصيل حول فهرسنا. يمكنك التفكير في "جزء" مثل قسم من كتاب ، و "الصفحات" تشبه صفحات ذلك الكتاب تمامًا. إذا كان لدينا الكثير من الأجزاء ، فهذا يعني أن كتابنا مقسم إلى عدة أقسام ، مما يجعل من الصعب قراءته بسرعة. وإذا كان لدينا الكثير من الصفحات ، فهذا يعني أن كتابنا (أو فهرسنا في هذه الحالة) كبير جدًا.

3. متى تتخذ إجراءات

إذن ، متى يجب أن نبدأ في القلق بشأن التجزئة؟ حسنًا ، كقاعدة عامة ، إذا كان معدل_التجزئة_في_النسبة أقل من 5 بالمائة ، فإن مؤشرنا سليم ولا نحتاج إلى فعل أي شيء. إذا كانت النسبة بين 5 و 30 في المائة ، يمكن أن يستخدم فهرسنا القليل من التنظيم ، مثل تنظيف غرفة فوضوية قليلاً. وإذا كانت النسبة تزيد عن 30 في المائة ، فإن فهرسنا مجزأ بشدة ونحتاج إلى اتخاذ إجراء لإعادة تنظيمه ، تمامًا كما نحتاج إلى إجراء تنظيف كبير إذا كانت غرفتنا شديدة الفوضى.

تذكر ، هذه مجرد إرشادات. يمكن أن تختلف الأرقام الدقيقة اعتمادًا على الاحتياجات المحددة وأداء قاعدة البيانات الخاصة بك. ولكن من خلال فهم هذه النتائج ، يمكنك الحفاظ على عمل الفهارس - وقاعدة البيانات - بسلاسة.

قد ترغب أيضًا في: كيفية استخدام GeoGraphy DataType من SQL في Asp.Net MVC Development.

خاتمة

خاتمة

مثلما تسهل قائمة التشغيل المنظمة جيدًا العثور على الأغاني المفضلة لديك وتشغيلها ، فإن قاعدة البيانات جيدة التنظيم تجعل من السهل على SQL Server العثور على البيانات التي يحتاجها واستردادها. هذا هو السبب في أن اكتشاف وقياس تجزئة المؤشر أمر بالغ الأهمية - فهو يساعدنا في الحفاظ على عمل قاعدة البيانات الخاصة بنا بسلاسة وكفاءة.

خلال هذه المقالة ، تعلمنا أن تجزئة الفهرس تشبه إلى حد ما قائمة تشغيل عشوائية. عندما تكون فهارسنا مجزأة أو مختلطة ، يجب أن يعمل SQL Server بجدية أكبر للعثور على البيانات التي يحتاجها. يمكن أن يؤدي ذلك إلى إبطاء استفساراتنا وجعل قاعدة بياناتنا أقل كفاءة.

ولكن باستخدام الأدوات والأوامر التي ناقشناها ، يمكننا اكتشاف وقياس تجزئة الفهرس. يتيح لنا ذلك تحديد أي مشاكل واتخاذ الإجراءات اللازمة لإصلاحها ، سواء كان ذلك من خلال إعادة تنظيم فهارسنا أو إعادة بنائها بالكامل. إنها تشبه إلى حد ما إعادة ترتيب قائمة تشغيل مختلطة - من خلال إعادة كل شيء إلى مكانه ، نجعل من السهل العثور على ما نبحث عنه.

في النهاية ، يعد الحفاظ على فهارسنا جزءًا أساسيًا من الحفاظ على قاعدة البيانات الخاصة بنا. من خلال التحقق بانتظام من تجزئة الفهرس ومعالجتها ، يمكننا ضمان استمرار أداء قاعدة بياناتنا في أفضل حالاته.

إذا كنت مهتمًا بمعرفة المزيد حول تجزئة الفهرس في SQL Server ، فإنني أوصي بمراجعة هذه المقالة التفصيلية. إنه مورد رائع لأي شخص يتطلع إلى التعمق في هذا الموضوع.

تذكر ، تمامًا مثل الاحتفاظ بقائمة تشغيل مرتبة جيدًا ، فإن الحفاظ على الفهارس مهمة مستمرة. ولكن مع المعرفة والأدوات الصحيحة ، يمكن أن تجني هذه المهمة مكافآت كبيرة من حيث أداء قاعدة البيانات. فهرسة سعيدة!