انتقل إلى محتوى الدرس

Write Overhead vs Read Speed موازنة سرعة القراءة والكتابة

تعلّم فهارس شجرة B Tree والمفتاح العنقودي والفحص الكامل في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

لماذا لا نضع فهرساً على كل عمود في الجدول؟ لأن كل فهرس ثانوي تضيفه هو شجرة B+Tree حقيقية يجب على محرك InnoDB تحديثها وإعادة موازنتها في كل مرة ينفّذ فيها عملية كتابة (INSERT أو UPDATE أو DELETE). فإذا كان لديك جدول يضم 12 فهرساً ثانوياً، فإن إدراج صف واحد في الجدول يتطلب إدراج 13 عقدة في 13 شجرة مختلفة!

يوضّح الجدول المرجعي التالي المقارنة الشاملة بين مسارات البحث وأنواع الفهارس الأساسية في MySQL 8.4:

طريقة الوصول / الفهرسالتعقيد الزمنيمحتوى العقدة الورقية (Leaf)تأثير القراءة والكتابة
الفحص الكامل (Full Table Scan)O(N) خطيقراءة كافة صفحات الجدول بالتتابعبطيء جداً في القراءة؛ لا يضيف عبء كتابة
المفتاح العنقودي (PRIMARY KEY)O(log N) لوغاريتميكامل أعمدة الصف الفيزيائيأسرع قراءة مباشرة؛ فهرس واحد لكل جدول
الفهرس الثانوي (Secondary BTREE)O(log N) + Bookmarkقيمة العمود المفهرس + قيمة PRIMARY KEYيسرّع القراءة والفرز؛ يزيد كلفة INSERT/UPDATE/DELETE
فحص الفهارس الحاليةSHOW INDEX FROM tblيعرض Key_name وCardinalityأداة تشخيصية لمراجعة الفهارس الزائدة
حذف فهرس غير مستخدمDROP INDEX idx ON tblيزيل شجرة الفهرس الثانوي من القرصيحرر مساحة القرص ويسرّع عمليات الكتابة
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

فهمت في هذا الدرس تكلفة الفحص الكامل للجدول O(N)، وكيف تعمل شجرة البحث المتوازنة B+Tree بتعقيد O(log N)، والفرق الجوهري بين الفهرس العنقودي PRIMARY KEY والفهارس الثانوية التي تخزن مؤشرات للمفتاح الأساسي، وكيفية إنشاء وفحص وحذف الفهارس وموازنة سرعة القراءة مع كلفة الكتابة.

الخطوة التالية والدرس القادم

في الدرس القادم سنتعلم كيفية تصميم الفهارس المركبة متعددة الأعمدة (Composite Indexes)، وقاعدة البادئة اليسرى، والفهارس غير المرئية، وفهارس النص الكامل.