MySQL / التزامن والأداء والتشغيل / الدرس 14
أدلة المحسن والأداء المستدام
حسّن مجموعة استعلامات بأعداد ممثلة وعمل محدود وفهارس تراعي الكتابة.
في هذه الصفحة
أهداف الدرس
- اشرح الانتقائية والإحصاءات والتغطية والانحراف.
- استخدم التصفح بالمفتاح وأدلة النظام دون وصفات ضبط عامة.
حسّن عبء العمل لا صورة خطة
استخدم المتجر للنتائج المنطقية فقط. يشمل العمل الحقيقي معدل الطلبات وتوزيع المعاملات وأهداف الاستجابة والكتابة والتزامن. قد يضر تحسين تقرير نادر على حساب كل عملية شراء النظام كله. جمّع العبارات البطيئة حسب شكلها وقس التكرار والزمن الكلي واختر مجموعة مؤثرة، ولا تجمع قيماً حساسة إذا كفت الإحصاءات المجمعة.
تقدر الإحصاءات واقعاً غير متساوٍ
يحتاج عميل بطلبين وآخر بملايين الطلبات إلى عمل مختلف. تقدّر إحصاءات المحسن الأعداد وقد يضلل المتوسط عند الانحراف. تساعد المدرجات التكرارية في تقدير انتقائية أعمدة غير مفهرسة مدعومة، لكن جمع الإحصاءات تغيير تشغيلي يحتاج مراجعة النطاق والتكلفة. قارن المقدّر بالفعلي قبل اتهام المحسن أوفرض FORCE INDEX.
امنح الفهارس شروطاً قابلة للاستخدام
تناسب المساواة ثم النطاق المحدود غالباً فهرس B-tree مركباً. قد تمنع الدوال على العمود والتحويلات غير المتوافقة والبحث ببادئة wildcard الوصول المطلوب. أعد صياغة الشرط التجاري دون تغيير المناطق الزمنية أومعنى NULL لمجرد مسح نطاق. يقلل الفهرس المغطي جلب الصفوف لكن أعمدته تزيد التخزين والكتابة.
EXPLAIN FORMAT=TREE
SELECT id FROM orders
WHERE placed_at>='2026-01-01' AND placed_at<'2026-02-01'
ORDER BY placed_at,id;
SELECT id FROM orders
WHERE placed_at>='2026-01-01' AND placed_at<'2026-02-01'
ORDER BY placed_at,id;
id
101
102
103
يعيد الاستعلام 101 و 102 و 103. قد يدعم فهرس يبدأ بالوقت النطاق والترتيب، بينما لا يوفر فهرس يبدأ بالعميل المسار نفسه تلقائياً. تظل الخطة رهينة البيانات؛ فنؤكد النتيجة لا ضمان مسح نطاق مختلقاً.
حد الصفحة التالية بآخر مفتاح
يتجاوز OFFSET الكبير صفوفاً معروضة سابقاً مراراً. يستخدم التصفح بالمفتاح آخر زوج ترتيب ظاهر لطلب اللاحق، ويحتاج إلى حاسم تعادل فريد. يحسن الاستمرارية في بعض التغييرات لكنه لا ينشئ لقطة ثابتة عبر الطلبات؛ فقد يغير الحذف أوتحديث مفاتيح الفرز العضوية. حدد هل المنتج تغذية حية أم تقرير تصدير ثابت.
SELECT id,placed_at FROM orders
WHERE placed_at>'2026-01-10 10:00:00'
OR (placed_at='2026-01-10 10:00:00' AND id>101)
ORDER BY placed_at,id LIMIT 2;
id | placed_at
102 | 2026-01-11 11:00:00
103 | 2026-01-12 12:00:00
زوج آخر ظهور هو وقت 101 ورقمه. يعيد الشرط 102 و 103 دون إزاحة رقمية. ولصفحات عميل معين ضع تعبير OR بين أقواس قبل إضافة AND customer_id = ? وإلا قد توسع الأولوية المجتمع عن غير قصد.
افصل المعالج والإدخال والإخراج والانتظار
قد يأتي التأخير من عمل الصفوف أوالقرص أوانتظار الأقفال أوطوابير الاتصال أورحلات التطبيق. تساعد ذاكرة buffer pool مجموعة محدودة بالإدخال والإخراج لكنها لا تصلح تعارضاً دائرياً أوتقريراً بلا حدود. استخدم ملخصات Performance Schema وأدلة النظام في بيئة مصرح بها. غيّر عاملاً واحداً وقارن تحت حمل مماثل وحدد معايير التراجع وقس زمن الكتابة.
الأخطاء الشائعة وإصلاحها
تسوء خطة المتوسط لعميل ضخم.
- لماذا يحدث؟
- يجعل الانحراف افتراض العدد الممثل خاطئاً.
- كيف تصلحه؟
- قارن الخطط والأعداد الفعلية للمعاملات المعتادة والمتطرفة.
- كيف تتجنب تكراره؟
- ضمّن الانحراف والنمو في بيانات القياس.
تزيد الفهارس زمن الشراء.
- لماذا يحدث؟
- تصون كل كتابة أشجاراً إضافية وتستهلك الذاكرة.
- كيف تصلحه؟
- أزل المرشحات المثبت تكرارها أوعدم استخدامها بترحيل مدروس.
- كيف تتجنب تكراره؟
- قيّم تضخم الكتابة مع تحسن القراءة.
تسرب تصفية المفتاح طلبات عميل آخر.
- لماذا يحدث؟
- تجاوزت OR دون أقواس شرط العميل المشترك.
- كيف تصلحه؟
- ضع شرط المؤشر كله بين أقواس قبل شرط العميل.
- كيف تتجنب تكراره؟
- راجع أولوية المنطق ونطاق العميل معاً.
اختبر فهمك
1. ما القياسات التي تبرر استبدال OFFSET بالتصفح بالمفتاح؟
اعرض الحل المشروح
قارن الصفوف المفحوصة والزمن للصفحات الأولى والعميقة بحجم ممثل. تحقق من ترتيب فريد ثابت وسلوك التنقل المطلوب. يفيد المفتاح عندما ينمو العمل مع العمق ويناسب الانتقال المتتابع المنتج؛ وقد تحتاج القفزات الرقمية العشوائية تصميماً آخر.
2. استعلام بطيء يفحص صفوفاً قليلة؛ لماذا قد لا يفيده فهرس آخر؟
اعرض الحل المشروح
قد ينتظر أقفالاً أوقرصاً أوسعة اتصال أوشبكة التطبيق. اربط الزمن بأحداث الانتظار وتشبع الموارد قبل تغيير المسار. قد يضيف الفهرس تكلفة كتابة دون تغيير الانتظار الحقيقي.
أهم ما تعلمته
- حسن التكلفة الكلية بأدلة ممثلة.
- حد العمل واحفظ المعنى وقس تبعات الكتابة.