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

Cost of Full Table Scans تكلفة الفحص الكامل للجدول

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

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

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

عندما تنفّذ استعلام SELECT يحتوي على شرط تصفية WHERE فوق عمود غير مفهرس (Unindexed Column)، يضطر محرك InnoDB في MySQL 8.4 إلى إجراء فحص كامل للجدول (Full Table Scan). في هذا المسار، يقرأ المحرك جميع صفحات البيانات الفيزيائية (وحجم كل صفحة افتراضياً 16 KB) بالتتابع من أول صف حتى آخر صف للتحقق من تطابق الشرط.

لماذا يمثّل الفحص الكامل عنق زجاجة خطيراً في قواعد البيانات الإنتاجية؟

  • نمو الزمن خطياً O(N): إذا كان البحث في 1,000 صف يستغرق ملي ثانية واحدة، فإن البحث في 10,000,000 صف سيستغرق عدة ثوانٍ لكل طلب مستخدم.
  • إغراق ذاكرة Buffer Pool: قراءة آلاف الصفحات من القرص الصلب تطرد الصفحات الساخنة النشطة من ذاكرة التخزين المؤقت في InnoDB.
  • استهلاك المعالج والإدخال/الإخراج (Disk I/O): فحص ملايين الصفوف لاسترجاع صف واحد فقط يهدر دورات المعالج ويبطئ الاستعلامات المتزامنة الأخرى.
مخطط فهارس شجرة B Tree والمفتاح العنقودي والفحص الكامل في MySQL
SQL
SELECT customer_id, full_name, city FROM customers WHERE phone = '0501234567';