استخدم الفهرس يا لوقا! › عملية الوصل 35 / 139 السابق التالي

عملية الربط

An SQL query walks into a bar and sees two tables.
He walks up to them and asks “Can I join you?”

— المصدر: غير معروف

تحوّل عملية الربط البيانات من نموذج مُطبَّع إلى صيغة غير مُطبَّعة تلائم غرضاً معالجاتياً محدداً. والربط حسّاس بوجه خاص لزمن استجابة البحث على القرص لأنه يجمع شذرات بيانات متفرقة. وتبقى الفهرسة السليمة أفضل حل لتقليل أزمنة الاستجابة. غير أن الفهرس الصحيح يعتمد على أي من خوارزميات الربط الثلاث الشائعة تستخدمه العبارة.

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

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

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

تدفّق النتائج الوسيطة

ومع أن النتائج الوسيطة تشرح الخوارزمية شرحاً جيداً، فهي لا تعني أن قاعدة البيانات يجب أن تجسّدها؛ فذلك يعني تخزين النتيجة الوسيطة للربط الأول قبل بدء الربط التالي. وبدلاً من ذلك، تستخدم قواعد البيانات التدفّق (pipelining) لتقليل استهلاك الذاكرة؛ إذ يُمرَّر كل صف من النتيجة الوسيطة فوراً إلى عملية الربط التالية، ما يتجنّب الحاجة إلى تخزين مجموعة النتائج الوسيطة.

ومع أن ترتيب الربط لا يؤثر في النتيجة النهائية، فإنه يؤثر في الأداء. ولذلك سيقيّم المُحسِّن جميع تبديلات ترتيب الربط الممكنة ويختار أفضلها. ويعني ذلك أن مجرد تحسين عبارة معقدة قد يصبح مشكلة أداء؛ فكلما زاد عدد الجداول المطلوب ربطها، زادت صيغ خطط التنفيذ المطلوب تقييمها — رياضياً: n! (نمو مضروب)، وإن لم يكن ذلك مشكلة عند استخدام وسائط الربط.

مهم

كلما زاد تعقيد العبارة، زادت أهمية وسائط الربط.

فعدم استخدام وسائط الربط كإعادة ترجمة برنامج في كل مرة.

المحتويات

  1. الحلقات المتداخلة — عن مشكلة الاستعلامات N+1 في ORM
  2. الربط بالتجزئة — يتطلب نهج فهرسة مختلفاً تماماً
  3. ربط الدمج بالترتيب ‌— كسحّاب على مجموعتين مرتَّبتين