استخدم الفهرس يا لوقا! › تشريح فهرس SQL 2 / 139 السابق التالي

تشريح فهرس SQL

«الفهرس يجعل الاستعلام سريعاً» هو أبسط تفسير رأيته على الإطلاق للفهرس. ومع أنه يصف أهم جانب في الفهرس وصفاً جيداً جداً، فإنه — للأسف — لا يكفي لهذا الكتاب. يصف هذا الفصل بنية الفهرس بأسلوب أقل سطحية، دون أن يتعمق كثيراً في التفاصيل؛ فهو يقدّم قدراً كافياً من الفهم ليتمكن القارئ من استيعاب جوانب أداء SQL التي يناقشها الكتاب.

الفهرس بنية مستقلة في قاعدة البيانات تُبنى باستخدام عبارة create index. وهو يحتاج مساحة قرص خاصة به ويحتفظ بنسخة من بيانات الجدول المفهرس. ويعني ذلك أن الفهرس تكرار محض؛ فليست الفهرسة عملية تغيّر بيانات الجدول، بل عملية تُنشئ بنية بيانات جديدة تشير إلى الجدول. وما فهرس قاعدة البيانات، في نهاية المطاف، إلا شبيه جداً بفهرس نهاية الكتاب: فهو يشغل مساحته الخاصة، وهو شديد التكرار، ويشير إلى المعلومات الفعلية المخزنة في مكان آخر.

الفهارس العنقودية (SQL Server وMySQL/InnoDB)

تنظر SQL Server وMySQL (عند استخدام InnoDB) إلى معنى «الفهرس» نظرة أوسع؛ فهما تسميان الجداول التي تتكون من بنية الفهرس وحدها فهارس عنقودية (clustered indexes). أما في قاعدة بيانات Oracle فتُسمى هذه الجداول جداول منظَّمة بالفهرس (index-organized tables — IOT).

الفصل 5، «تجميع البيانات: القوة الثانية للفهرسة»، يصفها بمزيد من التفصيل ويشرح مزاياها وعيوبها.

البحث في فهرس قاعدة بيانات شبيه بالبحث في دليل هاتف مطبوع؛ فالفكرة الأساسية أن جميع المدخلات مرتبة ترتيباً محدداً جيداً. والعثور على البيانات في مجموعة بيانات مرتبة سريع وسهل لأن ترتيب الفرز يحدد موضع كل مدخل.

إن أعجبك هذا الموضوع، قد يعجبك أيضاً…

… أن تشترك في القوائم البريدية، وتحصل على ملصقات مجانية، وتشتري كتابي، أو تنضم إلى دورة تدريبية.

لكن فهرس قاعدة البيانات أعقد من الدليل المطبوع؛ لأنه يخضع لتغيّر مستمر. فتحديث دليل مطبوع عند كل تغيير مستحيل لسبب بسيط: لا توجد مساحة بين المدخلات القائمة لإضافة مدخلات جديدة. ويتغلب الدليل المطبوع على هذه المشكلة بمعالجة التحديثات المتراكمة فقط عند الطبعة التالية. أما قاعدة بيانات SQL فلا تستطيع الانتظار كل هذا الوقت؛ إذ يجب أن تعالج عبارات insert وdelete وupdate فوراً مع الحفاظ على ترتيب الفهرس دون نقل كميات كبيرة من البيانات.

وتجمع قاعدة البيانات بين بنيتَي بيانات لمواجهة هذا التحدي: قائمة مترابطة مزدوجة وشجرة بحث. وهاتان البنيتان تفسّران معظم خصائص أداء قاعدة البيانات.

المحتويات

  1. العقد الورقية — قائمة مترابطة مزدوجة
  2. شجرة B — إنها شجرة متوازنة
  3. الفهارس البطيئة، الجزء الأول — مكوّنان يجعلان الفهرس بطيئاً